Warn and drop invalid messages when format messages for gemini

Previously we were setting message content part with empty text. This
results in error from Gemini API. Warn and drop such messages instead.

Log empty message content found during construction to root-cause the
issue but allow Khoj to respond without the offending messages in
context for call to Gemini API.
This commit is contained in:
Debanjum
2025-03-30 23:45:40 +05:30
parent 177560655d
commit 0eb2d17771

View File

@@ -294,11 +294,21 @@ def format_messages_for_gemini(
else:
image = get_image_from_base64(image_data, type="bytes")
message_content += [gtypes.Part.from_bytes(data=image.content, mime_type=image.type)]
elif not is_none_or_empty(item.get("text")):
message_content += [gtypes.Part.from_text(text=item["text"])]
else:
message_content += [gtypes.Part.from_text(text=item.get("text", ""))]
logger.error(f"Dropping invalid message content part: {item}")
if not message_content:
logger.error(f"Dropping empty message content")
messages.remove(message)
continue
message.content = message_content
elif isinstance(message.content, str):
message.content = [gtypes.Part.from_text(text=message.content)]
else:
logger.error(f"Dropping invalid type: {type(message.content)} of message content: {message.content}")
messages.remove(message)
continue
if message.role == "assistant":
message.role = "model"