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

Azure OpenAI 助手 API(预览版)

助手是 Azure OpenAI 服务的一项新功能,现已推出公共预览版。 通过助手 API,开发人员能够更轻松地创建具有复杂的 Copilot 类似体验的应用程序,这些体验包括筛选数据、建议解决方案和自动执行任务。

  • 助手可以使用特定说明调用 Azure OpenAI 的模型,从而优化其个性和功能。
  • 助手可以并行访问多个工具。 这既可以是 Azure OpenAI 托管的工具,例如代码解释器文件搜索,也可以是通过函数调用生成、托管和访问的工具。
  • 助手可以访问永久性线程。 线程可存储消息历史记录,并在对话时间过长而超出模型上下文长度时将其截断,从而简化人工智能应用程序开发。 创建一次线程,只需在用户回复时向其追加消息。
  • 助手可以访问多种格式的文件。 无论是在创建过程中,还是作为助手和用户之间的线程的一部分。 使用工具时,助手还可以创建文件(如图像或电子表格),并在创建的消息中引用文件。

概述

以前,即便对于经验丰富的开发人员,构建自定义 AI 助手也需要繁重的工作。 虽然聊天补全 API 轻量级且功能强大,但它本质上是无状态的,这意味着开发人员必须管理对话状态和聊天线程、工具集成、检索文档和索引以及手动执行代码。

助手 API 作为聊天补全 API 的有状态演化,为这些挑战提供了解决方案。 助手 API 支持永久自动托管线程。 这意味着开发人员不再需要开发对话状态管理系统,并解决了模型的上下文窗口约束。 助手 API 将自动处理优化,使线程保持在所选模型的最大上下文窗口下方。 创建线程后,只需在用户响应时向其追加新消息。 如果需要,助手还可以并行访问多个工具。 这些工具包括:

提示

除非使用代码解释器文件搜索工具,否则使用助手没有额外的定价配额

助手 API 是基于支持 OpenAI GPT 产品的相同功能构建的。 一些可能的用例包括 AI 提供支持的产品推荐器、销售分析师应用、编码助手、员工 Q&A 聊天机器人等。 开始在 Azure AI Studio 上的无代码助手操场上构建,或者开始使用 API 进行构建。

重要

使用函数调用、代码解释器或带文件输入的文件搜索以及助理线程功能检索不受信任的数据,可能会危及助理或使用助理的应用程序的安全。 请在此处了解缓解方法。

助手操场

我们在快速入门指南中提供了助手操场演练。 它提供了一个无代码环境来测试助手的功能。

助手组件

显示助理组件的关系图。

组件 描述
助手 将 Azure OpenAI 模型与工具结合使用的自定义 AI。
线程 助手和用户之间的对话会话。 线程存储消息并自动处理截断,使内容适合模型的上下文。
消息 由助手或用户创建的消息。 消息可以包括文本、图像和其他文件。 消息以列表的形式存储在线程上。
运行 激活助手以根据线程的内容开始运行。 助手使用其配置和线程的消息通过调用模型和工具来执行任务。 在运行期间,助手会将消息追加到线程。
运行步骤 助手在运行期间所采取的步骤的详细列表。 助手可以在运行期间调用工具或创建消息。 检查运行步骤可以了解助手如何获得最终结果。

助手数据访问

目前,为助手创建的助手、会话、消息和文件的范围位于 Azure OpenAI 资源级别。 因此,任何有权访问 Azure OpenAI 资源或具有 API 密钥访问权限的人都可以读取/写助手、会话、消息和文件。

强烈建议使用以下数据访问控制:

  • 实施授权。 在对助手、会话、消息和文件执行读取或写入操作之前,请确保最终用户有权执行此操作。
  • 限制对 Azure OpenAI 资源和 API 密钥的访问权限。 请仔细考虑谁有权访问正在使用助理的 Azure OpenAI 资源以及关联的 API 密钥。
  • 定期审核哪些帐户/个人有权访问 Azure OpenAI 资源。 可通过 API 密钥和资源级别访问权限实现各种操作,包括读取并修改消息和文件。
  • 启用诊断设置,以便长期跟踪 Azure OpenAI 资源的活动日志的某些方面。

参数

助手 API 支持多个参数,可用于自定义助手的输出。 使用 tool_choice 参数可以强制助手使用指定的工具。 还可以使用 assistant 角色创建消息,以在“线程”中创建自定义聊天历史记录。 temperaturetop_presponse_format 让你进一步优化响应。 有关详细信息,请参阅参考文档

上下文窗口管理

助手会自动截断文本,以确保它保持在模型的最大上下文长度内。 可以通过指定要运行的最大令牌来利用此行为,以及/或想要包含在运行中的最近消息的最大数目来自定义此行为。

最大完成令牌和最大提示令牌数

若要控制单个运行中的令牌使用情况,请在创建运行时设置 max_prompt_tokensmax_completion_tokens。 这些限制适用于整个运行生命周期内所有完成中使用的令牌总数。

例如,启动 max_prompt_tokens 设置为 500 且 max_completion_tokens 设置为 1000 的运行意味着第一次完成会将线程截断为 500 个令牌,并将输出上限为 1,000 个标记。 如果在第一次完成时只使用 200 个提示令牌和 300 个完成令牌,则第二次完成将具有 300 个提示令牌和 700 个完成令牌的可用限制。

如果完成达到 max_completion_tokens 限制,则运行将终止,且状态不完整,详细信息将在 Run 对象的 incomplete_details 字段中提供。

使用文件搜索工具时,建议将 max_prompt_tokens 设置为不超过 20,000。 对于较长的对话或与文件搜索的多次交互,请考虑将此限制提高到 50,000,或者理想情况下,删除 max_prompt_tokens 限制,以获得最高的质量结果。

截断策略

还可以指定截断策略来控制线程应如何呈现到模型的上下文窗口中。 使用类型为 auto 的截断策略将使用 OpenAI 的默认截断策略。 使用类型为 last_messages 的截断策略可以指定要包含在上下文窗口中的最新消息数。

另请参阅