Azure OpenAI-extensie voor Azure Functions

Belangrijk

De Azure OpenAI-extensie voor Azure Functions is momenteel in preview.

De Azure OpenAI-extensie voor Azure Functions implementeert een set triggers en bindingen waarmee u eenvoudig functies en gedrag van Azure OpenAI in Foundry-modellen kunt integreren in de uitvoering van uw functiecode.

Azure Functions is een gebeurtenisgestuurde rekenservice die een set triggers en bindingen biedt om eenvoudig verbinding te maken met andere Azure-services.

Met de integratie tussen Azure OpenAI en Functions kunt u functies bouwen die het volgende kunnen doen:

Actie Type trigger/binding
Een standaardtekstprompt gebruiken voor voltooiing van inhoud Invoerbinding voor voltooiing van Azure OpenAI-tekst
Reageren op een assistentaanvraag om een functie aan te roepen Azure OpenAI-assistenttrigger
Een assistent maken Azure OpenAI-assistent: uitvoerbinding maken
Een assistent een bericht sturen Azure OpenAI-assistent na invoerbinding
Assistentgeschiedenis ophalen Queryinvoerbinding voor Azure OpenAI-assistent
Tekst insluitingen lezen Invoerbinding voor Azure OpenAI-insluitingen
Schrijven naar een vectordatabase Uitvoerbinding voor Azure OpenAI-insluitingen opslaan
Lezen uit een vectordatabase Azure OpenAI semantische zoekinvoerbinding

De extensie installeren

Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus in-proces of geïsoleerd werkproces dat u gebruikt in uw functie-app:

Voeg de Azure OpenAI-extensie toe aan uw project door het NuGet-pakket Microsoft.Azure.Functions.Worker.Extensions.OpenAI te installeren. Dit kunt u doen met behulp van de .NET CLI:

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

Wanneer u een vectordatabase gebruikt voor het opslaan van inhoud, moet u ook ten minste een van deze NuGet-pakketten installeren:

Bundel installeren

Je kunt de previewextensie toevoegen door de volgende code in je host.json bestand toe te voegen of te vervangen, die specifiek gericht is op een previewversie van de 4.x-bundel die de OpenAI-extensie bevat:

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

Go wordt momenteel niet ondersteund voor deze functie.

Connections

Om de Azure OpenAI-bindingsextensie te gebruiken, moet je een verbinding specificeren met een OpenAI-modeldefinitie. Stel de OpenAI-modelverbinding in je bindings in met een van deze benaderingen:

  • Gebruik de AIConnectionName binding-eigenschap (voorkeur voor Azure OpenAI).
  • Instellen AZURE_OPENAI_ENDPOINT en AZURE_OPENAI_KEY in de app-instellingen (voor Azure OpenAI).
  • Stel alleen Open_API_Key in de app-instellingen in (voor https://api.openai.com).

De manier waarop je de verbinding instelt hangt af van zowel de model-API als de authenticatiemethode, zoals aangegeven in de volgende tabel:

Authenticatie/Model API Azure OpenAI OpenAI (https://api.openai.com)
Beheerde identiteitsverbinding AIConnectionName Niet ondersteund
Key Vault-referentie AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
App-configuratiereferentie AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Gedeeld geheim AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Gebruik beheerde identiteitsgebaseerde verbindingen en het eigendom AIConnectionName .

Wanneer je gebruikt AIConnectionName, hangt de waarde van deze eigenschapsinstelling af van het type verbinding:

  • Managed identity-verbinding: De AIConnectionName eigenschap wordt <CONNECTION_NAME_PREFIX> gedeeld door een groep instellingen die samen een identiteitsgebaseerde verbinding met Azure OpenAI definiëren. Voor meer informatie, zie Definieer identiteitsverbindingen.
  • Key Vault-referentie: De AIConnectionName property-instelling geeft een Azure Key Vault-referentie terug naar de locatie waar de API-sleutel centraal wordt onderhouden. Voor meer informatie, zie Define Key Vault-verbindingen.
  • App Configuration reference: De AIConnectionName property-instelling geeft een Azure App Configuration-referentie terug die een API-sleutel of een Key Vault-referentie teruggeeft. Voor meer informatie, zie Azure App Configuration in het artikel over verbindingen.
  • API-sleutel: De AIConnectionName property-instelling wordt direct omgezet naar app-instellingen die het eindpunt en de sleutel bevatten. Omdat gedeelde sleutels gecompromitteerd kunnen worden, gebruik waar mogelijk beheerde identiteitsverbindingen. Voor meer informatie, zie Verbindingen definiëren.

Voor meer informatie over bindingsverbindingen, zie Verbindingen beheren in Azure Functions.

De OpenAI-bindings bevatten een AIConnectionName eigenschap die je kunt gebruiken om de <ConnectionNamePrefix> voor de groep app-instellingen te specificeren die de verbinding met Azure OpenAI definiëren:

Naam instelling Beschrijving
<CONNECTION_NAME_PREFIX>__endpoint Zet het URI-eindpunt van de Azure OpenAI-service. Deze instelling is altijd vereist.
<CONNECTION_NAME_PREFIX>__clientId Hiermee stelt u de specifieke door de gebruiker toegewezen identiteit in die moet worden gebruikt bij het verkrijgen van een toegangstoken. Vereist dat deze <CONNECTION_NAME_PREFIX>__credential is ingesteld op managedidentity. De eigenschap accepteert een client-id die overeenkomt met een door de gebruiker toegewezen identiteit die aan de toepassing is toegewezen. Het is ongeldig om zowel een resource-id als een client-id op te geven. Als je deze eigenschap niet specificeert, wordt de systeem-toegewezen identiteit gebruikt. Deze eigenschap wordt anders gebruikt in lokale ontwikkelscenario's, wanneer credential deze niet moeten worden ingesteld.
<CONNECTION_NAME_PREFIX>__credential Hiermee definieert u hoe een toegangstoken wordt verkregen voor de verbinding. Gebruiken managedidentity voor verificatie van beheerde identiteiten. Deze waarde is alleen geldig wanneer een beheerde identiteit beschikbaar is in de hostingomgeving.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Wanneer credential is gezet op managedidentity, stel deze eigenschap in om de resource Identifier te specificeren die gebruikt moet worden bij het verkrijgen van een token. De eigenschap accepteert een resource-id die overeenkomt met de resource-id van de door de gebruiker gedefinieerde beheerde identiteit. Het is ongeldig om zowel een resource-id als een client-id op te geven. Als je geen van beide specificeert, wordt de door het systeem toegewezen identiteit gebruikt. Deze eigenschap wordt anders gebruikt in lokale ontwikkelscenario's, wanneer credential deze niet moeten worden ingesteld.
<CONNECTION_NAME_PREFIX>__key Stelt de gedeelde geheime sleutel in die nodig is om toegang te krijgen tot het eindpunt van de Azure OpenAI-dienst door gebruik te maken van sleutelgebaseerde authenticatie. Als beveiligingsbest practice gebruik je altijd Microsoft Entra ID met beheerde identiteiten voor authenticatie.

Overweeg deze managed identity-verbindingsinstellingen wanneer je de AIConnectionName eigenschap instelt op myAzureOpenAI:

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

Tijdens runtime interpreteert de host deze instellingen als één enkele myAzureOpenAI instelling:

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

Wanneer je managed identitys gebruikt, voeg je dan je identiteit toe aan de Cognitive Services OpenAI User rol.

Voeg deze instellingen bij lokaal uitvoeren toe aan het local.settings.json projectbestand. Zie Lokale ontwikkeling met op identiteit gebaseerde verbindingen voor meer informatie.

Zie Werken met toepassingsinstellingen voor meer informatie.