convert_to_openai_messages#
- langchain_core.messages.utils.convert_to_openai_messages(messages: BaseMessage | list[str] | tuple[str, str] | str | dict[str, Any] | Sequence[BaseMessage | list[str] | tuple[str, str] | str | dict[str, Any]], *, text_format: Literal['string', 'block'] = 'string') dict | list[dict] [source]#
Convert LangChain messages into OpenAI message dicts.
- Parameters:
messages (BaseMessage | list[str] | tuple[str, str] | str | dict[str, Any] | Sequence[BaseMessage | list[str] | tuple[str, str] | str | dict[str, Any]]) – Message-like object or iterable of objects whose contents are in OpenAI, Anthropic, Bedrock Converse, or VertexAI formats.
text_format (Literal['string', 'block']) –
How to format string or text block contents:
- ”string”:
If a message has a string content, this is left as a string. If a message has content blocks that are all of type ‘text’, these are joined with a newline to make a single string. If a message has content blocks and at least one isn’t of type ‘text’, then all blocks are left as dicts.
- ”block”:
If a message has a string content, this is turned into a list with a single content block of type ‘text’. If a message has content blocks these are left as is.
- Returns:
- dict:
If a single message-like object is passed in, a single OpenAI message dict is returned.
- list[dict]:
If a sequence of message-like objects are passed in, a list of OpenAI message dicts is returned.
- Return type:
The return type depends on the input type
Example
from langchain_core.messages import ( convert_to_openai_messages, AIMessage, SystemMessage, ToolMessage, ) messages = [ SystemMessage([{"type": "text", "text": "foo"}]), {"role": "user", "content": [{"type": "text", "text": "whats in this"}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,'/9j/4AAQSk'"}}]}, AIMessage("", tool_calls=[{"name": "analyze", "args": {"baz": "buz"}, "id": "1", "type": "tool_call"}]), ToolMessage("foobar", tool_call_id="1", name="bar"), {"role": "assistant", "content": "thats nice"}, ] oai_messages = convert_to_openai_messages(messages) # -> [ # {'role': 'system', 'content': 'foo'}, # {'role': 'user', 'content': [{'type': 'text', 'text': 'whats in this'}, {'type': 'image_url', 'image_url': {'url': "data:image/png;base64,'/9j/4AAQSk'"}}]}, # {'role': 'assistant', 'tool_calls': [{'type': 'function', 'id': '1','function': {'name': 'analyze', 'arguments': '{"baz": "buz"}'}}], 'content': ''}, # {'role': 'tool', 'name': 'bar', 'content': 'foobar'}, # {'role': 'assistant', 'content': 'thats nice'} # ]
Added in version 0.3.11.