LangChain 输出解析器与 LCEL 链构建详解
1. 输出解析器 OutputParser
1.1 为什么需要 OutputParser
在常规使用 LangChain 构建大语言模型(LLM)应用的流程中,通常包含三个核心步骤:Prompt 输入、调用 LLM、LLM 输出。然而,在实际业务场景中,我们往往期望 LLM 返回的数据是结构化的格式,以便后续程序进行精确处理或存入数据库。
此时就需要引入输出解析器(OutputParser)。其工作流程是在 Prompt 中预设好数据格式要求,LLM 生成内容后,将原始文本传递给输出解析器。解析器会根据预定义的规则对内容进行清洗和校验,最终将其转换为预期的结构化数据(如列表、JSON 对象等)。

*注:上图仅为概念示意,实际开发中请根据具体架构调整。
1.2 代码实践
调用系统自带的输出解析器
LangChain 提供了一些内置的解析器,可以直接满足常见的格式化需求。以下示例演示如何将 LLM 的结果解析为逗号分隔的字符串列表。
场景:询问某个城市有 N 个著名景点,并要求以列表形式返回。
from langchain_openai import ChatOpenAI
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import ChatPromptTemplate
# 1. 初始化提示词模板
prompt = ChatPromptTemplate.from_messages([
("system", "{parser_instructions}"),
("human", "列出{cityName}的{viewPointNum}个著名景点。")
])
# 2. 初始化解析器并获取格式指令
output_parser = CommaSeparatedListOutputParser()
parser_instructions = output_parser.get_format_instructions()
print("解析器指令:", parser_instructions)
# 3. 组装最终提示词
final_prompt = prompt.invoke({
"cityName": "南京",
"viewPointNum": 3,
"parser_instructions": parser_instructions
})
# 4. 调用 LLM 模型
model = ChatOpenAI(
model="gpt-3.5-turbo",
openai_api_key="YOUR_OPENAI_API_KEY",
openai_api_base=
)
response = model.invoke(final_prompt)
(, response.content)
ret = output_parser.invoke(response)
(, ret)


