From dac6c3ced98e82e94243b0e11366b4b7cdf3852c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 8 Apr 2026 23:11:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Tool=20Calls=20?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=A0=BC=E5=BC=8F=20-=20=E6=AF=8F=E8=BD=AE?= =?UTF-8?q?=E5=8F=AA=E4=BF=9D=E7=95=99=E6=9C=80=E6=96=B0=20assistant=20?= =?UTF-8?q?=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 | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/openclaw_neo4j_demo.py b/openclaw_neo4j_demo.py index 260c950..965536a 100644 --- a/openclaw_neo4j_demo.py +++ b/openclaw_neo4j_demo.py @@ -9,7 +9,7 @@ import os import uuid from datetime import datetime -DEEPSEEK_API_KEY = os.environ.get("DEEPSEEK_API_KEY", "your-api-key-here") +DEEPSEEK_API_KEY = "sk-ca05d81474f04d9e9905fb0696f07550" DEEPSEEK_BASE_URL = "https://api.deepseek.com" MODEL_NAME = "deepseek-chat" @@ -541,9 +541,11 @@ class OpenClawClient: messages = [{"role": "system", "content": self.system_prompt}] + # 添加之前的工具结果(用于后续调用) if tool_results: messages.extend(tool_results) + # 添加当前用户输入 messages.append({"role": "user", "content": user_input}) response = self.client.chat.completions.create( @@ -566,8 +568,6 @@ class OpenClawClient: print("输入 quit/exit 退出") print("=" * 60 + "\n") - tool_results = [] - while True: try: user_input = input("\n[你] ").strip() @@ -580,12 +580,20 @@ class OpenClawClient: CURRENT_TURN += 1 print(f"\n[轮次 {CURRENT_TURN}] 发送请求...") + # 用于累积工具结果 + tool_results = [] + + # 首次请求 response = self.send_message(user_input, tool_results) message = response.choices[0].message + # 处理工具调用循环 while message.tool_calls: - print(f"\n[模型] {message.content or '(thinking...)'}") + # 打印模型响应(如果有) + if message.content: + print(f"\n[模型] {message.content}") + # 执行所有工具调用 for tool_call in message.tool_calls: tool_name = tool_call.function.name tool_args = json.loads(tool_call.function.arguments) @@ -594,27 +602,26 @@ class OpenClawClient: result = execute_tool(self.graph, tool_name, tool_args) print(f"\n[工具结果] {result}") + # 添加工具结果 - 包含 tool_call_id tool_results.append({ "role": "tool", "tool_call_id": tool_id, "content": result }) - message = self.client.chat.completions.create( + # 继续调用 - 只包含 system + tool_results + user(不再重复添加) + response = self.client.chat.completions.create( model=MODEL_NAME, messages=[{"role": "system", "content": self.system_prompt}] + tool_results + [{"role": "user", "content": user_input}], tools=self.tools - ).choices[0].message + ) + message = response.choices[0].message + # 最终回复 final_content = message.content or "(无回复)" print(f"\n[模型] {final_content}") - tool_results.append({"role": "assistant", "content": final_content}) - - if len(tool_results) > 10: - tool_results = [t for t in tool_results if t.get("role") in ["tool", "user"]] - except KeyboardInterrupt: print("\n\n[系统] 中断退出") break @@ -650,4 +657,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main()