5. 启动服务器¶
现在我们有了 Agent Card 和智能体执行器,我们可以设置并启动 A2A 服务器。
A2A Python SDK 提供了一个 A2AStarletteApplication 类,简化了运行符合 A2A 标准的 HTTP 服务器。它使用 Starlette 作为 Web 框架,通常与 Uvicorn 等 ASGI 服务器一起运行。
Helloworld 中的服务器设置¶
让我们再次查看 __main__.py,看看服务器是如何初始化和启动的。
让我们分解一下:
-
DefaultRequestHandler:- SDK 提供了
DefaultRequestHandler。这个处理程序接收您的AgentExecutor实现(这里是HelloWorldAgentExecutor)和TaskStore(这里是InMemoryTaskStore)。 - 它将传入的 A2A RPC 调用路由到您的执行器的适当方法(如
execute或cancel)。 TaskStore由DefaultRequestHandler使用来管理任务的生命周期,特别是对于有状态的交互、流式传输和重新订阅。即使您的智能体执行器很简单,处理程序也需要任务存储。
- SDK 提供了
-
A2AStarletteApplication:A2AStarletteApplication类使用agent_card和request_handler(在其构造函数中称为http_handler)进行实例化。agent_card至关重要,因为服务器将在/.well-known/agent-card.json端点(默认情况下)暴露它。request_handler负责通过与您的AgentExecutor交互来处理所有传入的 A2A 方法调用。
-
uvicorn.run(server_app_builder.build(), ...):A2AStarletteApplication有一个build()方法,用于构建实际的 Starlette 应用程序。- 然后使用
uvicorn.run()运行此应用程序,使您的智能体可通过 HTTP 访问。 host='0.0.0.0'使服务器在您机器上的所有网络接口上可访问。port=9999指定监听端口。这与AgentCard中的url匹配。
运行 Helloworld 服务器¶
在终端中导航到 a2a-samples 目录(如果还没有在那里),并确保您的虚拟环境已激活。
运行 Helloworld 服务器:
您应该看到类似这样的输出,表明服务器正在运行:
INFO: Started server process [xxxxx]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:9999 (Press CTRL+C to quit)
您的 A2A Helloworld 智能体现在已上线并准备接收请求!在下一步中,我们将与它交互。