Pydantic AI 流式输出实战:一条 run_stream 流通文本、结构与断流恢复
Pydantic AI 流式输出实战一条 run_stream 流通文本、结构与断流恢复【免费下载链接】pydantic-aiHow Python does AI. Agents, realtime voice, image generation, embeddings. Every model, every interface, typed end to end.项目地址: https://gitcode.com/GitHub_Trending/py/pydantic-ai用 Pydantic AI 做 AI 应用时流式输出基本是默认需求用户等不起整段回答生成完。这个框架把流式收敛到同一个入口Agent.run_stream()文本、结构化数据、工具调用、中断恢复都从它派生。下面按「先跑通 → 加验证 → 加工具 → 加容错」的顺序走一遍每步只加一个能力。从 run_stream 拿到实时文本最小形态run_stream(prompt)返回上下文管理器形式的结果对象在里面迭代stream_text()就能拿到文本。默认它每次 yield 的是「截至当前的完整文本」想要每次只拿新增片段就传deltaTrue。async with agent.run_stream(用一句话介绍 Pydantic AI) as result: async for text in result.stream_text(): print(text, end, flushTrue) print(result.usage)这段代码把累积文本直接打到终端退出上下文后用result.usage拿到本次运行的 token 用量。注意stream_text()只适用于文本输出output_type是结构化类型时直接调用会抛UserError而且它不执行TextOutput函数需要那套转换逻辑时改用下一节的stream_output()。结构化输出边生成边做增量验证把output_type设成 Pydantic 模型或 TypedDict 后stream_output()每次 yield 的都是一个已验证的对象。区别在于中间每次 yield 走的是部分校验内部按allow_partialTrue处理某次校验失败只会被静默跳过不中断循环最后一次 yield 则一定做一次完整校验并保证是最终结果。实践含义中间值只管上屏渲染落库、发通知这类动作要等最后一个 yield。agent Agent(openai:gpt-4o, output_typelist[Whale]) async with agent.run_stream(生成 5 种鲸鱼的信息) as result: async for whales in result.stream_output(debounce_by0.01): table.update(whales)这里debounce_by0.01表示把 10 毫秒内的分块合并成一次再校验官方示例 examples/pydantic_ai_examples/stream_whales.py 正是靠它把表格逐行刷新出来。debounce_by 到底设多大默认值是 0.1 秒None表示不合并。列表或对象越大每次校验的开销越高源码注释里明确建议对较长的结构化响应做合并延迟敏感的界面降到 0.01 左右普通结构化流用 0.1 就够了。另外如果你的输出函数或校验器里有副作用用RunContext.partial_output区分「中间值」和「最终值」——流式运行中它对每个部分结果为 True只有最终结果那次是 False。工具调用穿插进来时流会变成什么样agent 中途调用工具时当前这条模型响应结束、工具执行完再开新的响应消费端只需要保持迭代。需要比「验证后的输出」更细的信息时比如确认某次快照里出现了ToolCallPart改用stream_response()它每次 yield 一个ModelResponse快照流式进行中stateincomplete结束时补一个statecomplete被取消则是interrupted的最终快照。⚠️ 有一个容易踩的行为流式模式下run_stream()会把第一个匹配output_type的输出流到即提交相当于early结束策略——如果模型在那之后还想再调工具运行已经结束。需要保证工具全部跑完的场景应改用非流式入口或调整结束策略而不是在流里硬等。流到一半断了取消、重试与断点续传容错分三层框架里都有对应 API主动取消await result.cancel()停止消费当前模型响应并向提供方请求关闭远端是否真的停止生成取决于提供方 SDK但最终快照的state会落成interrupted方便调用方走清理分支。校验重试部分输出没过校验时框架会按重试策略自动发回模型重试ModelRetry上一节里「失败的中间块被跳过」就是这条路径在流上的表现。断点续传流本身是无状态的可靠做法是保存消息历史断线后带着message_history重新发起run_stream从断点继续UI 侧保持渲染即可。最后核对一遍模型兼容性不同提供方在流式下的行为并不完全一致有的提供方工具参数以增量方式给有的每次给全量这层差异框架已经抹平你不用处理真正要确认的是输出模态——流式图像输出依赖模型 profile 的支持不支持的模型在启动时就会抛UserError不会流到一半才发现。换提供方时建议把 whales 那个示例完整跑一遍表格能否稳定逐行刷新比任何单测都直观地反映该提供方流式契约的兼容性。可观测性方面可以接入 Logfire每个流式分块、重试和 token 用量都会落在同一条 trace 里。流式这部分基本就是结果对象上的三个方法stream_text()管纯文本stream_output()管带增量验证的结构化数据stream_response()管看原始快照容错靠cancel()、重试策略和消息历史兜底。想动手的话从 examples/pydantic_ai_examples/stream_markdown.py 这类示例起步参数细节查 docs/output.md 的流式章节和实现 pydantic_ai_slim/pydantic_ai/result.py 就够了。【免费下载链接】pydantic-aiHow Python does AI. Agents, realtime voice, image generation, embeddings. Every model, every interface, typed end to end.项目地址: https://gitcode.com/GitHub_Trending/py/pydantic-ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

基于SSM和微信小程序的快递管理平台:从状态机到系统落地

基于SSM和微信小程序的快递管理平台:从状态机到系统落地

简介:一份面向软件工程及相关专业本科生的毕业设计论文,主题是基于微信小程序的快递管理平台的设计与实现,适合需要完成类似课题或了解移动端管理系统的学生参考。论文从移动互联网背景切入,完整覆盖系统需求分析、功能设计、服务…

2026/9/20 18:58:04 阅读更多 →
Wireshark UDP包被截断?一文读懂TRUNC标志与snaplen设置

Wireshark UDP包被截断?一文读懂TRUNC标志与snaplen设置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 18:58:04 阅读更多 →
PyMOL安装失败原因与跨平台解决方案

PyMOL安装失败原因与跨平台解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 18:58:04 阅读更多 →

最新新闻

后端高频题手机号和验证码大全手写实现避坑指南

后端高频题手机号和验证码大全手写实现避坑指南

后端高频题手机号和验证码大全手写实现避坑指南 复制来的代码跑不通,报错信息看得人头大,这是很多开发者从网上找“手机号和验证码大全”示例时最常见的噩梦。别急着骂人,大部分问题出在环境配置、正则匹配细节以及状态管理的时序逻辑上,这些坑不踩明白,…

2026/9/21 22:05:22 阅读更多 →
OpenFire源码拆解:3步手写实现消息路由,彻底搞懂XMPP底层

OpenFire源码拆解:3步手写实现消息路由,彻底搞懂XMPP底层

OpenFire源码拆解:3步手写实现消息路由,彻底搞懂XMPP底层 刚接手一个企业级IM项目,老板甩来一份OpenFire的部署文档。照着CSDN上的教程配好了端口,Java进程也起来了,但客户端一发消息就卡在“连接中”,抓包看全是XML…

2026/9/21 22:05:22 阅读更多 →
2026最新蓝豹西装面试避坑指南:3步搞定代码调试难题

2026最新蓝豹西装面试避坑指南:3步搞定代码调试难题

2026最新蓝豹西装面试避坑指南:3步搞定代码调试难题 刚拿到 offer 却连基本的调试都搞不定?别慌,这不是你的问题,是传统面试培训的盲区。很多应届生在模拟面试中,面对“蓝豹西装”这类特定业务场景下的代码逻辑题,往往因为复制来的示例代码…

2026/9/21 22:05:22 阅读更多 →
顶会审稿意见(Rebuttal)撰写策略:如何有理有据反驳审稿人的偏见与误解

顶会审稿意见(Rebuttal)撰写策略:如何有理有据反驳审稿人的偏见与误解

顶会审稿意见(Rebuttal)撰写策略:如何有理有据反驳审稿人的偏见与误解在 ACL、EMNLP、NeurIPS、ICLR 等顶级学术会议的投稿周期中,“作者答辩阶段(Author Response / Rebuttal Phase)” 往往是决定一篇处于…

2026/9/21 22:05:22 阅读更多 →
申请著作权避坑指南:3个实战项目血泪教训

申请著作权避坑指南:3个实战项目血泪教训

申请著作权避坑指南:3个实战项目血泪教训 官方文档那厚厚一叠,读完脑子还是一团浆糊?别急,这锅不全是你的。我在多个 实战项目 里,眼睁睁看着团队因为没搞懂 申请著作权…

2026/9/21 22:05:22 阅读更多 →
迪士尼游记:版本升级API全变?新手避坑指南

迪士尼游记:版本升级API全变?新手避坑指南

迪士尼游记:版本升级API全变?新手避坑指南 昨天刚把项目里的核心模块从 v2.3 升到 v4.0,结果一跑起来,满屏都是 TypeError: Cannot read properties of undefined…

2026/9/21 22:04:22 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →