fix: 修复 Tool Calls 格式 - 保留 assistant 的 tool_calls 消息

This commit is contained in:
root
2026-04-08 23:14:54 +08:00
parent dac6c3ced9
commit 72c4a27903

View File

@ -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