升级指南
在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 中移除cases
和averages
属性 - 请参阅 #2798 - 将
ModelRequest.parts
和ModelResponse.parts
的类型从list
更改为Sequence
- 请参阅 #2726 - 将
InstrumentationSettings
的默认版本设置为 2 - 请参阅 #2717 - 移除了当向
AsyncTenacityTransport
或TenacityTransport
传递AsyncRetrying
或Retrying
对象而非RetryConfig
时产生的错误
v0.x.x
在 V1 之前,次要版本曾被用来引入重大变更
v0.8.0 (2025-08-26)
请参阅 #2689 - AgentStreamEvent
被扩展为 ModelResponseStreamEvent
和 HandleResponseEvent
的联合类型,简化了 event_stream_handler
函数的签名。现有接受 AgentStreamEvent | HandleResponseEvent
的代码将继续工作。
v0.7.6 (2025-08-26)
以下重大变更被无意中发布在一个补丁版本中,而非次要版本
请参阅 #2670 - TenacityTransport
和 AsyncTenacityTransport
现在要求使用 pydantic_ai.retries.RetryConfig
(它只是一个包含传递给 tenacity.retry
的关键字参数的 TypedDict
),而不是 tenacity.Retrying
或 tenacity.AsyncRetrying
。
v0.7.0 (2025-08-12)
请参阅 #2458 - pydantic_ai.models.StreamedResponse
现在会随现有的 PartStartEvent
和 PartDeltaEvent
一起产生一个 FinalResultEvent
。如果您正在使用 pydantic_ai.direct.model_request_stream
或 pydantic_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_type
、result_tool_name
和 result_tool_description
参数。请改用 output_type
。
请参阅 #2441 - result_retries
参数也从 Agent
类中移除。请改用 output_retries
。
请参阅 #2443 - 从 FinalResult
类中移除了 data
属性。请改用 output
。
请参阅 #2445 - 从 StreamedRunResult
类中移除了 get_data
和 validate_structured_result
方法。请改用 get_output
和 validate_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 - EvaluationResult
的 source
字段现在是 EvaluatorSpec
类型,而不是实际的源 Evaluator
实例,以帮助序列化/反序列化。
请参阅 #2163 - EvaluationReport.print
和 EvaluationReport.console_table
方法现在要求大多数参数通过关键字传递。
v0.4.0 (2025-07-08)
请参阅 #1799 - Pydantic Evals 的 EvaluationReport
和 ReportCase
现在是泛型数据类(generic dataclasses),而不是 Pydantic 模型。如果您之前使用 model_dump()
对它们进行序列化,现在需要改用 EvaluationReportAdapter
和 ReportCaseAdapter
类型适配器。
请参阅 #1507 - ToolDefinition
的 description
参数现在是可选的,并且位置参数的顺序已从 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
。希望所有的变更都保留了使用旧名称的已弃用属性或参数,因此您应该会收到许多弃用警告。
请参阅 #1484 — format_as_xml
被移动并可以从包的根目录导入,例如 from pydantic_ai import format_as_xml
。