You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LangChain中结合Chain与Parser使用并返回解析后的对象?

用LLMChain结合PydanticOutputParser返回解析对象的方法

直接用LLMChain自带的output_parser参数就能搞定,完全不用子类化扩展LLMChain,步骤和代码示例如下:

具体实现步骤

  1. 定义Pydantic数据结构
    先把需要解析的目标结构(比如示例里的Joke)用Pydantic定义清楚:

    from pydantic import BaseModel, Field
    from typing import Optional
    
    class Joke(BaseModel):
        setup: str = Field(description="笑话的铺垫部分")
        punchline: str = Field(description="笑话的包袱部分")
        rating: Optional[int] = Field(description="1-10的搞笑评分,可选")
    
  2. 初始化PydanticOutputParser
    将刚才定义的模型传入解析器:

    from langchain.output_parsers import PydanticOutputParser
    
    parser = PydanticOutputParser(pydantic_object=Joke)
    
  3. 构建包含格式指令的提示模板
    必须在提示里加入解析器要求的格式说明,不然模型输出的内容没法被正确解析:

    from langchain.prompts import PromptTemplate
    
    prompt = PromptTemplate(
        template="生成一个关于{topic}的笑话。\n{format_instructions}",
        input_variables=["topic"],
        partial_variables={"format_instructions": parser.get_format_instructions()}
    )
    
  4. 创建LLMChain并指定output_parser
    核心操作就在这里,初始化LLMChain时直接把解析器赋值给output_parser参数:

    from langchain.llms import OpenAI
    from langchain.chains import LLMChain
    
    llm = OpenAI(temperature=0.7)
    chain = LLMChain(llm=llm, prompt=prompt, output_parser=parser)
    
  5. 执行并获取解析后的对象
    现在调用chain.run()返回的就是已经解析好的Pydantic对象,不用再手动处理原始文本:

    result = chain.run(topic="程序员")
    print(result.setup)  # 直接访问结构内的字段
    print(result.punchline)
    

原理说明

LLMChain的output_parser参数会自动处理模型返回的原始文本,调用解析器的parse()方法完成格式转换,全程不需要额外编写解析逻辑,也不需要修改LLMChain的源码或子类化。

内容的提问来源于stack exchange,提问作者Abe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:42:18