LangChain 输出解析器与 LCEL 链构建详解
本文详细介绍 LangChain 框架中的核心组件:输出解析器(OutputParser)的使用,以及如何基于 LangChain 表达式语言(LCEL)构建高效的链(Chain)。通过掌握这些技术,开发者可以更灵活地控制大模型(LLM)的输出格式,并简化应用开发流程。
1. 输出解析器 OutputParser
1.1 为什么需要 OutputParser
在常规使用 LangChain 构建 LLM 应用的流程中,通常遵循 Prompt 输入 -> 调用 LLM -> LLM 输出 的模式。然而,在实际业务场景中,我们往往期望 LLM 返回的数据是结构化的,以便后续程序进行精确处理(如存入数据库、触发 API 调用等)。
如果仅依赖自然语言回复,后续解析将变得困难且不稳定。此时,我们需要在 Prompt 中预设格式要求,并利用输出解析器将 LLM 的原始文本转换为预期的数据结构。输出解析器充当了 LLM 输出与应用程序之间的桥梁。
1.2 代码实践
调用系统自带的输出解析器
LangChain 提供了一些内置的解析器,例如 CommaSeparatedListOutputParser,用于将结果解析为逗号分隔的列表。
示例:获取城市景点列表
from langchain_openai import ChatOpenAI
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import ChatPromptTemplate
# 定义提示模板
prompt = ChatPromptTemplate.from_messages([
("system", "{parser_instructions}"),
("human", "列出{cityName}的{viewPointNum}个著名景点。")
])
# 初始化解析器
output_parser = CommaSeparatedListOutputParser()
parser_instructions = output_parser.get_format_instructions()
print("解析器指令:", parser_instructions)
# 生成最终 Prompt
final_prompt = prompt.invoke({
"cityName": "南京",
"viewPointNum": 3,
"parser_instructions": parser_instructions
})
# 调用模型
model = ChatOpenAI(
model="gpt-3.5-turbo",
openai_api_key="YOUR_API_KEY",
openai_api_base="https://api.openai.com/v1"
)
response = model.invoke(final_prompt)
print(, response.content)
ret = output_parser.invoke(response)
(, ret)


