fix openai-compat / litellm conversions

This commit is contained in:
Ashwin Bharambe 2025-02-26 20:56:54 -08:00
parent 4c0f122a4b
commit 1cff4c5907

View file

@ -518,15 +518,12 @@ async def convert_message_to_openai_dict_new(message: Message | Dict) -> OpenAIC
# {"type": "image", "image": {"url": {"uri": ...}}} -> {"type": "image_url", "image_url": {"url": ...}} # {"type": "image", "image": {"url": {"uri": ...}}} -> {"type": "image_url", "image_url": {"url": ...}}
# {"type": "image", "image": {"data": ...}} -> {"type": "image_url", "image_url": {"url": "data:image/?;base64,..."}} # {"type": "image", "image": {"data": ...}} -> {"type": "image_url", "image_url": {"url": "data:image/?;base64,..."}}
# List[...] -> List[...] # List[...] -> List[...]
async def _convert_user_message_content( async def _convert_message_content(
content: InterleavedContent, content: InterleavedContent,
) -> Union[str, Iterable[OpenAIChatCompletionContentPartParam]]: ) -> Union[str, Iterable[OpenAIChatCompletionContentPartParam]]:
# Llama Stack and OpenAI spec match for str and text input # Llama Stack and OpenAI spec match for str and text input
if isinstance(content, str): if isinstance(content, str):
return OpenAIChatCompletionContentPartTextParam( return content
type="text",
text=content,
)
elif isinstance(content, TextContentItem): elif isinstance(content, TextContentItem):
return OpenAIChatCompletionContentPartTextParam( return OpenAIChatCompletionContentPartTextParam(
type="text", type="text",
@ -538,7 +535,7 @@ async def convert_message_to_openai_dict_new(message: Message | Dict) -> OpenAIC
image_url=OpenAIImageURL(url=await convert_image_content_to_url(content)), image_url=OpenAIImageURL(url=await convert_image_content_to_url(content)),
) )
elif isinstance(content, List): elif isinstance(content, List):
return [await _convert_user_message_content(item) for item in content] return [await _convert_message_content(item) for item in content]
else: else:
raise ValueError(f"Unsupported content type: {type(content)}") raise ValueError(f"Unsupported content type: {type(content)}")
@ -546,12 +543,12 @@ async def convert_message_to_openai_dict_new(message: Message | Dict) -> OpenAIC
if isinstance(message, UserMessage): if isinstance(message, UserMessage):
out = OpenAIChatCompletionUserMessage( out = OpenAIChatCompletionUserMessage(
role="user", role="user",
content=await _convert_user_message_content(message.content), content=await _convert_message_content(message.content),
) )
elif isinstance(message, CompletionMessage): elif isinstance(message, CompletionMessage):
out = OpenAIChatCompletionAssistantMessage( out = OpenAIChatCompletionAssistantMessage(
role="assistant", role="assistant",
content=message.content, content=await _convert_message_content(message.content),
tool_calls=[ tool_calls=[
OpenAIChatCompletionMessageToolCall( OpenAIChatCompletionMessageToolCall(
id=tool.call_id, id=tool.call_id,
@ -568,12 +565,12 @@ async def convert_message_to_openai_dict_new(message: Message | Dict) -> OpenAIC
out = OpenAIChatCompletionToolMessage( out = OpenAIChatCompletionToolMessage(
role="tool", role="tool",
tool_call_id=message.call_id, tool_call_id=message.call_id,
content=message.content, content=await _convert_message_content(message.content),
) )
elif isinstance(message, SystemMessage): elif isinstance(message, SystemMessage):
out = OpenAIChatCompletionSystemMessage( out = OpenAIChatCompletionSystemMessage(
role="system", role="system",
content=message.content, content=await _convert_message_content(message.content),
) )
else: else:
raise ValueError(f"Unsupported message type: {type(message)}") raise ValueError(f"Unsupported message type: {type(message)}")