你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
代理运行时组件是支持 Microsoft Foundry 代理服务中的有状态、多轮次交互的核心对象(代理、聊天和响应)。 通过这些组件,可以生成输出、跨轮次保留状态以及生成对话应用程序。
本文介绍 代理、 对话和 响应的角色,以及它们在响应生成过程中如何协同工作。
先决条件
- Microsoft Foundry 项目。
- 熟悉 代理开发生命周期 (可选)。
运行时组件如何协同工作
使用代理时,遵循一致的模式:
- 创建代理:定义代理以开始发送消息和接收响应。
- 创建会话(可选):使用会话在多个轮次间维护历史记录。 如果不使用对话,请使用上一响应的输出来转发上下文。
- 生成响应:代理处理会话中的输入项以及请求中提供的任何说明。 代理可能会将项追加到会话中。
- 检查响应状态:监视响应,直到响应完成(尤其是在流式处理或后台模式下)。
- 检索响应:向用户显示生成的响应。
下图演示了这些组件如何在典型的代理循环中交互。
你提供用户输入(以及(可选)对话历史记录),服务会生成响应(包括配置时的工具调用),并且生成的项可以重复使用为下一轮的上下文。
什么是代理?
代理是一个持久业务流程定义,它结合了 AI 模型、指令、代码、工具、参数以及可选的安全或治理控制措施。
将代理作为命名的、版本化的资产存储在Microsoft Foundry中。 在响应生成期间,代理定义与交互历史记录(对话或以前的响应)配合使用,以处理和响应用户输入。
什么是对话?
聊天会自动管理状态,因此无需为每个轮次手动传递输入。
对话是具有唯一标识符的持久对象。 创建后,可以在会话之间重复使用它们。
对话存储项目,其中包括消息、工具调用、工具输出和其他数据。
何时使用会话
如果需要,请使用对话:
- 多轮次连续性:在不自行重新生成上下文的情况下,跨轮次保持稳定的历史记录。
- 跨会话连续性:对稍后返回的用户重复使用同一会话。
- 更易于调试:检查一段时间内发生的情况(例如工具调用和输出)。
如果未创建对话,仍可使用上一响应的输出作为下一个请求的起点生成多轮次流。 此方法比基于线程的旧模式更灵活,其中状态与线程对象紧密耦合。 有关迁移指南,请参阅 “迁移到代理 SDK”。
会话条目
对话存储 项目 ,而不是仅存储聊天消息。 元素记录了响应生成过程中的信息,从而使得下一轮可以再次利用这些上下文。
常见项类型包括:
- 消息项:用户或助理消息。
- 工具调用项:代理尝试调用工具的记录。
- 工具输出项:工具返回的输出(例如检索结果)。
- 输出项:显示回用户的响应内容。
有关演示如何在代码中协同对话和响应的示例,请参阅 Foundry 代理服务中的“创建和使用内存”。
响应的工作原理
响应生成会调用代理。 代理使用其配置和任何提供的历史记录(聊天或以前的响应)通过调用模型和工具来执行任务。 作为响应生成的一部分,代理会将项追加到会话中。
还可以在不定义代理的情况下生成响应。 在这种情况下,可以直接在请求中提供所有配置,并仅将其用于该响应。 此方法适用于使用最少工具的简单方案。
流式处理和后台响应
某些响应生成模式以增量方式(流式处理)或完全异步返回结果(后台)。 在这些情况下,通常会监视响应,直到响应完成,然后使用最终输出项。
有关响应模式以及如何使用输出的详细信息,请参阅 响应 API。
安全性和数据处理
由于聊天和响应可以持久保存用户提供的内容和工具输出,因此处理运行时数据,如应用程序数据:
- 避免在提示或聊天历史记录中存储机密。 请改用连接和托管机密存储(例如,设置密钥保管库连接)。
- 使用最低权限进行工具访问。 当工具访问外部系统时,代理可能会通过该工具读取或发送数据。
- 请谨慎使用非Microsoft服务。 如果代理调用由非Microsoft服务支持的工具,则某些数据可能会流向这些服务。 有关相关注意事项,请参阅 Foundry 工具中的“发现工具”。
限制和约束
限制可能取决于你附加的模型、区域和工具(例如流式处理可用性和工具支持)。 有关响应的当前可用性和约束,请参阅 响应 API。