跳转到内容

升级指南

在2025年9月,Pydantic AI 达到了 V1 版本,这意味着我们承诺保持 API 的稳定性:直到 V2 版本,我们不会引入会破坏您代码的变更(如果我们这样做了,您可以尽管指责我们,因为这绝对是个错误)。一旦我们发布 V2(最早在2026年4月),我们将继续为 V1 提供至少6个月的安全修复,以便您有时间升级您的应用程序。

重大变更

这里是每个版本的重大变更筛选列表,以帮助您升级 Pydantic AI。

v1.0.0 (2025-09-04)

  • 请参阅 #2725 - 放弃对 Python 3.9 的支持
  • 请参阅 #2738 - 使许多数据类(dataclass)需要关键字参数
  • 请参阅 #2715 - 从 pydantic_evals spans 中移除 casesaverages 属性
  • 请参阅 #2798 - 将 ModelRequest.partsModelResponse.parts 的类型从 list 更改为 Sequence
  • 请参阅 #2726 - 将 InstrumentationSettings 的默认版本设置为 2
  • 请参阅 #2717 - 移除了当向 AsyncTenacityTransportTenacityTransport 传递 AsyncRetryingRetrying 对象而非 RetryConfig 时产生的错误

v0.x.x

在 V1 之前,次要版本曾被用来引入重大变更

v0.8.0 (2025-08-26)

请参阅 #2689 - AgentStreamEvent 被扩展为 ModelResponseStreamEventHandleResponseEvent 的联合类型,简化了 event_stream_handler 函数的签名。现有接受 AgentStreamEvent | HandleResponseEvent 的代码将继续工作。

v0.7.6 (2025-08-26)

以下重大变更被无意中发布在一个补丁版本中,而非次要版本

请参阅 #2670 - TenacityTransportAsyncTenacityTransport 现在要求使用 pydantic_ai.retries.RetryConfig(它只是一个包含传递给 tenacity.retry 的关键字参数的 TypedDict),而不是 tenacity.Retryingtenacity.AsyncRetrying

v0.7.0 (2025-08-12)

请参阅 #2458 - pydantic_ai.models.StreamedResponse 现在会随现有的 PartStartEventPartDeltaEvent 一起产生一个 FinalResultEvent。如果您正在使用 pydantic_ai.direct.model_request_streampydantic_ai.direct.model_request_stream_sync,您可能需要更新您的代码以适应此变更。

请参阅 #2458 - pydantic_ai.models.Model.request_stream 现在接收一个 run_context 参数。如果您实现了自定义的 Model 子类,您需要考虑此变更。

请参阅 #2458 - pydantic_ai.models.StreamedResponse 现在需要一个 model_request_parameters 字段和构造函数参数。如果您实现了自定义的 Model 子类并实现了 request_stream,您需要考虑此变更。

v0.6.0 (2025-08-06)

此版本旨在清理一些旧的已弃用代码,以便我们能更接近 V1。

请参阅 #2440 - 从 Graph 类中移除了 next 方法。请改用 async with graph.iter(...) as run: run.next()

请参阅 #2441 - 从 Agent 类中移除了 result_typeresult_tool_nameresult_tool_description 参数。请改用 output_type

请参阅 #2441 - result_retries 参数也从 Agent 类中移除。请改用 output_retries

请参阅 #2443 - 从 FinalResult 类中移除了 data 属性。请改用 output

请参阅 #2445 - 从 StreamedRunResult 类中移除了 get_datavalidate_structured_result 方法。请改用 get_outputvalidate_structured_output

请参阅 #2446 - format_as_xml 函数已移至 pydantic_ai.format_as_xml 模块。请改用 from pydantic_ai import format_as_xml 导入。

请参阅 #2451 - 移除了已弃用的 Agent.result_validator 方法、Agent.last_run_messages 属性、AgentRunResult.data 属性以及结果类中的 result_tool_return_content 参数。

v0.5.0 (2025-08-04)

请参阅 #2388 - EvaluationResultsource 字段现在是 EvaluatorSpec 类型,而不是实际的源 Evaluator 实例,以帮助序列化/反序列化。

请参阅 #2163 - EvaluationReport.printEvaluationReport.console_table 方法现在要求大多数参数通过关键字传递。

v0.4.0 (2025-07-08)

请参阅 #1799 - Pydantic Evals 的 EvaluationReportReportCase 现在是泛型数据类(generic dataclasses),而不是 Pydantic 模型。如果您之前使用 model_dump() 对它们进行序列化,现在需要改用 EvaluationReportAdapterReportCaseAdapter 类型适配器。

请参阅 #1507 - ToolDefinitiondescription 参数现在是可选的,并且位置参数的顺序已从 name, description, parameters_json_schema, ... 更改为 name, parameters_json_schema, description, ... 以适应此变更。

v0.3.0 (2025-06-18)

请参阅 #1142 — 增加对思考部分(thinking parts)的支持。

我们现在将特定于提供商的文本部分中的思考块("<think>..."</think>")转换为 Pydantic AI 的 ThinkingPart。此外,作为此版本的一部分,我们决定不将 ThinkingPart 发回给提供商——其目的是为用户节省成本。未来,我们打算增加一个设置来定制此行为。

v0.2.0 (2025-05-12)

请参阅 #1647 — usage 作为 ModelResponse 的一部分更有意义,并且在“消息”(实际上是请求和响应的序列)中可能非常有用。在此 PR 中:

  • ModelResponse 添加 usage(该字段有一个默认工厂 Usage(),因此加载不含 usage 的数据时也能正常工作)
  • Model.request 的返回类型从 tuple[ModelResponse, Usage] 更改为仅 ModelResponse

v0.1.0 (2025-04-15)

请参阅 #1248 — 属性/参数名称 result 在多处被重命名为 output。希望所有的变更都保留了使用旧名称的已弃用属性或参数,因此您应该会收到许多弃用警告。

请参阅 #1484format_as_xml 被移动并可以从包的根目录导入,例如 from pydantic_ai import format_as_xml

完整更新日志

有关完整的更新日志,请参阅 GitHub Releases