你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure AI Foundry 代理服务与 Azure Functions 集成,使你能够以最小的开销创建智能事件驱动应用程序。 这种组合使得 AI 驱动的工作流能够利用无服务器计算的可伸缩性和灵活性,从而更轻松地构建和部署可响应实时事件或复杂工作流的解决方案。
目前,仅支持由 Azure 存储队列触发的函数与 Azure Functions 的直接集成。 目前不原生支持其他触发器类型,例如 HTTP 或 Blob 存储。
Azure Functions 为触发器和绑定提供支持,这简化了 AI 代理与外部系统和服务交互的方式。 触发器确定函数何时执行(例如 HTTP 请求、队列中的消息或文件上传到 Azure Blob 存储),并允许代理根据传入事件动态作。
对于 HTTP 触发的 Azure Functions,可以通过 OpenAPI 规范描述函数并将其注册为代理配置中的可调用工具,从而实现集成。 或者,可以实现基于队列的包装函数,该函数接收来自代理的消息,并在内部调用 HTTP 逻辑,从而使用基于队列的现有集成。
与此同时,绑定有助于简化与输入或输出数据源(如数据库或 API)的连接,无需大量的样本代码。 例如,可配置触发器,使得每当在聊天机器人中收到客户消息时都执行 Azure 函数,并且可使用输出绑定通过 Azure AI 代理发送响应。
支持的模型
要使用函数调用的所有功能(包括并行函数),则需要使用在 2023 年 11 月 6 日之后发布的模型。
Prerequisites
- Azure Functions Core Tools v4.x
- 具有标准设置的已部署代理
Note
不支持基本代理设置。
- Azurite
准备本地环境
以下示例展示了如何使用 Azure AI Foundry 代理服务进行函数调用,其中函数调用由代理服务放入存储队列中,再由监听该队列的 Azure 函数进行处理。
可以在 GitHub 上找到此处使用的模板和代码。
使用支持
| Azure AI Foundry 支持 | Python SDK | C# SDK | Java SDK | REST API | 基本代理设置 | 标准代理设置 |
|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
为本地和云开发测试创建 Azure 资源
拥有 Azure 订阅后,请在新的终端窗口中运行以下命令,以创建 Azure OpenAI 和其他所需的资源:
azd init --template https://github.com/Azure-Samples/azure-functions-ai-services-agent-python
Mac/Linux:
chmod +x ./infra/scripts/*.sh
Windows:
set-executionpolicy remotesigned
配置资源
运行以下 CLI 命令,在 Azure 中创建所需的资源。
azd provision
创建 local.settings.json
Note
此文件应与 host.json 位于同一文件夹中。 如果运行 azd provision,则它是自动创建的。
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"STORAGE_CONNECTION__queueServiceUri": "https://<storageaccount>.queue.core.windows.net",
"PROJECT_CONNECTION_STRING": "<project connnection for AI Project>",
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
}
}
使用 Visual Studio Code 运行应用
- 在新终端中打开文件夹。
- 运行
code .代码命令,在 Visual Studio Code 中打开项目。 - 在命令面板 (F1) 中键入
Azurite: Start,它将为 Azure Functions 运行时启用本地存储调试。 - 按 Run/Debug (F5) 在调试器中运行。 如果系统提示本地模拟器未运行,请选择 “仍然调试”。
- 使用 HTTP 测试工具分别发送 POST
prompt终结点。 如果已安装 RestClient 扩展,可以直接从test.http项目文件执行请求。
部署到 Azure 云
运行以下命令来使用任何必需的 Azure 资源预配函数应用,并部署代码:
azd up
系统会提示你提供下列所需的部署参数:
| Parameter | Description |
|---|---|
| 环境名称 | 用于维护应用的唯一部署上下文的环境。 如果使用 azd init 创建了本地项目,则不会出现提示。 |
| Azure 订阅 | 要在其中创建资源的订阅。 |
| Azure 位置 | 要在其中创建包含新 Azure 资源的资源组的 Azure 区域。 仅显示当前支持 Flex 消耗计划的区域。 |
成功完成发布后,azd 会提供新函数的 URL 终结点,但没有访问终结点所需的函数键值。 若要了解如何获取这些相同的终结点以及所需的函数键,请参阅快速入门:使用 Azure Developer CLI 创建函数并将其部署到 Azure Functions 配套文章中的在 Azure 上调用函数。
重新部署代码
可以根据需要多次运行 azd up 命令,以预配 Azure 资源并为函数应用部署代码更新。
Note
已部署的代码文件始终被最新的部署包覆盖。
清理资源
使用完函数应用和相关资源后,可以使用此命令从 Azure 中删除函数应用及其相关资源,并避免产生任何进一步的成本(--purge 不会留下软删除的 AI 资源并恢复你的配额):
azd down --purge