LangChain的LineListOutputParser使用介绍
(具体路径可能因 LangChain 版本略有不同,比如在或中,请根据你使用的 LangChain 版本调整导入方式)是 LangChain 提供的一个输出解析器,用于将 LLM 返回的、按行分隔的文本内容,自动解析为一个 Python 字符串列表(List[str]),非常适合用于让 LLM 生成清单、列表类内容的场景。。
在 LangChain 中,LineListOutputParser是一个用于解析 LLM 输出为列表(特别是按行分隔的列表) 的工具类,属于 输出解析器(OutputParser) 的一种。
它的主要作用是:
将大语言模型(LLM)返回的、按行分隔的文本内容,解析成一个 Python 的字符串列表(List[str])。
一、基本介绍
📦 所属模块
通常位于:
from langchain.output_parsers import LineListOutputParser
(具体路径可能因 LangChain 版本略有不同,比如在 langchain_core.output_parsers或 langchain.output_parsers中,请根据你使用的 LangChain 版本调整导入方式)
二、作用与使用场景
✅ 适用场景举例:
假设你让 LLM 做如下任务:
“请列出三种常见的编程语言,每种语言占一行。”
你期望 LLM 返回如下格式的文本:
Python
JavaScript
Java
你希望 LangChain 把这个输出 自动解析成 Python 列表:
["Python", "JavaScript", "Java"]
这时候,你就可以使用 LineListOutputParser来完成这个解析工作。
三、基本用法
1. 导入 OutputParser
from langchain.output_parsers import LineListOutputParser
⚠️ 注意:根据你使用的 LangChain 版本(比如 0.1.x 或 0.2.x 及以上),该解析器可能在不同的子模块中,比如:
langchain.output_parsers(旧版)
langchain_core.output_parsers(新版,LangChain 0.2+)
如果导入失败,可以尝试:
from langchain_core.output_parsers import LineListOutputParser
2. 创建解析器对象
parser = LineListOutputParser()
3. 解析 LLM 的原始输出
假设 LLM 返回的文本是:
Apple
Banana
Orange
你可以这样解析:
raw_output = """Apple
Banana
Orange"""
result = parser.parse(raw_output)
print(result)
🔽 输出将是:
['Apple', 'Banana', 'Orange']
即:将每一行作为一个元素,返回一个字符串列表。
四、与 Prompt 搭配使用(推荐方式)
在实际使用中,你通常不会单独调用 parser.parse(),而是将 LineListOutputParser与 PromptTemplate 和 LLM Chain 配合使用,让整个流程自动化:
示例:让 LLM 列举水果,并自动解析为列表
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import LineListOutputParser
from langchain_community.llms import HuggingFaceHub # 或其他 LLM
# 1. 定义输出解析器
parser = LineListOutputParser()
# 2. 定义 prompt,提示 LLM 按行输出
format_instructions = parser.get_format_instructions()
prompt_template = """
请列出三种你最喜欢的水果,每种水果占一行,不要编号,不要多余解释。
{format_instructions}
"""
prompt = PromptTemplate(
template=prompt_template,
input_variables=[],
partial_variables={"format_instructions": format_instructions}
)
# 3. 模拟 LLM 输出(实际中会调用真正的 LLM)
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
# 假定 LLM 返回的内容是:
raw_llm_output = """Apple
Banana
Orange"""
# 4. 解析输出
result_list = parser.parse(raw_llm_output)
print(result_list)
# 输出:['Apple', 'Banana', 'Orange']
✅ 提示:
get_format_instructions()方法会返回一段说明文字,告诉 LLM 应该怎么输出(比如“每行一个”、“不要编号”等),建议将其通过 Prompt 传递给 LLM,这样能显著提高解析成功率。
五、format_instructions 输出示例
调用:
parser = LineListOutputParser()
print(parser.get_format_instructions())
可能会输出类似如下的说明(具体内容可能因版本略有不同):
Your response should be a list of items, with each item on a new line.
这段文字你可以加入到你的 Prompt 中,提示 LLM 按行输出内容,以方便后续解析。
六、实际应用场景举例
|
场景 |
说明 |
|---|---|
|
列举类任务 |
如“列出5种编程语言”、“列出你认为重要的会议议程” |
|
分步骤说明 |
如“请列出搭建项目的步骤,每步一行” |
|
提取清单 |
如从文本中提取要点、条目,每条一行 |
|
生成选项 |
如“列出可用的支付方式,每行一个” |
配合 Prompt,让 LLM 按行输出,然后用 LineListOutputParser自动解析为 Python List,非常方便后续处理。
七、对比其他 OutputParser
|
解析器 |
作用 |
输出格式 |
|---|---|---|
|
|
按行解析为列表 |
|
|
|
按逗号分隔解析为列表 |
|
|
|
直接返回字符串 |
|
|
|
解析为 JSON 对象 |
|
|
|
更复杂的列表结构 |
依实现而定 |
八、总结
✅ 一句话总结:
LineListOutputParser是 LangChain 提供的一个输出解析器,用于将 LLM 返回的、按行分隔的文本内容,自动解析为一个 Python 字符串列表(List[str]),非常适合用于让 LLM 生成清单、列表类内容的场景。
🔧 使用步骤回顾:
-
导入解析器:
from langchain_core.output_parsers import LineListOutputParser parser = LineListOutputParser() -
(可选)获取格式提示并嵌入 Prompt:
format_instructions = parser.get_format_instructions() -
让 LLM 按行输出内容(通过 Prompt 引导)。
-
解析 LLM 原始输出:
result = parser.parse(llm_raw_output) # 返回 List[str]
🧠 提示:
-
如果你希望 LLM 输出的是 带序号的列表(如 1. Apple, 2. Banana),那么
LineListOutputParser不适用,你可能需要用正则或其他解析器提取内容。 -
如果你希望输出是 JSON 格式的列表,可以考虑使用
JSONOutputParser,并要求 LLM 输出如["A", "B", "C"]。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)