核心分为原生解析、输出解析器 (Output Parser)、Prompt 约束、结构化返回四大类适配不同场景字符串、JSON、列表、对象、枚举基于 LangChain 最新版本0.1演示。一、前置依赖bash运行pip install langchain langchain-openai python-dotenv二、基础Prompt指令约束最简单无代码解析直接在提示词要求固定格式适合简单场景纯文本约束不需要根据大模型的输出自动调用函数。示例 1固定文本格式 / 列表python运行from langchain_openai import ChatOpenAI from dotenv import load_dotenv import os load_dotenv() llm ChatOpenAI(modelgpt-3.5-turbo, temperature0) prompt 请总结以下内容严格按照格式输出 1. 标题xxx 2. 核心要点 - 要点1 - 要点2 内容人工智能发展趋势 res llm.invoke(prompt) print(res.content)示例 2强制 JSON 格式纯 Prompt 约束python运行prompt 提取以下人物信息**只返回标准JSON**不要额外解释、不要markdown 字段name(姓名), age(年龄), hobby(爱好) 内容小明22岁喜欢编程和阅读 res llm.invoke(prompt) print(res.content)三、标准 OutputParser 输出解析器官方推荐LangChain 内置多种解析器自动校验 格式化输出防乱格式、自动报错。1. StrOutputParser 纯字符串默认仅包装原始输出链式调用常用python运行from langchain_core.output_parsers import StrOutputParser parser StrOutputParser() chain llm | parser res chain.invoke(介绍Python) print(type(res), res) # 字符串类型2. JsonOutputParser 解析 JSON最常用自动解析 LLM 输出的 JSON字符串为 Python 字典自动容错。python运行from langchain_core.output_parsers import JsonOutputParser from langchain_core.prompts import ChatPromptTemplate # 1. 定义解析器 parser JsonOutputParser() # 2. 构造提示词注入格式要求 prompt ChatPromptTemplate.from_messages([ (system, 提取用户信息输出JSON格式。{format_instructions}), (human, 姓名张三职业工程师城市上海) ]).partial(format_instructionsparser.get_format_instructions()) # 3. 构建链路 chain prompt | llm | parser # 4. 调用直接得到字典 result chain.invoke({}) print(type(result)) # class dict print(result[姓名], result[职业])3. PydanticOutputParser结构化对象强类型、字段校验基于Pydantic定义数据模型强制字段、类型、规则适合生产级结构化输出。步骤 1定义 Pydantic 模型python运行from pydantic import BaseModel, Field from langchain_core.output_parsers import PydanticOutputParser # 定义数据结构 class UserInfo(BaseModel): name: str Field(description用户姓名) age: int Field(description用户年龄数字类型) city: str Field(description所在城市) # 初始化解析器 parser PydanticOutputParser(pydantic_objectUserInfo)步骤 2拼接 Prompt 调用python运行prompt ChatPromptTemplate.from_messages([ (system, 解析用户信息严格按照指定格式输出。{format_instructions}), (human, 小李25岁定居北京) ]).partial(format_instructionsparser.get_format_instructions()) chain prompt | llm | parser # 返回 Pydantic 对象直接点属性取值 user: UserInfo chain.invoke({}) print(user.name, user.age, user.city) # 转字典 print(user.model_dump())4. CommaSeparatedListOutputParser 逗号分隔列表自动把a,b,c格式转为 Python 列表python运行from langchain_core.output_parsers import CommaSeparatedListOutputParser parser CommaSeparatedListOutputParser() prompt ChatPromptTemplate.from_messages([ (system, 列出3个编程语言用英文逗号分隔。{format_instructions}), (human, 需求编程语言) ]).partial(format_instructionsparser.get_format_instructions()) chain prompt | llm | parser res chain.invoke({}) print(res) # [Python, Java, Go]四、进阶自定义解析器 处理异常1. 捕获解析失败LLM 输出不规范兜底LLM 偶尔输出多余文本导致 JSON 解析报错增加异常捕获python运行from langchain_core.output_parsers import JsonOutputParser from langchain_core.exceptions import OutputParserException parser JsonOutputParser() chain llm | parser try: res chain.invoke(xxx) except OutputParserException as e: print(解析失败原始输出, e.llm_output) # 兜底手动清洗字符串再解析2. 自定义 OutputParser继承BaseOutputParser实现个性化逻辑python运行from langchain_core.output_parsers import BaseOutputParser from typing import Any class CustomParser(BaseOutputParser[str]): def parse(self, text: str) - str: # 自定义清洗逻辑去除markdown、空格 return text.replace(, ).strip() parser CustomParser() chain llm | parser res chain.invoke(用一句话介绍LangChain) print(res)五、LCEL 链式组合工程常用写法统一格式链路复用解析逻辑python运行from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import JsonOutputParser prompt ChatPromptTemplate.from_template( 分析以下评论情绪输出JSON 字段sentiment(positive/negative/neutral), reason(原因) 评论{comment} {format_instructions} ) parser JsonOutputParser() # 完整链路 chain prompt.partial(format_instructionsparser.get_format_instructions()) | llm | parser # 调用 data chain.invoke({comment: 这个工具很好用效率提升很多}) print(data)六、关键技巧 避坑必加temperature0格式化场景建议关闭随机性llm ChatOpenAI(temperature0)大幅降低格式错乱概率。禁止多余内容Prompt 里明确只输出结果不要解释、不要markdown、不要多余文字。嵌套 JSON / 复杂结构优先用PydanticOutputParser支持嵌套 Model天然支持复杂对象。多轮对话格式化解析器全局复用只需要保证每一轮 Prompt 都携带格式指令。旧版本 LangChain 兼容老版本用from langchain.output_parsers import xxx新版本统一迁移到langchain_core.output_parsers。七、选型速查表场景推荐解析器纯文本输出StrOutputParser字典 / 简单 JSONJsonOutputParser强类型、字段校验、复杂结构PydanticOutputParser逗号分隔数组CommaSeparatedListOutputParser特殊清洗规则自定义 BaseOutputParser