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

将 Azure Functions 与 Azure AI Foundry 代理服务配合使用

Azure AI Foundry 代理服务与 Azure Functions 集成,使你能够以最小的开销创建智能事件驱动应用程序。 这种组合使得 AI 驱动的工作流能够利用无服务器计算的可伸缩性和灵活性,从而更轻松地构建和部署可响应实时事件或复杂工作流的解决方案。

Azure Functions 为触发器和绑定提供支持,这简化了 AI 代理与外部系统和服务交互的方式。 触发器确定函数何时执行,例如,HTTP 请求、队列中的消息或上传到 Azure Blob 存储的文件,并允许代理根据传入事件动态执行操作。

与此同时,绑定有助于简化与输入或输出数据源(如数据库或 API)的连接,无需大量的样本代码。 例如,可配置触发器,使得每当在聊天机器人中收到客户消息时都执行 Azure 函数,并且可使用输出绑定通过 Azure AI 代理发送响应。

支持的模型

要使用函数调用的所有功能(包括并行函数),则需要使用在 2023 年 11 月 6 日之后发布的模型。

先决条件

准备本地环境

以下示例展示了如何使用 Azure AI Foundry 代理服务进行函数调用,其中函数调用由代理服务放入存储队列中,再由监听该队列的 Azure 函数进行处理。

可以在 GitHub 中找到此处使用的模板和代码。

使用支持

Azure AI Foundry 支持 Python SDK C# 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 

窗户:

set-executionpolicy remotesigned

预配资源

运行以下 CLI 命令,在 Azure 中创建所需的资源。

azd provision

创建 local.settings.json

注释

此文件应与 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 运行应用

  1. 在新终端中打开文件夹。
  2. 运行 code . 代码命令,在 Visual Studio Code 中打开项目。
  3. 在命令面板 (F1) 中键入 Azurite: Start,它将为 Azure Functions 运行时启用本地存储调试。
  4. 按“运行/调试”(F5),在调试程序中运行。 如果系统提示本地模拟器未运行,请选择“仍然调试”。
  5. 使用 HTTP 测试工具分别发送 POST prompt 终结点。 如果已安装 RestClient 扩展,可以直接从 test.http 项目文件执行请求。

部署到 Azure 云

运行以下命令来使用任何必需的 Azure 资源预配函数应用,并部署代码:

azd up

系统会提示你提供下列所需的部署参数:

参数 DESCRIPTION
环境名称 用于维护应用的唯一部署上下文的环境。 如果使用 azd init 创建了本地项目,则不会出现提示。
Azure 订阅 要在其中创建资源的订阅。
Azure 位置 要在其中创建包含新 Azure 资源的资源组的 Azure 区域。 仅显示当前支持 Flex 消耗计划的区域。

成功完成发布后,azd 会提供新函数的 URL 终结点,但没有访问终结点所需的函数键值。 若要了解如何获取这些相同的终结点以及所需的函数键,请参阅快速入门:使用 Azure Developer CLI 创建函数并将其部署到 Azure Functions 配套文章中的在 Azure 上调用函数

重新部署代码

可以根据需要多次运行 azd up 命令,以预配 Azure 资源并为函数应用部署代码更新。

注释

已部署的代码文件始终被最新的部署包覆盖。

清理资源

使用完函数应用和相关资源后,可以使用此命令从 Azure 中删除函数应用及其相关资源,并避免产生任何进一步的成本(--purge 不会留下软删除的 AI 资源并恢复你的配额):

azd down --purge