langchain.chains.openai_functions.base.create_openai_fn_chain

langchain.chains.openai_functions.base.create_openai_fn_chain(functions: Sequence[Union[Dict[str, Any], Type[BaseModel], Callable]], llm: BaseLanguageModel, prompt: BasePromptTemplate, *, enforce_single_function_usage: bool = True, output_key: str = 'function', output_parser: Optional[BaseLLMOutputParser] = None, **kwargs: Any) LLMChain[源代码]

自版本 0.1.1 已弃用:请使用 create_openai_fn_runnable 代替。

[已废弃] 创建一个使用 OpenAI 功能的 LLM 链。

参数
  • functions (Sequence[Union][Dict][str, Any], Type[BaseModel], Callable]) – 一个字典、pydantic.BaseModel 类型或 Python 函数的序列。如果传入字典,假定这些已经是一个有效的 OpenAI 函数。如果只传入一个函数,将强制模型使用这个函数。pydantic.BaseModel 和 Python 函数应该有描述函数功能的文档字符串。为了获得最佳效果,pydantic.BaseModel 应包含参数说明,Python 函数的文档字符串中应有 Google Python 风格的参数描述。另外,Python 函数应仅使用原始类型(str, int, float, bool)或 pydantic.BaseModel 作为参数。

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

  • prompt (BasePromptTemplate) – 将传递给模型的 BasePromptTemplate。

  • enforce_single_function_usage (bool) – 仅在传递单个函数时使用。如果为 True,则模型将被迫使用所提供的函数。如果为 False,则模型将有选择使用所提供函数或不使用的选项。

  • output_key (str) – 在 LLMChain.__call__ 中返回输出时使用的键。

  • output_parser (Optional[BaseLLMOutputParser]) – 用于解析模型输出的 BaseLLMOutputParser。默认情况下,将根据函数类型推断。如果传递了 pydantic.BaseModels,则 OutputParser 将尝试使用这些模型来解析输出。否则,模型输出将被简单地解析为 JSON。如果传递了多个函数且它们不是 pydantic.BaseModels,则链输出将包括返回函数的名称以及传递给函数的参数。

  • kwargs (Any) –

返回

一个将在运行时将给定函数传递给模型的 LLMChain。

返回类型

LLMChain

示例

from typing import Optional

from langchain.chains.openai_functions import create_openai_fn_chain
from langchain_community.chat_models import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

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)
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a world class algorithm for recording entities."),
        ("human", "Make calls to the relevant function to record the entities in the following input: {input}"),
        ("human", "Tip: Make sure to answer in the correct format"),
    ]
)
chain = create_openai_fn_chain([RecordPerson, RecordDog], llm, prompt)
chain.run("Harry was a chubby brown beagle who loved chicken")
# -> RecordDog(name="Harry", color="brown", fav_food="chicken")