通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

代理运行时组件

代理运行时组件是支持 Microsoft Foundry 代理服务中的有状态、多轮次交互的核心对象(代理、聊天和响应)。 通过这些组件,可以生成输出、跨轮次保留状态以及生成对话应用程序。

本文介绍 代理对话响应的角色,以及它们在响应生成过程中如何协同工作。

先决条件

运行时组件如何协同工作

使用代理时,遵循一致的模式:

  • 创建代理:定义代理以开始发送消息和接收响应。
  • 创建会话(可选):使用会话在多个轮次间维护历史记录。 如果不使用对话,请使用上一响应的输出来转发上下文。
  • 生成响应:代理处理会话中的输入项以及请求中提供的任何说明。 代理可能会将项追加到会话中。
  • 检查响应状态:监视响应,直到响应完成(尤其是在流式处理或后台模式下)。
  • 检索响应:向用户显示生成的响应。

下图演示了这些组件如何在典型的代理循环中交互。

显示代理运行时循环的关系图:代理定义和可选的聊天历史记录源响应生成,可以调用工具、将项追加回聊天中,并生成向用户显示的输出项。

你提供用户输入(以及(可选)对话历史记录),服务会生成响应(包括配置时的工具调用),并且生成的项可以重复使用为下一轮的上下文。

什么是代理?

代理是一个持久业务流程定义,它结合了 AI 模型、指令、代码、工具、参数以及可选的安全或治理控制措施。

将代理作为命名的、版本化的资产存储在Microsoft Foundry中。 在响应生成期间,代理定义与交互历史记录(对话或以前的响应)配合使用,以处理和响应用户输入。

什么是对话?

聊天会自动管理状态,因此无需为每个轮次手动传递输入。

对话是具有唯一标识符的持久对象。 创建后,可以在会话之间重复使用它们。

对话存储项目,其中包括消息、工具调用、工具输出和其他数据。

何时使用会话

如果需要,请使用对话:

  • 多轮次连续性:在不自行重新生成上下文的情况下,跨轮次保持稳定的历史记录。
  • 跨会话连续性:对稍后返回的用户重复使用同一会话。
  • 更易于调试:检查一段时间内发生的情况(例如工具调用和输出)。

如果未创建对话,仍可使用上一响应的输出作为下一个请求的起点生成多轮次流。 此方法比基于线程的旧模式更灵活,其中状态与线程对象紧密耦合。 有关迁移指南,请参阅 “迁移到代理 SDK”。

会话条目

对话存储 项目 ,而不是仅存储聊天消息。 元素记录了响应生成过程中的信息,从而使得下一轮可以再次利用这些上下文。

常见项类型包括:

  • 消息项:用户或助理消息。
  • 工具调用项:代理尝试调用工具的记录。
  • 工具输出项:工具返回的输出(例如检索结果)。
  • 输出项:显示回用户的响应内容。

有关演示如何在代码中协同对话和响应的示例,请参阅 Foundry 代理服务中的“创建和使用内存”。

响应的工作原理

响应生成会调用代理。 代理使用其配置和任何提供的历史记录(聊天或以前的响应)通过调用模型和工具来执行任务。 作为响应生成的一部分,代理会将项追加到会话中。

还可以在不定义代理的情况下生成响应。 在这种情况下,可以直接在请求中提供所有配置,并仅将其用于该响应。 此方法适用于使用最少工具的简单方案。

流式处理和后台响应

某些响应生成模式以增量方式(流式处理)或完全异步返回结果(后台)。 在这些情况下,通常会监视响应,直到响应完成,然后使用最终输出项。

有关响应模式以及如何使用输出的详细信息,请参阅 响应 API

安全性和数据处理

由于聊天和响应可以持久保存用户提供的内容和工具输出,因此处理运行时数据,如应用程序数据:

  • 避免在提示或聊天历史记录中存储机密。 请改用连接和托管机密存储(例如,设置密钥保管库连接)。
  • 使用最低权限进行工具访问。 当工具访问外部系统时,代理可能会通过该工具读取或发送数据。
  • 请谨慎使用非Microsoft服务。 如果代理调用由非Microsoft服务支持的工具,则某些数据可能会流向这些服务。 有关相关注意事项,请参阅 Foundry 工具中的“发现工具”。

限制和约束

限制可能取决于你附加的模型、区域和工具(例如流式处理可用性和工具支持)。 有关响应的当前可用性和约束,请参阅 响应 API