尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
第 03 课:结构化输出与解析
第 03 课结构化输出与解析配套代码仓库https://gitee.com/wang-zeyong111/lang-chain-lecture本课定位自然语言适合人读结构化数据适合程序处理。只要你的 LLM 输出要进入后续业务逻辑例如分类、抽取、路由、写数据库、触发工具就应该优先考虑结构化输出。学习目标理解结构化输出的工程价值。使用 Pydantic 定义输出 schema。理解 ProviderStrategy 与 ToolStrategy。学会用结构化结果做分类和抽取。掌握结构化输出失败时的处理思路。一、为什么不能只依赖自然语言假设模型回答这个用户看起来比较着急可能是技术问题建议尽快处理。人能看懂但程序很难稳定判断类别是什么优先级是什么是否需要转人工理由字段是什么能否写入数据库。结构化输出可以要求模型返回{category:technical,priority:high,reason:登录失败影响发布}这样下游代码可以直接使用。二、Pydantic schemaPydantic 是 Python 中常用的数据校验库。用它定义结构化输出有三个好处字段清楚类型清楚校验失败时能得到明确错误。示例fromtypingimportLiteralfrompydanticimportBaseModel,FieldclassTicketClassification(BaseModel):category:Literal[billing,technical,account,other]priority:Literal[low,medium,high]reason:strField(description分类理由)Literal可以限制字段取值避免模型自由发挥。三、结构化输出的两种主流策略ProviderStrategy由模型供应商原生支持结构化输出。优点是更可靠因为供应商 API 会约束输出格式。缺点是并非所有模型都支持。适合OpenAI 等支持原生结构化输出的模型高可靠性分类和抽取生产场景。ToolStrategy把结构化输出当作一种特殊工具调用。优点是适配面更广许多支持工具调用的模型都能用。缺点是稳定性通常略低于原生结构化输出。适合模型不支持原生结构化输出Agent 中需要统一使用工具调用机制多 schema 选择。四、with_structured_output对于单次模型调用可以使用structured_modelmodel.with_structured_output(TicketClassification)resultstructured_model.invoke(用户无法登录影响发布)这适合固定任务例如文本分类、字段抽取、评论分析。五、Agent 的response_format如果任务需要 Agent例如还要检索、调用工具、多步判断就可以在create_agent中使用response_formatagentcreate_agent(modelopenai:gpt-5-nano,tools[...],response_formatTicketClassification,)resultagent.invoke({messages:[...]})classificationresult[structured_response]注意结构化结果通常不在最终文本里而在structured_response字段中。六、结构化输出设计原则字段少而关键不要一开始设计二十个字段。字段越多模型越容易出错业务也越难解释。枚举值要明确能用Literal就不要让模型自由写。例如优先级用low | medium | high。字段描述要写给模型看Field(description...)会帮助模型理解字段用途。允许不确定如果业务允许增加confidence;missing_info;needs_human_review;reason。这比强迫模型装作确定更安全。七、错误处理结构化输出可能失败模型返回缺字段字段值不在枚举中JSON 格式不合法一次返回多个结构工具调用参数不符合 schema。处理方式降低 temperature改善字段描述使用供应商原生结构化输出使用 ToolStrategy 的错误重试对失败结果转人工或降级处理把失败案例加入评估集。八、分类与抽取的区别分类是从固定标签中选工单类别情绪风险等级是否转人工。抽取是从文本中提取字段姓名电话日期金额任务负责人。两者都适合结构化输出但 schema 设计不同。分类更依赖枚举抽取更依赖字段描述和可空设计。九、常见坑schema 字段太多导致模型不稳定。枚举值设计含糊例如urgent和high同时存在。prompt 要求输出 JSON但没有校验。结构化输出失败后没有降级策略。忽略structured_response只看最终文本。十、自测清单我能解释为什么结构化输出比自然语言更适合程序处理。我能用 Pydantic 定义一个分类 schema。我知道 ProviderStrategy 和 ToolStrategy 的区别。我知道 Agent 结构化结果在哪里读取。我能为失败输出设计重试或降级方案。十一、课后练习定义一个ProductReviewschema包含评分、情绪、关键词。定义一个RagAnswerschema包含答案、来源、置信度、缺失信息。用 5 条文本手动模拟模型输出并用 Pydantic 验证。故意构造错误字段观察校验错误信息。
RELATED

相关推荐

ChatGPT生成JSON Schema必须禁用的6类关键词(附AST级schema语法树校验Python脚本)

ChatGPT生成JSON Schema必须禁用的6类关键词(附AST级schema语法树校验Python脚本)

更多请点击: https://codechina.net 第一章:ChatGPT生成JSON Schema的典型风险与本质成因 ChatGPT在辅助生成JSON Schema时,常因缺乏对Schema规范的深层语义理解而引入隐蔽性缺陷。这些缺陷并非偶然错误,而是模型在训练数据偏差…

📅 2026/10/26 12:30:29
浏览器插件安全与隐私分析:以摸鱼王为例的5项本地存储检查

浏览器插件安全与隐私分析:以摸鱼王为例的5项本地存储检查

浏览器插件安全与隐私深度指南:从权限审查到本地存储分析 你是否曾在GitHub上发现一个功能诱人的浏览器插件,却对它的安全性心存疑虑?在数字时代,浏览器插件已成为我们日常网络生活的延伸,但它们也可能成为隐私泄露的隐…

📅 2026/10/25 17:04:02
Cursor AI生成的Angular组件如何通过NgRx状态流校验?一线架构师亲测的5层验证协议首次公开

Cursor AI生成的Angular组件如何通过NgRx状态流校验?一线架构师亲测的5层验证协议首次公开

更多请点击: https://kaifayun.com 第一章:Cursor AI生成Angular组件的NgRx状态流校验全景图 Cursor AI在生成Angular组件时,可自动推导并注入符合NgRx最佳实践的状态管理结构,但其输出需经系统性校验以确保状态流的完整性、不可…

📅 2026/10/26 2:52:12
MORE NEWS

更多资讯

📰

燕郊电工证费用多少 怎么报名学历不高也能行

燕郊电工证费用多少 怎么报名学历不高也能行 你是不是也担心自己学历不高,根本报不上电工证?别急,今天咱们就来聊聊 燕郊电工证费用 到底多少, 怎么报名…

📰

工地太忙根本没时间复习考试?国家免费电工证培训+电子证书全流程攻略

工地太忙根本没时间复习考试?国家免费电工证培训+电子证书全流程攻略 工地太忙根本没时间复习考试,还总担心自己考不过?三门峡应届工程类毕业生,你不是一个人在战斗。别急,国家免费电工证培训政策早就帮你安排好了,而且考试通过后还能直接下载…

📰

中牟电工证分类有几种网上查询实操考试心里没底怕挂科怎么破

中牟电工证分类有几种网上查询实操考试心里没底怕挂科怎么破 实操考试心里没底怕挂科?中牟电工证分类有几种网上查询让你一目了然,还能提前准备,避免白跑一趟。…

📰

职业鉴定中心查电工证怎么考

电工证怎么考?学历不高怕报不上名?通过率揭秘来了 你是不是也担心自己学历不高,报不了电工证?别急,这玩意儿还真不是看学历的,关键是你能不能通过培训和考试。今天就来聊一聊【职业鉴定中心查电工证】到底怎么考,尤其是像我们三门峡这些中小施工企业负…

📰

寿县怎么报名考电工证官方报名入口在哪儿怎么考过实操考试

寿县怎么报名考电工证官方报名入口在哪儿怎么考过实操考试 实操考试心里没底怕挂科,你不是一个人。很多在寿县准备考电工证的朋友,最担心的就是考试现场手忙脚乱,操作不规范,直接被刷下来。其实,只要掌握好报名流程、考试内容和备考方法,就能大大降低挂…

📰

编号s开头的电工证怎么考?学历不高怕报不上名?考前押题能帮你

编号s开头的电工证怎么考?学历不高怕报不上名?考前押题能帮你 你是不是也担心学历不高,考编号s开头的电工证会不会被拒?其实很多人都是从零基础开始的,关键是要找对方法。编号s开头的电工证在很多行业中都是必备的,特别是在电力、建筑、制造等领域。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬