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中添加。