openai: audio modality, remove sockets from unit tests (#27436)

This commit is contained in:
Erick Friis
2024-10-18 08:02:09 -07:00
committed by GitHub
parent 97dc578d47
commit 7d65a32ee0
10 changed files with 417 additions and 279 deletions

View File

@@ -129,6 +129,8 @@ def _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:
invalid_tool_calls.append(
make_invalid_tool_call(raw_tool_call, str(e))
)
if audio := _dict.get("audio"):
additional_kwargs["audio"] = audio
return AIMessage(
content=content,
additional_kwargs=additional_kwargs,
@@ -219,6 +221,17 @@ def _convert_message_to_dict(message: BaseMessage) -> dict:
# If tool calls present, content null value should be None not empty string.
if "function_call" in message_dict or "tool_calls" in message_dict:
message_dict["content"] = message_dict["content"] or None
if "audio" in message.additional_kwargs:
# openai doesn't support passing the data back - only the id
# https://platform.openai.com/docs/guides/audio/multi-turn-conversations
raw_audio = message.additional_kwargs["audio"]
audio = (
{"id": message.additional_kwargs["audio"]["id"]}
if "id" in raw_audio
else raw_audio
)
message_dict["audio"] = audio
elif isinstance(message, SystemMessage):
message_dict["role"] = "system"
elif isinstance(message, FunctionMessage):