From 6415b176ed4791316f048ec95f0156f98958c65f Mon Sep 17 00:00:00 2001 From: zhangmingyu1 Date: Tue, 10 Dec 2024 09:52:39 +0800 Subject: [PATCH] fix: more robust toolcall argument load --- api/core/agent/fc_agent_runner.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/api/core/agent/fc_agent_runner.py b/api/core/agent/fc_agent_runner.py index cd546dee12..f45f9a9228 100644 --- a/api/core/agent/fc_agent_runner.py +++ b/api/core/agent/fc_agent_runner.py @@ -340,7 +340,27 @@ class FunctionCallAgentRunner(BaseAgentRunner): for prompt_message in llm_result_chunk.delta.message.tool_calls: args = {} if prompt_message.function.arguments != "": - args = json.loads(prompt_message.function.arguments) + try_load_str = prompt_message.function.arguments + while True: + if len(try_load_str) == 0: + break + try: + args = json.loads(try_load_str) + break + except Exception as e: + logging.error("error try_load_str: " + try_load_str) + first_left_brace_index = try_load_str.find("{") + if len(try_load_str) >= first_left_brace_index + 1: + try_load_str = try_load_str[try_load_str.find("{") + 1 :] + # find next left brace + next_left_brace_index = try_load_str.find("{") + if next_left_brace_index == -1: + logging.error("error try_load_str not found next left brace: " + try_load_str) + break + try_load_str = try_load_str[next_left_brace_index:] + else: + logging.error("error try_load_str not found next left brace: " + try_load_str) + break tool_calls.append( (