Merge pull request #980 from hurtdidit/fix/skip-empty-ai-messages

fix: Skip empty AI messages in output_langchain to prevent API rejection
This commit is contained in:
Jan Tomášek 2026-02-01 08:49:41 +01:00 committed by GitHub
commit 6ca84022d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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