注释
适用于 .NET 的自托管协议助手即将推出。 托管模型将使应用程序拥有其服务器、状态和协议集成。
注释
Go 目前尚不支持自托管协议辅助程序。
通过自承载,可以在自己的 Web 应用程序、容器、服务或运行时中运行 Agent Framework 代理或工作流。 应用程序控制路由、标识、授权、请求策略、存储、部署和缩放。 根据需要支持的客户端向该服务器添加一个或多个协议集成。
如果需要将代理终结点与现有应用程序基础结构集成,请使用此选项。 如果要Microsoft Foundry 为你运行代理,请参阅 Foundry 托管代理。 如果需要Azure Functions触发器或持久执行,请参阅 Durable Extension。
这些包的设计允许开发人员获得最大的灵活性。 这意味着,如果你想构建一个通过 Responses API 暴露代理的主机,并将这些参数用于其他目的(即将 temperature 映射为 top_p),你可以这样做。 如果不想存储会话,可以执行此操作,如果想要允许调用方控制完整的代理运行,也可以执行此操作。 我们不会干预;对于常见情况,我们提供辅助工具,其余部分则由你自己负责处理,这样你就能构建出完全符合自己需求的主机。
Important
agent-framework-hosting、、agent-framework-hosting-responsesagent-framework-hosting-telegram、agent-framework-a2a、 agent-framework-hosting-a2a和agent-framework-hosting-mcp预发行Python包。 在更新生产部署之前,请明确安装预发行版本,并先查看发行说明。
pip install --pre agent-framework-hosting
托管助手提供的内容
通用托管包为应用程序拥有的服务器提供共享执行状态:
-
AgentState将代理目标与一个代理目标配对SessionStore,并在应用程序选择新密钥时创建会话。 -
SessionStore通过应用程序选择的 ID 存储、检索和删除会话。 其默认存储是进程本地,没有逐出策略。 -
WorkflowState解析出工作流目标。 应用程序负责管理检查点存储,以及客户端延续 ID 到检查点的任何映射关系。
AgentState 不是服务器或协议注册表。 应用程序选择授权的会话密钥,解析目标,并保存运行后状态。 它可以对一个或多个协议终结点使用相同的目标和共享应用程序基础结构。
自定义会话存储
SessionStore是具有get和setdelete方法的小型异步存储类。 默认实现将会话保留在进程内存中。 将其子类化,并重写这些方法,以便将 AgentSession 对象存储在 Redis、数据库、Blob 存储或其他由应用程序拥有的存储中,然后将该实例传递给 AgentState(session_store=...)。
SessionStore 和 历史记录提供程序会持久保存智能体对话的不同部分。 会话存储为每个会话 ID 保存一个会话对象,包括会话元数据和提供程序状态。 专用的 HistoryProvider 会将对话单独存储,通常每条消息存为一条记录。 对于持久化主机,建议采用这种分离方式,因为追加单条消息通常比在每轮交互后重写不断增大的会话对象更高效。 通过将所需的历史记录提供程序类传递给 context_providers 参数,为每个代理定义历史记录提供程序。
注释
默认的历史记录提供程序:InMemoryHistoryProvider 是个例外:它将完整对话存储在 AgentSession.state 中。 当使用该提供程序时,SessionStore 会将对话持久保存在会话对象中。 对于较长的对话或生产存储,请使用专用历史记录提供程序,以便会话存储可以专注于轻型会话状态。
自带框架或客户端库
托管包不绑定到 Web 框架或客户端库。 这些示例使用 FastAPI aiogram ,因为它们提供了简洁的可运行示例,而不是因为帮助程序需要它们。
- 对于 HTTP 终结点,请使用应用程序框架的路由和请求/响应 API,例如 FastAPI、Starlette、Django、Flask、Azure Functions 或其他框架。
- 对于 Telegram 等协议客户端,请使用提供协议更新和执行帮助程序生成的操作的任何客户端库。
应用程序选择其框架和客户端库;代理框架包仅转换协议数据并管理可选的执行状态。 他们不注册路由、对调用方进行身份验证、授权访问状态、选择允许的模型选项或提供持久存储。
将协议添加到服务器
选择一个或多个协议集成:
| Protocol | 打包和集成 |
|---|---|
| OpenAI 响应 | agent-framework-hosting-responses |
| 电报 | agent-framework-hosting-telegram |
| A2A |
agent-framework-a2a 或 agent-framework-hosting-a2a |
| MCP | agent-framework-hosting-mcp |
每个协议页描述其设置。 但是,其设计目的是让你能够构建单个主机,并启用一种或多种协议以及一个可调用的目标,无论该目标是代理还是工作流。 由于我们不会将你限制为一个 Web 框架,因此你可以选择所需的框架,并使用这些协议轻松设置主机。
安全会话继续
将每个协议提供的标识符视为不受信任的输入。 在使用 ID 加载会话、检查点、任务或其他状态之前:
- 对调用方进行身份验证。
- 授权调用方访问引用的状态。
- 按已通过身份验证的租户、用户或工作区划分持久化状态。
- 仅在运行或流式处理完成后,才持久化会话和检查点状态。
此自承载模式允许应用程序仅实现所需的协议终结点和策略;它不会尝试实现每个受支持的协议的完整 API 图面。
后续步骤
更深入: