mirror of
https://github.com/agent0ai/agent-zero.git
synced 2026-05-06 08:01:31 +00:00
fix: Skip empty AI messages in output_langchain to prevent API rejection
Empty or whitespace-only AI messages cause API validation errors with strict providers (OpenAI, Z.ai, GLM): "Assistant messages must have either content or tool_calls" This is a companion fix to PR #927 (response.py KeyError fix). When that fix returns an empty string instead of crashing, the empty string can become an empty AIMessage that fails API validation. Changes: - Pre-compute content before creating message objects - Skip AI messages where content is None, empty, or whitespace-only - Human messages are not filtered (they can be empty per spec) Tested on 4 production A0 instances.
This commit is contained in:
parent
5feb92d690
commit
a129a576d7
1 changed files with 7 additions and 4 deletions
|
|
@ -519,12 +519,15 @@ def group_messages_abab(messages: list[BaseMessage]) -> list[BaseMessage]:
|
|||
def output_langchain(messages: list[OutputMessage]):
|
||||
result = []
|
||||
for m in messages:
|
||||
content = _output_content_langchain(content=m["content"])
|
||||
# Skip AI messages with empty/whitespace-only content
|
||||
# (API spec requires assistant messages to have content or tool_calls)
|
||||
if m["ai"]:
|
||||
# result.append(AIMessage(content=serialize_content(m["content"])))
|
||||
result.append(AIMessage(_output_content_langchain(content=m["content"]))) # type: ignore
|
||||
if not content or (isinstance(content, str) and not content.strip()):
|
||||
continue
|
||||
result.append(AIMessage(content)) # type: ignore
|
||||
else:
|
||||
# result.append(HumanMessage(content=serialize_content(m["content"])))
|
||||
result.append(HumanMessage(_output_content_langchain(content=m["content"]))) # type: ignore
|
||||
result.append(HumanMessage(content)) # type: ignore
|
||||
# ensure message type alternation
|
||||
result = group_messages_abab(result)
|
||||
return result
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue