掘金 人工智能 04月29日 14:02
如何从模型返回结构化数据
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用 LangChain 框架实现 LLM 的结构化输出,使得模型输出结果符合预定义的格式,便于程序化处理。文章阐述了结构化输出的必要性,并详细讲解了使用 Pydantic 模型定义输出格式、配置 LLM 模板、使用输出解析器以及整合到 LLMChain 的关键步骤。通过示例代码,展示了如何让模型输出符合 Pydantic 模型的结构。最后,总结了结构化输出的优势,并提供了常见问题和注意事项,帮助开发者更高效地利用 LLM 的能力。

💡结构化输出的核心在于**提高数据可处理性**,减少歧义,并增强与下游系统的兼容性。LangChain 提供多种工具,关键在于定义输出格式和解析输出结果。

🔑**定义输出格式**是首要步骤,通过 Python 的 pydantic 库定义数据模型,指定输出的字段和类型,例如姓名(字符串)和年龄(整数)。

📝**配置 LLM 模板**时,需要在提示词中明确要求模型输出符合指定的格式,例如 JSON 格式,从而约束模型的输出。

⚙️**输出解析器**是关键,LangChain 提供了多种解析器,如 PydanticOutputParser,将文本解析为 Pydantic 模型对象,确保输出结构化数据。

💡**整合到 LLMChain**是将解析器与 LLMChain 结合,确保输出自动转换为结构化格式,简化从 LLM 输出到实际应用的转换过程。

本文介绍一下如何使用 LangChain 框架(一个用于构建基于大型语言模型(LLM)的端到端应用程序的工具库)来生成 结构化输出(Structured Output)。结构化输出是指让模型(如GPT、LLama等)的输出结果符合预定义的格式(如 JSON、Pydantic 对象、表格等),而不是自由文本。这在需要程序化处理结果(如数据提取、后续自动化操作)时非常有用。

1. 为什么需要结构化输出?


2. LangChain 实现结构化输出的核心方法

LangChain 提供了多种工具和模式来实现结构化输出,核心是 定义输出格式解析输出结果。以下是关键步骤:

(1) 定义输出格式
(2) 配置 LLM 模板(Prompt)

在提示词(Prompt)中明确要求模型输出符合指定的格式,例如:

请以以下 JSON 格式返回用户信息:{  "name": "<用户姓名>",  "age": <年龄>,  "is_student": <是否为学生(true/false)>}
(3) 使用输出解析器(Output Parser)

LangChain 提供了多种解析器将模型输出转换为结构化数据:

示例代码:

from langchain.output_parsers import PydanticOutputParserparser = PydanticOutputParser(pydantic_object=Person)
(4) 整合到 LLMChain

将解析器与 LLMChain 结合,确保输出自动转换为结构化格式:

from langchain import LLMChain, OpenAIllm = OpenAI(temperature=0)chain = LLMChain(    llm=llm,    prompt=prompt,  # 包含格式要求的提示词    output_parser=parser  # 指定解析器)

3. 关键步骤与代码示例

以下是完整的流程示例,演示如何让模型输出符合 Pydantic 模型的结构:

# 1. 定义 Pydantic 模型class Person(BaseModel):    name: str    age: int    is_student: bool# 2. 创建解析器parser = PydanticOutputParser(pydantic_object=Person)# 3. 构建提示词(包含格式要求)from langchain.prompts import PromptTemplateprompt_template = """基于以下信息,返回用户的信息:姓名:{name_info}年龄:{age_info}是否学生:{student_info}请以 {format_instructions} 格式返回结果。"""prompt = PromptTemplate(    template=prompt_template,    input_variables=["name_info", "age_info", "student_info"],    partial_variables={        "format_instructions": parser.get_format_instructions()    })# 4. 创建 LLMChainfrom langchain import OpenAI, LLMChainllm = OpenAI(temperature=0)chain = LLMChain(llm=llm, prompt=prompt, output_parser=parser)# 5. 运行并获取结果result = chain.run(    name_info="Alice",    age_info="25",    student_info="是")print(result)  # 输出为 Person 对象,包含 name, age, is_student

4. 常见问题与注意事项


5. 总结

通过 LangChain 的结构化输出功能,开发者可以:

    定义清晰的数据格式(如 Pydantic 模型)。指导模型遵循格式(通过提示词和示例)。自动解析输出(使用内置解析器)。无缝集成到程序逻辑(直接操作结构化数据)。

这种方法大幅简化了从 LLM 输出到实际应用的转换过程,尤其适用于需要高效处理和存储信息的场景(如数据提取、表单填写、信息汇总等)。


关键术语解释

通过以上方法,可以更高效、可靠地利用 LLM 的能力,同时确保输出结果符合程序化处理的需求。

参考文档

How to return structured data from a model

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain 结构化输出 LLM Pydantic LLMChain
相关文章