From 69667b2dc596210bbd08959d39f5ae3b1314e3a0 Mon Sep 17 00:00:00 2001 From: srszzw <741992282@qq.com> Date: Mon, 1 Apr 2024 14:23:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3ollama=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E7=9A=84qwen,=E6=89=A7=E8=A1=8Cagent,=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=9A=84json=E6=A0=BC=E5=BC=8F=E4=B8=8D=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/agent/agent_factory/qwen_agent.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/chatchat-server/chatchat/server/agent/agent_factory/qwen_agent.py b/chatchat-server/chatchat/server/agent/agent_factory/qwen_agent.py index 621b4849..23cdb5de 100644 --- a/chatchat-server/chatchat/server/agent/agent_factory/qwen_agent.py +++ b/chatchat-server/chatchat/server/agent/agent_factory/qwen_agent.py @@ -87,7 +87,18 @@ class QwenChatAgentOutputParserCustom(StructuredChatOutputParser): def parse(self, text: str) -> Union[AgentAction, AgentFinish]: if s := re.findall(r"\nAction:\s*(.+)\nAction\sInput:\s*(.+)", text, flags=re.DOTALL): s = s[-1] - return AgentAction(tool=s[0].strip(), tool_input=json.loads(s[1]), log=text) + json_string: str=s[1] + json_input=None + try: + json_input=json.loads(json_string) + except: + # ollama部署的qwen,返回的json键值可能为单引号,可能缺少最后的引号和括号 + if not json_string.endswith("\"}"): + print("尝试修复格式不正确的json输出:"+json_string) + json_string=(json_string+"\"}").replace("'","\""); + print("修复后的json:"+json_string) + json_input=json.loads(json_string) + return AgentAction(tool=s[0].strip(), tool_input=json_input, log=text) elif s := re.findall(r"\nFinal\sAnswer:\s*(.+)", text, flags=re.DOTALL): s = s[-1] return AgentFinish({"output": s}, log=text)