将 `with_structed_output` 与封装在 LLMChain 中的 ChatOpenAI 一起使用会引发验证错误

问题描述 投票:0回答:1

以下代码会引发错误,因为 LLMChain 尝试返回具有两个键的字典:

{ "page": "xxxx", "text": Card(name='Alice and Bob', description='一张示例卡片') }

但它失败了,因为 Card 对象不是字符串。这是正常行为吗?在

LLMChain
中传递 pydantic 解析器 PydanticOutputParser(pydantic_object=Card) 而不是使用
with_structured_output
方法是可行的,但我想使用 OpenAI 的实现。

from pydantic import BaseModel, Field
from typing import Optional
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

class Card(BaseModel):
    """Card data."""

    name: Optional[str] = Field(..., description="Character name")
    description: Optional[str] = Field(..., description="Character description")
    
structured_llm = ChatOpenAI().with_structured_output(Card)

prompt = PromptTemplate.from_template("""
    Extract card information from a given page:
    
    ### Page
    {page}

""")

chain = LLMChain(llm=structured_llm, prompt=prompt, verbose=True)

chain.invoke("Card name: Alice and Bob, Description: An example card")
openai-api pydantic langchain
1个回答
0
投票

看来是LLMChain贬值的原因:

structured_llm = ChatOpenAI().with_structured_output(Card)

chain = prompt | structured_llm
chain.invoke("Card name: Alice and Bob, Description: An example card")

> Card(name='Alice and Bob', description='An example card')
© www.soinside.com 2019 - 2024. All rights reserved.