pydantic_ai.messages
ModelMessage的结构可以表示为图形:
graph RL
SystemPromptPart(SystemPromptPart) --- ModelRequestPart
UserPromptPart(UserPromptPart) --- ModelRequestPart
ToolReturnPart(ToolReturnPart) --- ModelRequestPart
RetryPromptPart(RetryPromptPart) --- ModelRequestPart
TextPart(TextPart) --- ModelResponsePart
ToolCallPart(ToolCallPart) --- ModelResponsePart
ModelRequestPart("ModelRequestPart<br>(Union)") --- ModelRequest
ModelRequest("ModelRequest(parts=list[...])") --- ModelMessage
ModelResponsePart("ModelResponsePart<br>(Union)") --- ModelResponse
ModelResponse("ModelResponse(parts=list[...])") --- ModelMessage("ModelMessage<br>(Union)")
系统提示部分
dataclass
系统提示,一般由应用程序开发人员编写。
这为模型提供了上下文和指导,关于如何回应。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
动态引用
class-attribute
instance-attribute
dynamic_ref: str | None = None
生成此部分的动态系统提示函数的引用。
仅在系统提示是动态时设置,请参见 system_prompt 以获取更多信息。
音频网址
dataclass
一个指向音频文件的URL。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | |
图片网址
dataclass
一个指向图像的URL。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
二进制内容
dataclass
二进制内容,例如音频或图像文件。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | |
用户提示部分
dataclass
用户提示,一般由最终用户编写。
内容来自 user_prompt 参数的 Agent.run, Agent.run_sync, 和 Agent.run_stream。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | |
工具返回部分
dataclass
一个工具返回消息,这编码了运行工具的结果。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | |
时间戳
class-attribute
instance-attribute
该工具返回的时间戳。
模型响应字符串
model_response_str() -> str
返回模型内容的字符串表示。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
164 165 166 167 168 169 | |
模型响应对象
返回内容的字典表示,适当地包装非字典类型。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
171 172 173 174 175 176 177 | |
重试提示部分
dataclass
向模型发送的消息,请求它重试。
这可以出于多种原因发送:
- Pydantic工具参数验证失败,这里的内容源自Pydantic
ValidationError - 一个工具引发了
ModelRetry异常 - 未找到该工具名称的工具
- 模型在预期结构化响应时返回了纯文本
- Pydantic对结构化响应的验证失败,这里的内容源自Pydantic
ValidationError - 一个结果验证器引发了一个
ModelRetry异常
Source code in pydantic_ai_slim/pydantic_ai/messages.py
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | |
内容
instance-attribute
content: list[ErrorDetails] | str
模型应当为什么以及如何重试的详细信息。
如果重试是由一个 ValidationError 触发的,这将是一个错误详情的列表。
时间戳
class-attribute
instance-attribute
重试被触发的时间戳。
模型响应
model_response() -> str
返回一条字符串消息,描述为什么请求重试。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
218 219 220 221 222 223 224 225 | |
模型请求部分
module-attribute
ModelRequestPart = Annotated[
Union[
SystemPromptPart,
UserPromptPart,
ToolReturnPart,
RetryPromptPart,
],
Discriminator("part_kind"),
]
PydanticAI 发送给模型的消息部分。
模型请求
dataclass
由 PydanticAI 生成并发送到模型的请求,例如,来自 PydanticAI 应用程序到模型的消息。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
234 235 236 237 238 239 240 241 242 | |
文本部分
dataclass
模型的普通文本响应。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
245 246 247 248 249 250 251 252 253 254 255 256 257 | |
有内容
has_content() -> bool
如果文本内容不为空,则返回 True。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
255 256 257 | |
工具调用部分
dataclass
来自模型的工具。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | |
将参数作为字典
将参数作为Python字典返回。
这只是为需要字典作为输入的模型提供便利。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
279 280 281 282 283 284 285 286 287 288 | |
作为JSON字符串的参数
args_as_json_str() -> str
将参数作为JSON字符串返回。
这只是为了方便需要JSON字符串作为输入的模型。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
290 291 292 293 294 295 296 297 | |
有内容
has_content() -> bool
如果参数包含任何数据,则返回 True。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
299 300 301 302 303 304 305 306 | |
模型响应部分
module-attribute
ModelResponsePart = Annotated[
Union[TextPart, ToolCallPart],
Discriminator("part_kind"),
]
模型返回的消息部分。
模型响应
dataclass
模型的响应,例如,模型向PydanticAI应用程序发送的消息。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 | |
时间戳
class-attribute
instance-attribute
响应的时间戳。
如果模型在响应中提供时间戳(就像OpenAI一样),将使用该时间戳。
模型消息
module-attribute
ModelMessage = Annotated[
Union[ModelRequest, ModelResponse],
Discriminator("kind"),
]
发送到模型或由模型返回的任何消息。
模型消息类型适配器
module-attribute
ModelMessagesTypeAdapter = TypeAdapter(
list[ModelMessage], config=ConfigDict(defer_build=True)
)
Pydantic TypeAdapter 用于 (反)序列化消息。
文本部分增量
dataclass
对TextPart进行部分更新(增量),以附加新的文本内容。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 | |
应用
apply(part: ModelResponsePart) -> TextPart
将此文本增量应用于现有的 TextPart。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
part
|
ModelResponsePart
|
现有的模型响应部分,必须是一个 |
required |
返回:
| 类型 | 描述 |
|---|---|
TextPart
|
一个新的 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果 |
Source code in pydantic_ai_slim/pydantic_ai/messages.py
350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 | |
工具调用部分增量
dataclass
对ToolCallPart的部分更新(增量),以修改工具名称、参数或工具调用ID。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 | |
args_delta
类属性
实例属性
要添加到工具参数的增量数据。
如果这是一个字符串,它将被附加到现有的JSON参数中。如果这是一个字典,它将与现有的字典参数合并。
工具调用ID
类属性
实例属性
tool_call_id: str | None = None
可选的工具调用标识符,这在一些模型中使用,包括OpenAI。
请注意,这永远不会被视为一个增量 — 它可以替换 None,但如果提供了一个不匹配的值,将会引发错误。
as_part
as_part() -> ToolCallPart | None
如果可能,将这个增量转换为完整的 ToolCallPart,否则返回 None。
返回:
| 类型 | 描述 |
|---|---|
ToolCallPart | None
|
如果同时设置了 |
Source code in pydantic_ai_slim/pydantic_ai/messages.py
390 391 392 393 394 395 396 397 398 399 400 401 402 403 | |
应用
apply(part: ModelResponsePart) -> ToolCallPart
apply(
part: ModelResponsePart | ToolCallPartDelta,
) -> ToolCallPart | ToolCallPartDelta
apply(
part: ModelResponsePart | ToolCallPartDelta,
) -> ToolCallPart | ToolCallPartDelta
将此增量应用于一个部分或增量,返回应用了更改的新部分或增量。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
part
|
ModelResponsePart | ToolCallPartDelta
|
现有模型响应部分或更新的增量。 |
required |
返回:
| 类型 | 描述 |
|---|---|
ToolCallPart | ToolCallPartDelta
|
一个新的 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果 |
UnexpectedModelBehavior
|
如果将JSON增量应用于字典参数或反之。 |
Source code in pydantic_ai_slim/pydantic_ai/messages.py
411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 | |
模型响应部分增量
module-attribute
ModelResponsePartDelta = Annotated[
Union[TextPartDelta, ToolCallPartDelta],
Discriminator("part_delta_kind"),
]
任何模型响应部分的局部更新(增量)。
开始事件
dataclass
一个表示新部分已开始的事件。
如果接收到多个相同索引的 PartStartEvent,新的应该完全替代旧的。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | |
部分增量事件
dataclass
一个指示现有部分的增量更新的事件。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
522 523 524 525 526 527 528 529 530 531 532 533 | |
模型响应流事件
module-attribute
ModelResponseStreamEvent = Annotated[
Union[PartStartEvent, PartDeltaEvent],
Discriminator("event_kind"),
]
模型响应流中的一个事件,可以是开始一个新部分或对现有部分应用增量。
函数工具调用事件
dataclass
一个指示调用函数工具开始的事件。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
540 541 542 543 544 545 546 547 548 549 550 551 552 | |
调用ID
class-attribute
instance-attribute
用于将呼叫的详细信息与其结果匹配的ID。如果存在,默认为该部分的tool_call_id。
函数工具结果事件
dataclass
表示函数工具调用结果的事件。
Source code in pydantic_ai_slim/pydantic_ai/messages.py
555 556 557 558 559 560 561 562 563 564 | |
事件类型
类属性
实例属性
event_kind: Literal["function_tool_result"] = (
"function_tool_result"
)
事件类型标识符,用作区分符。