langchain.chains.openai_functions.base.create_structured_output_chain

langchain.chains.openai_functions.base.create_structured_output_chain(output_schema: Union[Dict[str, Any], Type[BaseModel], llm: BaseLanguageModel, prompt: BasePromptTemplate, *, output_key: str = 'function', output_parser: Optional[BaseLLMOutputParser] = None, **kwargs: Any) LLMChain[source]

弃用于版本 0.1.1: 请使用 ChatOpenAI.with_structured_output 代替。

[旧版] 使用 OpenAI 函数创建返回结构化输出的 LLMChain。

参数
  • output_schema (Union[Dict[str, Any], Type[BaseModel]]) – 字典或 pydantic.BaseModel 类。如果传入字典,则假定其已有有效的 JsonSchema。为了获得最佳结果,pydantic.BaseModels 应包含描述其表示和参数的文档字符串。

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

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

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

  • output_parser (Optional[BaseLLMOutputParser]) – 用于解析模型输出的 BaseLLMOutputParser。默认情况下,将根据函数类型推断。如果传递 pydantic.BaseModels,则 OutputParser 将尝试使用这些模型解析输出。否则,模型输出将被简单解析为 JSON。

  • kwargs(《任意》) –

返回

一个LLMChain,该LLMChain会将给定的函数传递给模型。

返回类型

LLMChain

示例

from typing import Optional

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

from langchain_core.pydantic_v1 import BaseModel, Field

class Dog(BaseModel):
    """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-3.5-turbo-0613", temperature=0)
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a world class algorithm for extracting information in structured formats."),
        ("human", "Use the given format to extract information from the following input: {input}"),
        ("human", "Tip: Make sure to answer in the correct format"),
    ]
)
chain = create_structured_output_chain(Dog, llm, prompt)
chain.run("Harry was a chubby brown beagle who loved chicken")
# -> Dog(name="Harry", color="brown", fav_food="chicken")

使用create_structured_output_chain的示例