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][来源]#

将LangChain消息转换为OpenAI消息字典。

Parameters:
  • messages (BaseMessage | list[str] | tuple[str, str] | str | dict[str, Any] | Sequence[BaseMessage | list[str] | tuple[str, str] | str | dict[str, Any]]) – 消息类对象或其内容为OpenAI、Anthropic、Bedrock Converse或VertexAI格式的对象可迭代。

  • text_format (Literal['string', 'block']) –

    如何格式化字符串或文本块内容:

    • ”string”:

      如果消息有字符串内容,则保持为字符串。如果 消息有内容块且所有内容块类型为‘text’,则这些内容块 用换行符连接成一个字符串。如果消息有 内容块且至少有一个不是‘text’类型,则 所有内容块保持为字典形式。

    • ”block”:

      如果消息有字符串内容,则将其转换为一个列表 其中包含一个类型为‘text’的内容块。如果消息有内容 块,则保持原样。

Returns:

  • dict:

    如果传入单个类似消息的对象,则返回单个OpenAI消息字典。

  • list[dict]:

    如果传入一系列类似消息的对象,则返回OpenAI消息字典的列表。

Return type:

返回类型取决于输入类型

示例

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'}
# ]

在版本0.3.11中添加。