langchain_core.utils.function_calling.tool_example_to_messages

langchain_core.utils.function_calling.tool_example_to_messages(input: str, tool_calls: List[BaseModel], tool_outputs: Optional[List[str]] = None) List[BaseMessage][源代码]

将示例转换为可以输入到LLM的消息列表。

此代码是一个适配器,用于将单个示例转换为聊天模型可以接收的消息列表。

每个示例的消息列表对应于

  1. HumanMessage:包含要从中提取内容的文本。

  2. AIMessage:包含从模型提取的信息。

  3. ToolMessage:包含对模型进行确认,表明模型请求了工具,并正确执行。

需要ToolMessage,因为某些聊天模型针对代理进行了超优化,而不是针对提取用例。

参数
  • input字符串)– 用户输入字符串

  • tool_calls列表[BaseModel])– 表示为Pydantic BaseModel的工具调用列表

  • tool_outputs可选[列表[字符串]])– 可选[列表[str]],工具调用输出的列表。无需提供。如果未提供,将插入占位符值。默认为None。

返回

消息列表

返回类型

列表[BaseMessage]

示例

from typing import List, Optional
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI

class Person(BaseModel):
    '''Information about a person.'''
    name: Optional[str] = Field(..., description="The name of the person")
    hair_color: Optional[str] = Field(
        ..., description="The color of the person's hair if known"
    )
    height_in_meters: Optional[str] = Field(
        ..., description="Height in METERs"
    )

examples = [
    (
        "The ocean is vast and blue. It's more than 20,000 feet deep.",
        Person(name=None, height_in_meters=None, hair_color=None),
    ),
    (
        "Fiona traveled far from France to Spain.",
        Person(name="Fiona", height_in_meters=None, hair_color=None),
    ),
]


messages = []

for txt, tool_call in examples:
    messages.extend(
        tool_example_to_messages(txt, [tool_call])
    )