fasta2a
FastA2A
基类:Starlette
FastA2A库的主类。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/applications.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
|
代理(Broker) 数据类
基类:ABC
代理类负责调度任务。
HTTP服务器使用代理来调度任务。
简单的实现是InMemoryBroker
,它在与HTTP服务器相同的进程中运行任务。尽管如此,这个类可以被扩展以支持远程工作单元。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/broker.py
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
运行任务 抽象方法
异步
run_task(params: TaskSendParams) -> None
发送一个任务给工作单元执行。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/broker.py
30 31 32 33 |
|
取消任务 抽象方法
异步
cancel_task(params: TaskIdParams) -> None
取消一个任务。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/broker.py
35 36 37 38 |
|
接收任务操作 抽象方法
receive_task_operations() -> AsyncIterator[TaskOperation]
从代理接收任务操作。
在多工作单元的设置中,代理需要在工作单元之间轮询任务操作。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/broker.py
46 47 48 49 50 51 52 |
|
技能
基类:TypedDict
技能是智能体可以执行的能力单元。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
179 180 181 182 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 |
|
examples 实例属性
examples: NotRequired[list[str]]
该技能可以执行的示例场景集合。
将被客户端用作理解如何使用该技能的提示。(例如:“我需要一个面包的食谱”)
存储
用于检索和保存任务,以及检索和保存上下文的存储。
存储有两个目的:1. 任务存储:以A2A协议格式存储任务及其状态、产物和消息历史。2. 上下文存储:以针对特定智能体实现优化的格式存储对话上下文。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/storage.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
加载任务 抽象方法
异步
从存储中加载一个任务。
如果未找到任务,则返回None。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/storage.py
25 26 27 28 29 30 |
|
提交任务 抽象方法
异步
向存储提交一个任务。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/storage.py
32 33 34 |
|
更新任务 抽象方法
异步
update_task(
task_id: str,
state: TaskState,
new_artifacts: list[Artifact] | None = None,
new_messages: list[Message] | None = None,
) -> Task
更新任务的状态。如果指定,则追加产物和消息。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/storage.py
36 37 38 39 40 41 42 43 44 |
|
加载上下文 抽象方法
异步
load_context(context_id: str) -> ContextT | None
根据context_id
检索存储的上下文。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/storage.py
46 47 48 |
|
更新上下文 抽象方法
异步
update_context(context_id: str, context: ContextT) -> None
更新context_id
的上下文。
实现智能体可以决定在上下文中存储什么。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/storage.py
50 51 52 53 54 55 |
|
工作单元(Worker) 数据类
工作单元负责执行任务。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/worker.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
run async
run() -> AsyncIterator[None]
运行工作单元。
它连接到代理,并使自己可用于接收命令。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/worker.py
29 30 31 32 33 34 35 36 37 38 |
|
此模块包含智能体卡片的模式。
智能体卡片(AgentCard)
基类:TypedDict
描述一个智能体的卡片。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
|
智能体提供商
基类:TypedDict
智能体的服务提供商。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
72 73 74 75 76 |
|
智能体能力
基类:TypedDict
智能体的能力。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
79 80 81 82 83 84 85 86 87 88 89 90 |
|
HTTP安全方案
基类:TypedDict
HTTP安全方案。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
93 94 95 96 97 98 99 100 101 102 103 |
|
API密钥安全方案
基类:TypedDict
API密钥安全方案。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
106 107 108 109 110 111 112 113 114 115 116 |
|
OAuth2安全方案
基类:TypedDict
OAuth2安全方案。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
119 120 121 122 123 124 125 126 127 |
|
OpenID Connect安全方案
基类:TypedDict
OpenID Connect安全方案。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
130 131 132 133 134 135 136 137 138 |
|
安全方案 模块属性
SecurityScheme = Annotated[
Union[
HttpSecurityScheme,
ApiKeySecurityScheme,
OAuth2SecurityScheme,
OpenIdConnectSecurityScheme,
],
Field(discriminator="type"),
]
用于身份验证的安全方案。
智能体接口
基类:TypedDict
智能体支持的接口。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
148 149 150 151 152 153 154 155 156 157 158 159 |
|
智能体扩展
基类:TypedDict
智能体支持的扩展声明。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
|
技能
基类:TypedDict
技能是智能体可以执行的能力单元。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
179 180 181 182 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 |
|
examples 实例属性
examples: NotRequired[list[str]]
该技能可以执行的示例场景集合。
将被客户端用作理解如何使用该技能的提示。(例如:“我需要一个面包的食谱”)
产物(Artifact)
基类:TypedDict
智能体生成产物作为任务的最终结果。
产物是不可变的,可以命名,并且可以有多个部分。流式响应可以向现有产物追加部分。
单个任务可以生成多个产物。例如,“创建一个网页”可以创建单独的HTML和图像产物。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
|
推送通知配置
基类:TypedDict
推送通知的配置。
A2A支持一种安全的通知机制,智能体可以通过推送通知服务在连接会话之外通知客户端更新。在企业内部和跨企业环境中,智能体验证通知服务的身份、向服务进行身份验证并提供一个将通知与执行任务关联起来的标识符至关重要。
推送通知服务的目标服务器应被视为一个独立的服务,并且不保证(甚至不期望)直接是客户端。此推送通知服务负责对智能体进行身份验证和授权,并将经过验证的通知代理到适当的端点(这可以是任何东西,从发布/订阅队列到电子邮件收件箱或其他服务等)。
对于独立的客户端-智能体对(例如,在受限VPC中的本地服务网格等)或没有企业安全问题的隔离环境中的特定场景,客户端可以选择简单地打开一个端口并充当自己的推送通知服务。任何企业级实现都可能有一个集中的服务,用受信任的通知凭据对远程智能体进行身份验证,并能处理在线/离线场景。(这应被视为类似于移动推送通知服务)。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
250 251 252 253 254 255 256 257 258 259 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 |
|
任务推送通知配置
基类:TypedDict
任务推送通知的配置。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
287 288 289 290 291 292 293 294 295 |
|
消息
基类:TypedDict
消息包含任何非产物的内容。
这可以包括智能体的思考、用户上下文、指令、错误、状态或元数据等。
所有来自客户端的内容都以消息的形式出现。智能体发送消息来沟通状态或提供指令(而生成的结果则作为产物发送)。
一条消息可以有多个部分来表示不同的内容片段。例如,一个用户请求可能包括用户的文本描述,然后是客户端用作上下文的多个文件。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 |
|
文本部分
基类:_BasePart
包含文本的部分。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
346 347 348 349 350 351 352 353 354 |
|
带字节的文件
基类:TypedDict
带有base64编码数据的文件。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
357 358 359 360 361 362 363 364 365 |
|
带URI的文件
基类:TypedDict
带有URI引用的文件。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
368 369 370 371 372 373 374 375 376 |
|
文件部分
基类:_BasePart
包含文件的部分。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
379 380 381 382 383 384 385 386 387 |
|
数据部分
基类:_BasePart
包含结构化数据的部分。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
390 391 392 393 394 395 396 397 398 |
|
Part 模块属性
作为消息或产物的一部分,在客户端和远程智能体之间交换的完整内容片段。
每个部分都有自己的内容类型和元数据。
TaskState 模块属性
TaskState: TypeAlias = Literal[
"submitted",
"working",
"input-required",
"completed",
"canceled",
"failed",
"rejected",
"auth-required",
"unknown",
]
任务的可能状态。
任务状况
基类:TypedDict
任务的状态及附带消息。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
413 414 415 416 417 418 419 420 421 422 423 424 |
|
任务
基类:TypedDict
任务是一个有状态的实体,允许客户端和远程智能体实现特定的结果。
客户端和远程智能体在任务内交换消息。远程智能体生成结果作为产物。任务总是由客户端创建,状态总是由远程智能体确定。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
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 |
|
任务状况更新事件
基类:TypedDict
在消息/流请求期间由服务器发送。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 |
|
任务产物更新事件
基类:TypedDict
在消息/流请求期间由服务器发送。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 |
|
任务ID参数
基类:TypedDict
任务ID的参数。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
506 507 508 509 510 511 |
|
任务查询参数
基类:TaskIdParams
任务的查询参数。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
514 515 516 517 518 519 |
|
消息发送配置
基类:TypedDict
发送消息请求的配置。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 |
|
push_notification_config 实例属性
push_notification_config: NotRequired[
PushNotificationConfig
]
服务器在断开连接时应发送通知的位置。
消息发送参数
基类:TypedDict
message/send方法的参数。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
539 540 541 542 543 544 545 546 547 548 549 550 |
|
任务发送参数
基类:TypedDict
框架内任务执行的内部参数。
注意:这不是A2A协议的一部分 - 它在内部用于代理/工作单元通信。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 |
|
列出任务推送通知配置参数
基类:TypedDict
用于获取与任务关联的pushNotificationConfigurations列表的参数。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
577 578 579 580 581 582 583 584 585 |
|
删除任务推送通知配置参数
基类:TypedDict
用于移除与任务关联的pushNotificationConfiguration的参数。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
588 589 590 591 592 593 594 595 596 597 598 599 |
|
JSONRPC消息
基类:TypedDict
一个JSON RPC消息。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
602 603 604 605 606 607 608 609 |
|
JSONRPC请求
基类:JSONRPCMessage
, Generic[Method, Params]
一个JSON RPC请求。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
616 617 618 619 620 621 622 623 |
|
method 实例属性
method: Method
要调用的方法。
params 实例属性
params: Params
传递给方法的参数。
JSONRPC错误
JSONRPC响应
基类:JSONRPCMessage
, Generic[ResultT, ErrorT]
一个JSON RPC响应。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/schema.py
646 647 648 649 650 |
|
JSONParseError 模块属性
JSONParseError = JSONRPCError[
Literal[-32700], Literal["Invalid JSON payload"]
]
用于解析错误的JSON RPC错误。
InvalidRequestError 模块属性
InvalidRequestError = JSONRPCError[
Literal[-32600],
Literal["Request payload validation error"],
]
用于无效请求的JSON RPC错误。
MethodNotFoundError 模块属性
MethodNotFoundError = JSONRPCError[
Literal[-32601], Literal["Method not found"]
]
用于方法未找到的JSON RPC错误。
InvalidParamsError 模块属性
InvalidParamsError = JSONRPCError[
Literal[-32602], Literal["Invalid parameters"]
]
用于无效参数的JSON RPC错误。
InternalError 模块属性
InternalError = JSONRPCError[
Literal[-32603], Literal["Internal error"]
]
用于内部错误的JSON RPC错误。
TaskNotFoundError 模块属性
TaskNotFoundError = JSONRPCError[
Literal[-32001], Literal["Task not found"]
]
用于任务未找到的JSON RPC错误。
TaskNotCancelableError 模块属性
TaskNotCancelableError = JSONRPCError[
Literal[-32002], Literal["Task not cancelable"]
]
用于任务不可取消的JSON RPC错误。
PushNotificationNotSupportedError 模块属性
PushNotificationNotSupportedError = JSONRPCError[
Literal[-32003],
Literal["Push notification not supported"],
]
用于不支持推送通知的JSON RPC错误。
UnsupportedOperationError 模块属性
UnsupportedOperationError = JSONRPCError[
Literal[-32004],
Literal["This operation is not supported"],
]
用于不支持的操作的JSON RPC错误。
ContentTypeNotSupportedError 模块属性
ContentTypeNotSupportedError = JSONRPCError[
Literal[-32005], Literal["Incompatible content types"]
]
用于不兼容内容类型的JSON RPC错误。
InvalidAgentResponseError 模块属性
InvalidAgentResponseError = JSONRPCError[
Literal[-32006], Literal["Invalid agent response"]
]
用于无效智能体响应的JSON RPC错误。
SendMessageRequest 模块属性
SendMessageRequest = JSONRPCRequest[
Literal["message/send"], MessageSendParams
]
用于发送消息的JSON RPC请求。
SendMessageResponse 模块属性
SendMessageResponse = JSONRPCResponse[
Union[Task, Message], JSONRPCError[Any, Any]
]
发送消息的JSON RPC响应。
StreamMessageRequest 模块属性
StreamMessageRequest = JSONRPCRequest[
Literal["message/stream"], MessageSendParams
]
用于流式传输消息的JSON RPC请求。
GetTaskRequest 模块属性
GetTaskRequest = JSONRPCRequest[
Literal["tasks/get"], TaskQueryParams
]
用于获取任务的JSON RPC请求。
CancelTaskRequest 模块属性
CancelTaskRequest = JSONRPCRequest[
Literal["tasks/cancel"], TaskIdParams
]
用于取消任务的JSON RPC请求。
CancelTaskResponse 模块属性
CancelTaskResponse = JSONRPCResponse[
Task, Union[TaskNotCancelableError, TaskNotFoundError]
]
取消任务的JSON RPC响应。
SetTaskPushNotificationRequest 模块属性
SetTaskPushNotificationRequest = JSONRPCRequest[
Literal["tasks/pushNotification/set"],
TaskPushNotificationConfig,
]
用于设置任务推送通知的JSON RPC请求。
SetTaskPushNotificationResponse 模块属性
SetTaskPushNotificationResponse = JSONRPCResponse[
TaskPushNotificationConfig,
PushNotificationNotSupportedError,
]
设置任务推送通知的JSON RPC响应。
GetTaskPushNotificationRequest 模块属性
GetTaskPushNotificationRequest = JSONRPCRequest[
Literal["tasks/pushNotification/get"], TaskIdParams
]
用于获取任务推送通知的JSON RPC请求。
GetTaskPushNotificationResponse 模块属性
GetTaskPushNotificationResponse = JSONRPCResponse[
TaskPushNotificationConfig,
PushNotificationNotSupportedError,
]
获取任务推送通知的JSON RPC响应。
ResubscribeTaskRequest 模块属性
ResubscribeTaskRequest = JSONRPCRequest[
Literal["tasks/resubscribe"], TaskIdParams
]
用于重新订阅任务的JSON RPC请求。
ListTaskPushNotificationConfigRequest 模块属性
ListTaskPushNotificationConfigRequest = JSONRPCRequest[
Literal["tasks/pushNotificationConfig/list"],
ListTaskPushNotificationConfigParams,
]
用于列出任务推送通知配置的JSON RPC请求。
DeleteTaskPushNotificationConfigRequest 模块属性
DeleteTaskPushNotificationConfigRequest = JSONRPCRequest[
Literal["tasks/pushNotificationConfig/delete"],
DeleteTaskPushNotificationConfigParams,
]
用于删除任务推送通知配置的JSON RPC请求。
A2ARequest 模块属性
A2ARequest = Annotated[
Union[
SendMessageRequest,
StreamMessageRequest,
GetTaskRequest,
CancelTaskRequest,
SetTaskPushNotificationRequest,
GetTaskPushNotificationRequest,
ResubscribeTaskRequest,
ListTaskPushNotificationConfigRequest,
DeleteTaskPushNotificationConfigRequest,
],
Discriminator("method"),
]
向A2A服务器发出的JSON RPC请求。
A2AResponse 模块属性
A2AResponse: TypeAlias = Union[
SendMessageResponse,
GetTaskResponse,
CancelTaskResponse,
SetTaskPushNotificationResponse,
GetTaskPushNotificationResponse,
]
来自A2A服务器的JSON RPC响应。
A2A客户端
A2A协议的客户端。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/client.py
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
send_message 异步
send_message(
message: Message,
*,
metadata: dict[str, Any] | None = None,
configuration: MessageSendConfiguration | None = None
) -> SendMessageResponse
使用A2A协议发送一条消息。
返回一个包含结果(任务)或错误的JSON-RPC响应。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/client.py
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
意外响应错误
基类:Exception
当从服务器收到意外响应时引发的错误。
源代码位于 .venv/lib/python3.12/site-packages/fasta2a/client.py
78 79 80 81 82 83 |
|