fix(llm): deduct LLM quota after processing usage in invoke result

Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
-LAN- 2025-01-27 18:57:47 +08:00
parent 1e73f63ff8
commit f97f82a3e4
No known key found for this signature in database
GPG Key ID: 6BA0D108DED011FF

View File

@ -185,6 +185,8 @@ class LLMNode(BaseNode[LLMNodeData]):
result_text = event.text result_text = event.text
usage = event.usage usage = event.usage
finish_reason = event.finish_reason finish_reason = event.finish_reason
# deduct quota
self.deduct_llm_quota(tenant_id=self.tenant_id, model_instance=model_instance, usage=usage)
break break
except LLMNodeError as e: except LLMNodeError as e:
yield RunCompletedEvent( yield RunCompletedEvent(
@ -241,16 +243,7 @@ class LLMNode(BaseNode[LLMNodeData]):
) )
# handle invoke result # handle invoke result
generator = self._handle_invoke_result(invoke_result=invoke_result) return 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)
def _handle_invoke_result(self, invoke_result: LLMResult | Generator) -> Generator[NodeEvent, None, None]: def _handle_invoke_result(self, invoke_result: LLMResult | Generator) -> Generator[NodeEvent, None, None]:
if isinstance(invoke_result, LLMResult): if isinstance(invoke_result, LLMResult):