Pydantic AI 于 2026-09-25 发布 v2.51.0:新增 OpenAILiveModel 支持 OpenAI GPT-Live 实时会话,并在 realtime session 上暴露 context_window_used(来自 GPT-Live 上报比例或 response usage);兼容性上对齐 dated gemini-3.8-live 标识、在连接阶段拒绝 Google Affective Dialog,并对强制 tool_choice 的 realtime 调用抛 UserError。PyPI pydantic-ai 2.51.0 已同步。

核心要点速览 (Key Takeaways)

  • ✓发版:v2.51.0 = PyPI pydantic-ai 2.51.0,文档 pydantic.dev/docs/ai
  • ✓实时:新增 **OpenAILiveModel** 对接 GPT-Live(#8390);session 暴露 **context_window_used**(GPT-Live 比例或 response usage,#8803)
  • ✓兼容:匹配 dated `gemini-3.8-live` id;连接时拒绝 `google_affective_dialog`(Gemini 3.1/3.8 Flash Live);Gemini Live close code 改抛 RealtimeError(#8761)
  • ✓安全:OpenAI / Azure OpenAI / xAI 上强制 tool 的 realtime `tool_choice` 直接 UserError(#8755)
  • ✓性能:缓存 agent graph 避免每次 `Agent.run()` 重建(#8658);单子节点时不再起 task group(#8774)
🔬

深度技术解析与实战评估

核心背景与行业痛点

类型安全 Agent 框架要把「结构化输出」与「实时语音/多模态会话」接到同一套 Python API。痛点集中在:OpenAI GPT-Live 与 Gemini Live 各自一套连接语义、上下文窗口占用只能靠猜测、过期模型 id / Affective Dialog 参数在运行中才炸掉、realtime 强制 tool_choice 行为在厂商间不一致。Pydantic AI v2.51.0(2026-09-25)在 2.50.0 DecisionModel 之后,把 Live 面补齐并收紧连接期校验。

架构亮点与底层机制

新增 [OpenAILiveModel](https://github.com/pydantic/pydantic-ai/pull/8390) 对接 OpenAI GPT-Live;realtime session 暴露 context_window_used——优先读 GPT-Live 上报比例,否则从 response usage 推导(#8803)。Gemini Live:匹配带日期的 gemini-3.8-live id,连接阶段直接拒绝 google_affective_dialog(3.1 Flash Live / 3.8 Live),关闭码统一抛 RealtimeError(#8761)。对 OpenAI / Azure OpenAI / xAI,强制工具调用的 realtime tool_choice 改为抛 UserError(#8755)。性能侧:缓存 agent graph,避免每次 Agent.run() 重建(#8658);toolset/capability 只有单个子节点时不再起 task group(#8774);并降低 capability hook 里 RunContext 拷贝开销(#8775)。

权威 Benchmark 与实测跑分对比

官方未发布 SWE-bench / AgentBench 分数。可量化工程指标包括:context_window_used 可用于压测 Live 会话的上下文膨胀;graph 缓存与单子节点 fan-out 优化面向运行时开销而非榜单。开发者应以自有 realtime 场景对比 2.50.0→2.51.0 的连接失败率与窗口占用曲线,而不是依赖笼统排行。

开发者实战落地与开箱指南

安装:pip install -U pydantic-ai==2.51.0(见 PyPI)。文档:pydantic.dev/docs/ai。GPT-Live 走 OpenAILiveModel;若仍用 Gemini Live,请确认模型 id 为 dated 形式并去掉 google_affective_dialog。Realtime 工具策略勿再强制 tool_choice。完整变更见 Release notes 与 compare v2.50.0...v2.51.0。