From b47669b80bbef8e753d74d0859c127069be66218 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Sun, 2 Feb 2025 12:05:11 +0800 Subject: [PATCH] fix: deduct LLM quota after processing invoke result (#13075) Signed-off-by: -LAN- --- api/core/workflow/nodes/llm/node.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/api/core/workflow/nodes/llm/node.py b/api/core/workflow/nodes/llm/node.py index 6909b30c9e..6a4f8c4e20 100644 --- a/api/core/workflow/nodes/llm/node.py +++ b/api/core/workflow/nodes/llm/node.py @@ -185,6 +185,8 @@ class LLMNode(BaseNode[LLMNodeData]): result_text = event.text usage = event.usage finish_reason = event.finish_reason + # deduct quota + self.deduct_llm_quota(tenant_id=self.tenant_id, model_instance=model_instance, usage=usage) break except LLMNodeError as e: yield RunCompletedEvent( @@ -240,17 +242,7 @@ class LLMNode(BaseNode[LLMNodeData]): user=self.user_id, ) - # handle invoke result - generator = self._handle_invoke_result(invoke_result=invoke_result) - - usage = LLMUsage.empty_usage() - for event in generator: - yield event - if isinstance(event, ModelInvokeCompletedEvent): - usage = event.usage - - # deduct quota - self.deduct_llm_quota(tenant_id=self.tenant_id, model_instance=model_instance, usage=usage) + return self._handle_invoke_result(invoke_result=invoke_result) def _handle_invoke_result(self, invoke_result: LLMResult | Generator) -> Generator[NodeEvent, None, None]: if isinstance(invoke_result, LLMResult):