langchain.chains.structured_output.base.create_openai_fn_runnable

langchain.chains.structured_output.base.create_openai_fn_runnable(functions: Sequence[Union[Dict[str, Any], Type[BaseModel], Callable]], llm: Runnable, prompt: Optional[BasePromptTemplate] = None, *, enforce_single_function_usage: bool = True, output_parser: Optional[Union[BaseOutputParser, BaseGenerationOutputParser]] = None, **llm_kwargs: Any) Runnable[source]

自版本 0.1.14 已弃用: LangChain 引入了一个名为 with_structured_output 的方法,该方法适用于能够调用工具的 ChatModel。您可以在以下链接中了解更多关于此方法的信息: <https://python.langchain.ac.cn/docs/modules/model_io/chat/structured_output/>。有关如何使用 LLM 进行信息提取的更多指导,请参阅我们的信息提取用例文档。<https://python.langchain.ac.cn/docs/use_cases/extraction/>。如果您发现其他问题,请在此处提供反馈:<https://github.com/langchain-ai/langchain/discussions/18154> 使用 `` from langchain_core.pydantic_v1 import BaseModel, Field from langchain_anthropic import ChatAnthropic

类 Joke(BaseModel)

setup: str = Field(description="笑话的设置") punchline: str = Field(description="笑话的结尾")

或者任何支持工具的聊天模型。# 请参考structured_output的文档,以查看支持with_structured_output的模型列表。

model = ChatAnthropic(model="claude-3-opus-20240229", temperature=0)

structured_llm = model.with_structured_output(Joke)

structured_llm.invoke("Tell me a joke about cats.

请确保调用Joke函数。")
  • ``代替。

  • 创建一个使用OpenAI函数的可运行序列。

  • 参数

  • functions (Sequence[Union[Dict[str, Any], Type[BaseModel], Callable]]) – 字典、pydantic.BaseModels类或Python函数的序列。如果传递字典,则假定它们已经是有效的OpenAI函数。如果只传递单个函数,则强制模型使用该函数。pydantic.BaseModels和Python函数应有描述功能如何工作的docstrings。为获得最佳效果,pydantic.BaseModels应具有参数描述,Python函数应具有Google Python风格的arg描述。另外,Python函数应仅使用原始类型(str、int、float、bool)或pydantic.BaseModels作为参数。

  • llm (Runnable) – 要使用的语言模型,假定支持OpenAI函数调用API。

  • prompt (Optional[BasePromptTemplate]) – 要传递给模型的BasePromptTemplate。

enforce_single_function_usage (bool) – 只在传递单个函数时使用。如果为True,则模型将被强制使用给定的函数。如果为False,则模型将有权选择使用给定函数或不使用给定函数。

output_parser (Optional[Union[BaseOutputParser, BaseGenerationOutputParser]]) – 用于解析模型输出的BaseLLMOutputParser。默认将从函数类型推断。如果传递pydantic.BaseModels,然后OutputParser将尝试使用这些解析输出。否则,模型输出将以JSON格式简单地解析。如果传递多个函数且它们不是pydantic.BaseModels,则链输出将包括返回的函数名称和传递给函数的参数。

**llm_kwargs (Any) – 要传递给语言模型的附加命名参数。

返回

A runnable sequence that will pass in the given functions to the model when run.

from typing import Optional

from langchain.chains.structured_output import create_openai_fn_runnable
from langchain_openai import ChatOpenAI
from langchain_core.pydantic_v1 import BaseModel, Field


class RecordPerson(BaseModel):
    '''Record some identifying information about a person.'''

    name: str = Field(..., description="The person's name")
    age: int = Field(..., description="The person's age")
    fav_food: Optional[str] = Field(None, description="The person's favorite food")


class RecordDog(BaseModel):
    '''Record some identifying information about a dog.'''

    name: str = Field(..., description="The dog's name")
    color: str = Field(..., description="The dog's color")
    fav_food: Optional[str] = Field(None, description="The dog's favorite food")


llm = ChatOpenAI(model="gpt-4", temperature=0)
structured_llm = create_openai_fn_runnable([RecordPerson, RecordDog], llm)
structured_llm.invoke("Harry was a chubby brown beagle who loved chicken)
# -> RecordDog(name="Harry", color="brown", fav_food="chicken")