Extensão do OpenAI do Azure para Azure Functions

Importante

Atualmente, a extensão do OpenAI do Azure para Azure Functions está em versão prévia.

A extensão do Azure OpenAI para Azure Functions implementa um conjunto de gatilhos e associações que permitem integrar facilmente recursos e comportamentos do Azure OpenAI em Modelos de Fundimento em suas execuções de código de função.

O Azure Functions é um serviço de computação controlado por eventos que fornece um conjunto de gatilhos e associações para facilitar a conexão com outros serviços do Azure.

Com a integração entre o OpenAI do Azure e o Azure Functions, você pode criar funções que podem:

Ação Tipo de gatilho/associação
Usar um prompt de texto padrão para conclusão de conteúdo Associação de entrada de preenchimento de texto do OpenAI do Azure
Responder a uma solicitação do assistente para chamar uma função Gatilho do assistente do OpenAI do Azure
Criar um assistente Associação de saída de criação do assistente do OpenAI do Azure
Enviar mensagem para um assistente Associação de entrada de postagem do assistente do OpenAI do Azure
Obter histórico do assistente Associação de entrada de consulta do assistente do OpenAI do Azure
Ler incorporações de texto Associação de entrada de incorporações do OpenAI do Azure
Gravar em um banco de dados de vetores Associação de saída do repositório de incorporações do OpenAI do Azure
Ler de um banco de dados de vetores Associação de entrada de pesquisa semântica do OpenAI do Azure

Instalar a extensão

O pacote NuGet de extensão instalado depende do processo ou do processo de trabalho isolado do C# que você estiver usando no seu aplicativo de funções:

Adicione a extensão do OpenAI do Azure ao seu projeto instalando o pacote NuGet Microsoft.Azure.Functions.Worker.Extensions.OpenAI, o que você pode fazer usando a CLI do .NET:

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

Ao usar um banco de dados de vetores para armazenar conteúdo, instale também pelo menos um desses pacotes NuGet:

Instalar pacote

Você pode adicionar a extensão de pré-visualização adicionando ou substituindo o código a seguir no seu host.json arquivo, que especificamente mira uma versão de pré-visualização do pacote 4.x que contém a extensão OpenAI:

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

O Go atualmente não é suportado para esse recurso.

Conexões

Para usar a extensão de binding Azure OpenAI, você precisa especificar uma conexão com uma definição de modelo OpenAI. Defina a conexão do modelo OpenAI nas suas ligações usando uma destas abordagens:

  • Use a AIConnectionName propriedade de binding (preferida para Azure OpenAI).
  • Configure AZURE_OPENAI_ENDPOINT e AZURE_OPENAI_KEY esteja nas configurações do app (para Azure OpenAI).
  • Defina apenas Open_API_Key nas configurações do app (para https://api.openai.com).

A forma como você configura a conexão depende tanto da API do modelo quanto do método de autenticação, conforme indicado pela tabela a seguir:

API de Autenticação/Modelo Azure OpenAI OpenAI (https://api.openai.com)
Conexão de identidade gerenciada AIConnectionName Sem suporte
Referência ao Key Vault AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Referência de configuração do aplicativo AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Segredo compartilhado AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Use conexões baseadas em identidade gerenciada e a propriedade AIConnectionName .

Quando você usa AIConnectionName, o valor dessa configuração de propriedade depende do tipo de conexão:

  • Conexão de identidade gerenciada: A AIConnectionName propriedade é <CONNECTION_NAME_PREFIX> compartilhada por um grupo de configurações que, juntas, definem uma conexão baseada em identidade com o Azure OpenAI. Para mais informações, veja Definir conexões de identidade.
  • Referência Key Vault: A AIConnectionName configuração de propriedade retorna uma referência ao Azure Key Vault para o local onde a chave API é mantida centralmente. Para mais informações, veja Definir conexões do Key Vault.
  • Referência de Configuração de App: A AIConnectionName configuração de propriedade retorna uma referência Configuração de Aplicativos do Azure que retorna uma chave API ou uma referência ao Key Vault. Para mais informações, veja Configuração de Aplicativos do Azure no artigo de conexões.
  • Chave API: A AIConnectionName configuração de propriedade resolve para as configurações do app contendo diretamente o endpoint e a chave. Como as chaves compartilhadas podem ser comprometidas, use conexões de identidade gerenciadas sempre que possível. Para mais informações, veja Definir conexões.

Para saber mais sobre conexões de bindings, veja Gerenciar conexões no Azure Functions.

As ligações do OpenAI incluem uma AIConnectionName propriedade que você pode usar para especificar o <ConnectionNamePrefix> grupo de configurações de aplicativos que definem a conexão com o Azure OpenAI:

Nome da configuração Descrição
<CONNECTION_NAME_PREFIX>__endpoint Define o endpoint URI do serviço Azure OpenAI. Essa configuração é sempre necessária.
<CONNECTION_NAME_PREFIX>__clientId Define a identidade específica atribuída pelo usuário a ser usada ao obter um token de acesso. Requer que <CONNECTION_NAME_PREFIX>__credential esteja definido como managedidentity. A propriedade aceita uma ID de cliente correspondente a uma identidade atribuída pelo usuário atribuída ao aplicativo. É inválido especificar uma ID de recurso e uma ID de cliente. Se você não especificar essa propriedade, a identidade atribuída ao sistema é usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido.
<CONNECTION_NAME_PREFIX>__credential Define como um token de acesso é obtido para a conexão. Use managedidentity para autenticação de identidade gerenciada. Esse valor só é válido quando uma identidade gerenciada está disponível no ambiente de hospedagem.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Quando credential está definido como managedidentity, defina essa propriedade para especificar o Identificador de recurso a usar ao obter um token. A propriedade aceita um identificador de recurso correspondente à ID do recurso da identidade gerenciada definida pelo usuário. É inválido especificar uma ID de recurso e uma ID de cliente. Se você não especificar nenhum dos dois, a identidade atribuída pelo sistema é usada. Essa propriedade é usada de forma diferente em cenários de desenvolvimento local, quando credential não puder ser definido.
<CONNECTION_NAME_PREFIX>__key Define a chave secreta compartilhada necessária para acessar o endpoint do serviço Azure OpenAI usando autenticação baseada em chaves. Como melhor prática de segurança, sempre use o Microsoft Entra ID com identidades gerenciadas para autenticação.

Considere essas configurações de conexão de identidade gerenciada ao definir a AIConnectionName propriedade para myAzureOpenAI:

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

Em tempo de execução, o host interpreta essas configurações como uma única myAzureOpenAI configuração:

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

Ao usar identidades gerenciadas, certifique-se de adicionar sua identidade ao papel de Usuário OpenAI de Serviços Cognitivos .

Ao rodar localmente, adicione essas configurações ao arquivolocal.settings.json projeto. Para obter mais informações, consulte Desenvolvimento local com conexões baseadas em identidade.

Para obter mais informações, confira Trabalhar com configurações de aplicativo.