From 72c4a279034c9419fe31c75966ea9288e4612da8 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 8 Apr 2026 23:14:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Tool=20Calls=20?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=20-=20=E4=BF=9D=E7=95=99=20assistant=20?= =?UTF-8?q?=E7=9A=84=20tool=5Fcalls=20=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openclaw_neo4j_demo.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/openclaw_neo4j_demo.py b/openclaw_neo4j_demo.py index 965536a..d3358b7 100644 --- a/openclaw_neo4j_demo.py +++ b/openclaw_neo4j_demo.py @@ -582,6 +582,7 @@ class OpenClawClient: # 用于累积工具结果 tool_results = [] + last_assistant_msg = None # 首次请求 response = self.send_message(user_input, tool_results) @@ -593,6 +594,13 @@ class OpenClawClient: if message.content: print(f"\n[模型] {message.content}") + # 保存包含 tool_calls 的 assistant 消息 + last_assistant_msg = { + "role": "assistant", + "content": message.content, + "tool_calls": [{"id": tc.id, "function": {"name": tc.function.name, "arguments": tc.function.arguments}} for tc in message.tool_calls] + } + # 执行所有工具调用 for tool_call in message.tool_calls: tool_name = tool_call.function.name @@ -609,11 +617,16 @@ class OpenClawClient: "content": result }) - # 继续调用 - 只包含 system + tool_results + user(不再重复添加) + # 继续调用 - 包含 system + assistant消息(with tool_calls) + tool_results + user + messages = [{"role": "system", "content": self.system_prompt}] + if last_assistant_msg: + messages.append(last_assistant_msg) + messages.extend(tool_results) + messages.append({"role": "user", "content": user_input}) + response = self.client.chat.completions.create( model=MODEL_NAME, - messages=[{"role": "system", "content": self.system_prompt}] + tool_results + - [{"role": "user", "content": user_input}], + messages=messages, tools=self.tools ) message = response.choices[0].message