适用于 Azure Functions 的 Azure OpenAI 扩展

重要

适用于 Azure Functions 的 Azure OpenAI 扩展目前为预览版。

适用于 Azure Functions 的 Azure OpenAI 扩展实现了一组触发器和绑定,使你可以轻松地将 Azure OpenAI 服务的功能和行为集成到函数代码执行中。

Azure Functions 是事件驱动的计算服务,它提供一组触发器和绑定,可轻松与其他 Azure 服务连接。

通过 Azure OpenAI 与 Functions 之间的集成,可以构建具有以下功能的函数:

操作 触发器/绑定类型
使用标准文本提示补全内容 Azure OpenAI 文本补全输入绑定
响应助手请求以调用函数 Azure OpenAI 助手触发器
创建助手 Azure OpenAI 助手创建输出绑定
向助手发送消息 Azure OpenAI 助手发布输入绑定
获取助手历史记录 Azure OpenAI 助手查询输入绑定
读取文本嵌入 Azure OpenAI 嵌入输入绑定
写入矢量数据库 Azure OpenAI 嵌入存储输出绑定
从矢量数据库读取 Azure OpenAI 语义搜索输入绑定

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式进程内独立工作进程

通过安装 Microsoft.Azure.Functions.Worker.Extensions.OpenAI NuGet 包,将 Azure OpenAI 扩展添加到项目,可以使用 .NET CLI 执行此操作:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI  --prerelease

使用矢量数据库存储内容时,还应至少安装其中一个 NuGet 包:

安装捆绑包

可以通过在 host.json 文件中添加或替换以下代码来添加预览扩展,该代码专门面向包含 OpenAI 扩展的 4.x 捆绑包的预览版本:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.*, 5.0.0)"
  }
}

连接到 OpenAI

若要使用 Azure OpenAI 绑定扩展,需要指定与 OpenAI 的连接。 此连接是使用应用程序设置和 AIConnectionName 触发器或绑定的属性定义的。 还可以使用环境变量来定义基于密钥的连接。

建议使用基于托管标识的连接和 AIConnectionName 属性。

OpenAI 绑定具有一个 AIConnectionName 属性,可用于指定 <ConnectionNamePrefix> 用于定义与 Azure OpenAI 的连接的应用设置组:

设置名 说明
<CONNECTION_NAME_PREFIX>__endpoint 设置 Azure OpenAI 服务的 URI 终结点。 此设置始终是必需的。
<CONNECTION_NAME_PREFIX>__clientId 设置获取访问令牌时要使用的特定用户分配标识。 需要将 <CONNECTION_NAME_PREFIX>__credential 设置为 managedidentity。 该属性接受与分配给应用程序的用户分配的标识对应的客户端 ID。 同时指定资源 ID 和客户端 ID 是无效的。 如果未指定,则使用系统分配的标识。 在本地开发方案中使用时,此属性的使用方式不同,且不应设置 credential
<CONNECTION_NAME_PREFIX>__credential 定义如何为连接获取访问令牌。 用于 managedidentity 托管标识身份验证。 仅当托管标识在托管环境中可用时,此值才有效。
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId credential 设置为 managedidentity 时,此属性可以设为指定在获取令牌时要使用的资源标识符。 该属性接受与用户定义的托管标识的资源 ID 对应的资源标识符。 同时指定资源 ID 和客户端 ID 是无效的。 如果两者都没有指定,则会使用系统分配的标识。 在本地开发方案中使用时,此属性的使用方式不同,且不应设置 credential
<CONNECTION_NAME_PREFIX>__key 设置使用基于密钥的身份验证访问 Azure OpenAI 服务的终结点所需的共享密钥。 作为安全最佳做法,应始终将 Microsoft Entra ID 与托管标识一起使用进行身份验证。

在将 AIConnectionName 属性设置为 myAzureOpenAI以下情况下,请考虑以下托管标识连接设置:

  • myAzureOpenAI__endpoint=https://contoso.openai.azure.com/
  • myAzureOpenAI__credential=managedidentity
  • myAzureOpenAI__clientId=aaaaaaaa-bbbb-cccc-1111-222222222222

在运行时,主机将这些设置统一解释为如下所示的单个 myAzureOpenAI 设置:

"myAzureOpenAI":
{
    "endpoint": "https://contoso.openai.azure.com/",
    "credential": "managedidentity",
    "clientId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}

使用托管标识时,请确保将标识添加到 认知服务 OpenAI 用户 角色。

在本地运行时,必须将这些设置添加到 local.settings.json 项目文件。 有关详细信息,请参阅 使用基于标识的连接进行本地开发

有关详细信息,请参阅使用应用程序设置