Skip to content

Commit ca2ff4a

Browse files
committed
testing image format fix
1 parent fff374e commit ca2ff4a

3 files changed

Lines changed: 23 additions & 14 deletions

File tree

tee_gateway/controllers/chat_controller.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -911,9 +911,7 @@ def _chat_request_to_dict(chat_request: CreateChatCompletionRequest) -> dict:
911911
messages.append(
912912
{
913913
"role": "user",
914-
"content": msg.content
915-
if isinstance(msg.content, str)
916-
else str(msg.content),
914+
"content": msg.content,
917915
}
918916
)
919917
elif isinstance(msg, ChatCompletionRequestAssistantMessage):

tee_gateway/llm_backend.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,17 @@ def generate_images(model: str, prompt: str, n: int = 1) -> tuple[list[str], int
325325
return images, len(images)
326326

327327

328+
def _normalize_user_content_parts(content: list) -> list:
329+
"""Preserve multimodal user content while tolerating primitive text parts."""
330+
normalized = []
331+
for part in content:
332+
if isinstance(part, dict):
333+
normalized.append(part)
334+
else:
335+
normalized.append({"type": "text", "text": str(part)})
336+
return normalized
337+
338+
328339
def convert_messages(messages: list) -> List[Any]:
329340
"""Convert OpenAI-format message objects or dicts to LangChain message objects."""
330341
langchain_messages: List[BaseMessage] = []
@@ -348,12 +359,8 @@ def convert_messages(messages: list) -> List[Any]:
348359
langchain_messages.append(SystemMessage(content=content))
349360

350361
elif role == "user":
351-
# content may be a string or a list of content parts; handle both
352362
if isinstance(content, list):
353-
content = "".join(
354-
part.get("text", "") if isinstance(part, dict) else str(part)
355-
for part in content
356-
)
363+
content = _normalize_user_content_parts(content)
357364
langchain_messages.append(HumanMessage(content=content))
358365

359366
elif role == "assistant":

tee_gateway/test/test_tee_core.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -569,20 +569,24 @@ def test_multi_turn_order_preserved(self):
569569
self.assertIsInstance(result[2], AIMessage)
570570

571571
def test_user_content_as_list_of_parts(self):
572-
"""Multimodal content parts should be concatenated into a single string."""
572+
"""Multimodal content parts should be preserved for vision-capable models."""
573+
content = [
574+
{"type": "text", "text": "Hello world"},
575+
{
576+
"type": "image_url",
577+
"image_url": {"url": "data:image/png;base64,abcd"},
578+
},
579+
]
573580
result = convert_messages(
574581
[
575582
{
576583
"role": "user",
577-
"content": [
578-
{"type": "text", "text": "Hello "},
579-
{"type": "text", "text": "world"},
580-
],
584+
"content": content,
581585
}
582586
]
583587
)
584588
self.assertIsInstance(result[0], HumanMessage)
585-
self.assertEqual(result[0].content, "Hello world")
589+
self.assertEqual(result[0].content, content)
586590

587591
def test_full_tool_call_conversation(self):
588592
"""End-to-end multi-turn with tool use: user → assistant (tool call) → tool result."""

0 commit comments

Comments
 (0)