Merge pull request #635 from a-holm/avoid-Validation-error-when-using-gemini

fix(llm): improve message handling to support LLMs without content/tool_calls
This commit is contained in:
mannaandpoem 2025-03-15 17:11:19 +08:00 committed by GitHub
commit 337adf011c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -180,14 +180,15 @@ class LLM:
formatted_messages = [] formatted_messages = []
for message in messages: for message in messages:
if isinstance(message, Message):
message = message.to_dict()
if isinstance(message, dict): if isinstance(message, dict):
# If message is already a dict, ensure it has required fields # If message is a dict, ensure it has required fields
if "role" not in message: if "role" not in message:
raise ValueError("Message dict must contain 'role' field") raise ValueError("Message dict must contain 'role' field")
formatted_messages.append(message) if "content" in message or "tool_calls" in message:
elif isinstance(message, Message): formatted_messages.append(message)
# If message is a Message object, convert it to dict # else: do not include the message
formatted_messages.append(message.to_dict())
else: else:
raise TypeError(f"Unsupported message type: {type(message)}") raise TypeError(f"Unsupported message type: {type(message)}")
@ -195,10 +196,6 @@ class LLM:
for msg in formatted_messages: for msg in formatted_messages:
if msg["role"] not in ROLE_VALUES: if msg["role"] not in ROLE_VALUES:
raise ValueError(f"Invalid role: {msg['role']}") raise ValueError(f"Invalid role: {msg['role']}")
if "content" not in msg and "tool_calls" not in msg:
raise ValueError(
"Message must contain either 'content' or 'tool_calls'"
)
return formatted_messages return formatted_messages