Extensions Azure OpenAI pour Azure Functions

Important

L’extension Azure OpenAI pour Azure Functions est actuellement en préversion.

L’extension Azure OpenAI pour Azure Functions implémente un ensemble de déclencheurs et de liaisons qui vous permettent d’intégrer facilement des fonctionnalités et des comportements d’Azure OpenAI dans les modèles Foundry dans vos exécutions de code de fonction.

Azure Functions est un service de calcul basé sur les événements qui fournit un ensemble de déclencheurs et de liaisons pour se connecter facilement à d’autres services Azure.

Avec l’intégration entre Azure OpenAI et Functions, vous pouvez créer des fonctions capables de :

Action Type de déclencheur/liaison
Utiliser une invite de texte standard pour une saisie semi-automatique du contenu Liaison des entrées de saisie semi-automatique de texte Azure OpenAI
Répondre à la requête d’un assistant pour appeler une fonction Déclencheur de l’Assistant Azure OpenAI
Créer un assistant Liaison de création de sorties de l’assistant Azure OpenAI
Envoyer un message à un assistant Liaison post-entrée de l’Assistant Azure OpenAI
Obtenir l’historique de l’assistant Liaison d’entrée de requête de l’assistant Azure OpenAI
Lire des incorporations de texte Liaison d’entrée d’incorporation Azure OpenAI
Écrire dans une base de données vectorielle Liaison de sortie de magasin d’incorporations Azure OpenAI
Lire à partir d’une base de données vectorielle Liaison d’entrée de recherche sémantique Azure OpenAI

Installer l’extension

Le package NuGet d’extension que vous installez dépend du mode C# in-process ou processus worker isolé que vous utilisez dans votre application de fonction :

Ajoutez l’extension Azure OpenAI à votre projet en installant le package NuGet Microsoft.Azure.Functions.Worker.Extensions.OpenAI. Vous pouvez l’effectuer à l’aide de l’interface CLI .NET :

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

Lorsque vous utilisez une base de données vectorielle pour stocker du contenu, vous devez également installer au moins l’un des packages NuGet suivants :

Installer le bundle

Vous pouvez ajouter l’extension d’aperçu en ajoutant ou en remplaçant le code suivant dans votre host.json fichier, qui cible spécifiquement une version d’aperçu du bundle 4.x contenant l’extension OpenAI :

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

Go n’est pas actuellement pris en charge pour cette fonctionnalité.

Connections

Pour utiliser l’extension de liaison Azure OpenAI, vous devez spécifier une connexion à une définition de modèle OpenAI. Configurez la connexion du modèle OpenAI dans vos liaisons en utilisant l’une de ces approches :

  • Utilisez la AIConnectionName propriété de liaison (préférée pour Azure OpenAI).
  • Définissez AZURE_OPENAI_ENDPOINT et AZURE_OPENAI_KEY dans les paramètres de l’application (pour Azure OpenAI).
  • Réglez uniquement Open_API_Key dans les paramètres de l’application (pour https://api.openai.com).

La façon dont vous définissez la connexion dépend à la fois de l’API du modèle et de la méthode d’authentification, comme indiqué par le tableau suivant :

API d’authentification/modèle Azure OpenAI OpenAI (https://api.openai.com)
Connexion d’identité gérée AIConnectionName Non pris en charge
Référence Key Vault AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Référence de configuration de l’application AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Secret partagé AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Utilisez des connexions basées sur l’identité et la AIConnectionName propriété.

Lorsque vous utilisez AIConnectionName, la valeur de ce réglage de propriété dépend du type de connexion :

  • Connexion d’identité gérée : Cette AIConnectionName propriété est <CONNECTION_NAME_PREFIX> partagée par un groupe de paramètres qui définissent ensemble une connexion basée sur l’identité avec Azure OpenAI. Pour plus d’informations, voir Définir les connexions identités.
  • Référence Key Vault : Le AIConnectionName paramètre de propriété renvoie une référence Azure Key Vault à l’emplacement où la clé API est centralisée. Pour plus d’informations, voir Définir les connexions Key Vault.
  • Référence App Configuration : Le AIConnectionName paramètre de propriété renvoie une référence Azure App Configuration qui renvoie une clé API ou une référence Key Vault. Pour plus d’informations, consultez Azure App Configuration dans l’article sur les connexions.
  • Clé API : Le AIConnectionName paramètre de propriété se résout aux paramètres de l’application contenant directement le point de terminaison et la clé. Comme les clés partagées peuvent être compromises, utilisez des connexions d’identité gérées lorsque cela est possible. Pour plus d’informations, voir Définir les connexions.

Pour en savoir plus sur les connexions de liaisons, voir Gérer les connexions dans Azure Functions.

Les liaisons OpenAI incluent une AIConnectionName propriété que vous pouvez utiliser pour spécifier le <ConnectionNamePrefix> groupe de paramètres d’application qui définissent la connexion à Azure OpenAI :

Nom du paramètre Descriptif
<CONNECTION_NAME_PREFIX>__endpoint Définit le point de terminaison URI du service Azure OpenAI. Ce paramètre est toujours requis.
<CONNECTION_NAME_PREFIX>__clientId Définit l’identité affectée par l’utilisateur spécifique à utiliser lors de l’obtention d’un jeton d’accès. Exige que <CONNECTION_NAME_PREFIX>__credential soit défini sur managedidentity. La propriété accepte un ID client correspondant à une identité attribuée par l’utilisateur affectée à l’application. Il incorrect de spécifier à la fois un ID de la ressource et un ID client. Si vous ne spécifiez pas cette propriété, l’identité attribuée par le système est utilisée. Cette propriété est utilisée différemment dans des scénarios de développement local lorsque credential ne doit pas être défini.
<CONNECTION_NAME_PREFIX>__credential Définit la façon dont un jeton d’accès est obtenu pour la connexion. Utiliser managedidentity pour l’authentification d’identité managée. Cette valeur n’est valide que lorsqu’une identité managée est disponible dans l’environnement d’hébergement.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Lorsque credential est défini à managedidentity, définissez cette propriété pour spécifier l’identifiant de ressource à utiliser lors de l’obtention d’un jeton. La propriété accepte un identifiant de ressource correspondant à l’ID de la ressource de l’identité managée définie par l’utilisateur. Il n’est pas correct de spécifier à la fois un ID de la ressource et un ID client. Si vous ne spécifiez ni l’un ni l’autre, l’identité attribuée par le système est utilisée. Cette propriété est utilisée différemment dans des scénarios de développement local lorsque credential ne doit pas être défini.
<CONNECTION_NAME_PREFIX>__key Définit la clé secrète partagée nécessaire pour accéder au point de terminaison du service OpenAI Azure en utilisant une authentification basée sur une clé. En guise de bonne pratique en matière de sécurité, utilisez toujours Microsoft Entra ID avec des identités gérées pour l’authentification.

Considérez ces paramètres de connexion d’identité gérée lorsque vous définissez la AIConnectionName propriété à myAzureOpenAI:

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

À l’exécution, l’hôte interprète ces paramètres comme un seul myAzureOpenAI paramètre :

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

Lorsque vous utilisez des identités gérées, assurez-vous d’ajouter votre identité au rôle d’utilisateur OpenAI des services cognitifs .

Lors de l’exécution locale, ajoutez ces paramètres au fichierlocal.settings.json projet. Pour plus d’informations, consultez Développement local avec des connexions basées sur des identités.

Pour plus d’informations, consultez Utiliser des paramètres d’application.