当前位置: 首页 > news >正文

19. 大模型输出乱成渣?3个解析器轻松转成标准列表!

做AI应用开发最头疼的事之一,就是大模型的输出永远不按你想要的格式来。明明要求返回一个列表,结果它要么加一堆无关的开场白和结束语,要么格式五花八门,手动写正则处理不仅麻烦,还经常漏各种边界情况。

其实 LangChain 早就为我们准备好了现成的解决方案 ——ListOutputParser 系列解析器,能直接把大模型的自然语言输出,精准转换成程序能直接处理的标准字符串列表。下面这三个最常用的解析器,覆盖了绝大多数列表格式的需求。

视频在这里《19. 大模型输出乱成渣?3个解析器轻松转成标准列表!》。

1. CommaSeparatedListOutputParser:简单逗号分隔列表

这是最基础也最常用的解析器,专门处理用英文逗号分隔的连续文本,会自动拆分并去除多余空格,输出干净的字符串列表。适合只需要纯文本条目、不需要额外说明的简单场景。

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import CommaSeparatedListOutputParser# 定义通用提示词模板
prompt = ChatPromptTemplate.from_messages([{"role": "system", "content": "你是一位有10年经验的资深软件工程师。{format_instructions}"},{"role": "user", "content": "{new_input}"}]
)# 创建逗号分隔列表解析器
parser = CommaSeparatedListOutputParser()
# 获取解析器自带的格式指令,自动告诉大模型该怎么输出
format_instructions = parser.get_format_instructions()# 传入参数生成完整提示词
prompt_value = prompt.invoke({"format_instructions": format_instructions,"new_input": "请列出5种热门的编程语言。"}
)# 调用大模型并解析结果
res = llm.invoke(prompt_value, config=config)
result = parser.invoke(res)
print(result)
# 输出示例:['Python', 'JavaScript', 'Java', 'C++', 'Go']

2. MarkdownListOutputParser:带说明的无序列表

如果你的需求不只是纯文本条目,还需要每个条目附带简短说明,那 MarkdownListOutputParser 会更合适。它能自动识别以+、-、*开头的 Markdown 无序列表项,提取内容后还支持保留冒号分隔的键值对格式。

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import MarkdownListOutputParserprompt = ChatPromptTemplate.from_messages([{"role": "system", "content": "你是一位有10年经验的资深软件工程师。{format_instructions}"},{"role": "user", "content": "{new_input}"}]
)# 创建Markdown无序列表解析器
parser = MarkdownListOutputParser()
format_instructions = parser.get_format_instructions()prompt_value = prompt.invoke({"format_instructions": format_instructions,"new_input": "请列出5种热门的编程语言,并简要说明每种的特点。"}
)res = llm.invoke(prompt_value, config=config)
result = parser.invoke(res)
print(result)
# 输出示例:
# [
#   'Python: 语法简洁,生态丰富,适合AI、数据分析和后端开发',
#   'JavaScript: 前端开发必备,也可通过Node.js做后端',
#   'Java: 跨平台性好,广泛用于企业级应用开发',
#   'C++: 性能极高,适合游戏引擎、操作系统等底层开发',
#   'Go: 天生支持并发,部署简单,适合云原生应用'
# ]

3. NumberedListOutputParser:有序步骤列表

对于需要按顺序呈现的内容,比如操作步骤、流程说明,NumberedListOutputParser 是最佳选择。它会精准匹配以 “阿拉伯数字 + 英文句点” 开头的有序列表,自动剥离编号前缀,同时严格保持原有的顺序不变。

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import NumberedListOutputParserprompt = ChatPromptTemplate.from_messages([{"role": "system", "content": "你是一位有10年经验的资深软件工程师。{format_instructions}"},{"role": "user", "content": "{new_input}"}]
)# 创建有序列表解析器
parser = NumberedListOutputParser()
format_instructions = parser.get_format_instructions()prompt_value = prompt.invoke({"format_instructions": format_instructions,"new_input": "请列出程序员从早上到公司到下班离开的完整上班步骤"}
)res = llm.invoke(prompt_value, config=config)
result = parser.invoke(res)# 可以重新编号输出,也可以直接用列表做后续逻辑处理
for step_num, step_content in enumerate(result, 1):print(f"{step_num}. {step_content}")

这三个解析器的核心优势在于,它们会自动生成标准化的格式指令传给大模型,同时内置了完善的容错处理,能应对大模型输出的各种小偏差。不用再写冗长复杂的正则表达式,也不用反复调整提示词去约束输出格式,几行代码就能让大模型的输出直接接入业务逻辑,大幅提升开发效率。

http://www.jsqmd.com/news/846856/

相关文章:

  • P1192 台阶问题
  • AIGC 检测算法 1.0 到 4.0 升级了什么?嘎嘎降 AI 实测 80% AI 率降到 6% 答辩稳过
  • 做 TikTok 出海用什么 AI 视频工具好?跨境带货 AI 工具怎么选更省心
  • ROS仿真小车(一)—— 从零构建URDF模型与Rviz可视化调试
  • STM32 IAP实战:用CubeMX和串口给F4芯片远程升级固件(附完整代码)
  • 团队冲刺个人博客——5.19
  • 用C语言实现洛希极限计算:从《流浪地球》的Bug到编程实践
  • AIGC 检测怎么识别 ChatGPT 写作指纹?嘎嘎降 AI 帮你 AI 率从 85% 降到 5%
  • 长上下文LLM推理中的KV缓存剪枝技术与硬件优化
  • 5分钟快速上手Vue FastAPI Admin:现代化前后端分离管理平台完整指南
  • Synopsys ICC 2016环境变量配置详解:从.bashrc编辑到license启动的保姆级步骤
  • MAA明日方舟自动化助手:解放双手的智能游戏伴侣终极指南
  • 【MySQL】基础简记
  • Perplexity图书推荐查询终极提速法:从模糊提问到精准命中,仅需1次Prompt迭代(附可复用提示词库)
  • 从‘电赛实战’到‘产品应用’:聊聊波形识别那些被忽略的简单方法
  • Claude Code 实战复盘:工程师能力地图中 3 类新增核心技能解析
  • AIGC 检测‘句长标准差‘到底是什么?嘎嘎降 AI 帮你 AI 率从 70% 降到 7%
  • Crontab实战指南:从基础配置到高级调试技巧
  • 终极USB安全弹出解决方案:告别Windows设备占用烦恼
  • RK3566安卓11开发板千兆网卡RTL8211F移植避坑指南:从原理图到DTS配置全流程
  • JetBrains IDE试用期重置终极指南:如何永久免费使用专业开发工具
  • 为Hermes Agent配置Taotoken作为自定义模型供应商的步骤详解
  • 【权威认证】Perplexity营养查询避坑清单:11类常见误判场景及FDA级校验方案
  • 量子机器学习与几何视角的融合实践
  • 从咖啡豆到完美风味:Artisan烘焙软件如何将科学数据转化为艺术创作?
  • 5大技术模块深度解析:基于Simscape Electrical的无刷直流电机控制仿真
  • 月度补丁如何落地?Claude Code 在商业项目中实现版本追新的 4 步更新机制
  • ViT实战避坑指南:为什么你的小数据集上效果不如CNN?数据、算力与调参全解析
  • CVE-2024-23334:AIOHTTP静态路由配置缺陷与目录遍历漏洞深度剖析
  • 树莓派命令行保姆级避坑指南:从sudo权限到安全关机,别再乱敲命令了