Azure OpenAI-Erweiterung für Azure Functions

Wichtig

Die Azure OpenAI-Erweiterung für Azure Functions befindet sich derzeit in der Vorschau.

Die Azure OpenAI-Erweiterung für Azure Functions implementiert eine Reihe von Triggern und Bindungen, mit denen Sie Features und Verhaltensweisen von Azure OpenAI in Foundry Models einfach in Ihre Funktionscodeausführungen integrieren können.

Azure Functions ist ein ereignisgesteuerter Computedienst, der mehrere Trigger und Bindungen bereitstellt, um das Herstellen von Verbindungen mit anderen Azure-Diensten zu vereinfachen.

Mit der Integration zwischen Azure OpenAI und Functions können Sie Funktionen mit folgenden Fähigkeiten erstellen:

Aktion Trigger/Bindungstyp
Verwenden eines Standardtextprompts für die Vervollständigung von Inhalt Azure OpenAI-Eingabebindung für Textvervollständigung
Antworten auf eine Assistentenanforderung zum Aufrufen einer Funktion Azure OpenAI-Assistententrigger
Erstellen eines Assistenten Azure OpenAI-Ausgabebindung zum Erstellen eines Assistenten
Senden einer Nachricht an einen Assistenten Azure OpenAI-Eingabebindung zum Senden einer Nachricht an den Assistenten
Abrufen des Assistentenverlaufs Azure OpenAI-Eingabebindung zum Abfragen des Assistenten
Lesen von Texteinbettungen Azure OpenAI-Eingabebindung für Einbettungen
Schreiben in eine Vektordatenbank Azure OpenAI-Ausgabebindung zum Speichern von Einbettungen
Lesen aus einer Vektordatenbank Azure OpenAI-Eingabebindung für die semantische Suche

Installieren der Erweiterung

Das NuGet-Erweiterungspaket, das Sie installieren, hängt vom C#-Modus (In-Process oder isolierter Workerprozess) ab, den Sie in Ihrer Funktions-App verwenden:

Fügen Sie Ihrem Projekt die Azure OpenAI-Erweiterung hinzu, indem Sie das NuGet-Paket Microsoft.Azure.Functions.Worker.Extensions.OpenAI installieren. Dazu können Sie die .NET-CLI verwenden:

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

Wenn Sie eine Vektordatenbank zum Speichern von Inhalten verwenden, sollten Sie auch mindestens eines der folgenden NuGet-Pakete installieren:

Installieren des Pakets

Sie können die Vorschau-Erweiterung hinzufügen, indem Sie den folgenden Code in Ihrer host.json Datei hinzufügen oder ersetzen, der speziell eine Vorschauversion des 4.x-Bundles anspricht, die die OpenAI-Erweiterung enthält:

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

Go wird derzeit für diese Funktion nicht unterstützt.

Verbindungen

Um die Azure OpenAI-Bindungserweiterung zu verwenden, muss man eine Verbindung zu einer OpenAI-Modelldefinition angeben. Stellen Sie die OpenAI-Modellverbindung in Ihren Bindings mit einem dieser Ansätze ein:

  • Verwenden Sie die AIConnectionName Binding-Eigenschaft (bevorzugt für Azure OpenAI).
  • Setze AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_KEY in den App-Einstellungen (für Azure OpenAI).
  • Setze nur Open_API_Key in den App-Einstellungen (für https://api.openai.com).

Die Art und Weise, wie Sie die Verbindung einstellen, hängt sowohl von der Modell-API als auch von der Authentifizierungsmethode ab, wie in der folgenden Tabelle angegeben:

Authentifizierungs-/Modell-API Azure OpenAI OpenAI (https://api.openai.com)
Managed Identity-Verbindung AIConnectionName Nicht unterstützt
Key Vault-Referenz AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
App-Konfigurationsreferenz AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Gemeinsames Geheimnis AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Nutzen Sie verwaltete Identitätsbasierte Verbindungen und die Immobilie AIConnectionName .

Wenn Sie verwenden AIConnectionName, hängt der Wert dieser Eigenschaftseinstellung vom Verbindungstyp ab:

  • Managed Identity-Verbindung: Die AIConnectionName Eigenschaft wird <CONNECTION_NAME_PREFIX> von einer Gruppe von Settings geteilt, die zusammen eine identitätsbasierte Verbindung zu Azure OpenAI definieren. Weitere Informationen finden Sie unter Identitätsverbindungen definieren.
  • Key Vault-Referenz: Die AIConnectionName Property-Einstellung liefert eine Azure Key Vault-Referenz auf den Standort, an dem der API-Schlüssel zentral verwaltet wird. Weitere Informationen finden Sie unter Define Key Vault connections.
  • App Configuration Reference: Die AIConnectionName Eigenschaftseinstellung liefert eine Azure App Configuration-Referenz, die einen API-Schlüssel oder eine Key Vault-Referenz zurückgibt. Weitere Informationen finden Sie unter Azure App Configuration im Artikel über Verbindungen.
  • API-Schlüssel: Die AIConnectionName Eigenschaftseinstellung wird direkt auf App-Einstellungen umgesetzt, die den Endpunkt und den Schlüssel enthalten. Da gemeinsame Schlüssel kompromittiert werden können, sollten Sie wenn möglich verwaltete Identitätsverbindungen verwenden. Weitere Informationen finden Sie unter Zusammenhänge definieren.

Um mehr über Bindungsverbindungen zu erfahren, siehe Verbindungen verwalten in Azure Functions.

Die OpenAI-Bindungen enthalten eine AIConnectionName Eigenschaft, mit der Sie die <ConnectionNamePrefix> für die Gruppe von App-Einstellungen festlegen können, die die Verbindung zu Azure OpenAI definieren:

Einstellungsname Beschreibung
<CONNECTION_NAME_PREFIX>__endpoint Setzt das URI-Endpunkt des Azure OpenAI-Dienstes. Diese Einstellung ist immer erforderlich.
<CONNECTION_NAME_PREFIX>__clientId Legt die bestimmte vom Benutzer zugewiesene Identität fest, die beim Abrufen eines Zugriffstokens verwendet werden soll. Erfordert, dass <CONNECTION_NAME_PREFIX>__credential auf managedidentity festgelegt wird. Die Eigenschaft akzeptiert eine Client-ID, die einer vom Benutzer zugewiesenen Identität entspricht, die der Anwendung zugeordnet ist. Es ist nicht möglich, sowohl eine Ressourcen-ID als auch eine Client-ID anzugeben. Wenn Sie diese Eigenschaft nicht spezifizieren, wird die systemzugewiesene Identität verwendet. Diese Eigenschaft wird in Szenarien für die lokale Entwicklung anders verwendet, in denen credential nicht festgelegt werden darf.
<CONNECTION_NAME_PREFIX>__credential Definiert, wie ein Zugriffstoken für die Verbindung abgerufen wird. Wird für die verwaltete Identitätsauthentifizierung verwendet managedidentity . Dieser Wert ist nur gültig, wenn eine verwaltete Identität in der Hostingumgebung verfügbar ist.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Wenn credential auf gesetzt ist managedidentity, setzen Sie diese Eigenschaft so, dass sie die Ressourcen-Identifikator angibt, die beim Erlangen eines Tokens verwendet werden soll. Die Eigenschaft akzeptiert einen Ressourcenbezeichner, der der Ressourcen-ID der benutzerdefinierten verwalteten Identität entspricht. Es ist nicht möglich, sowohl eine Ressourcen-ID als auch eine Client-ID anzugeben. Wenn Sie keines von beiden angeben, wird die systemzugewiesene Identität verwendet. Diese Eigenschaft wird in Szenarien für die lokale Entwicklung anders verwendet, in denen credential nicht festgelegt werden darf.
<CONNECTION_NAME_PREFIX>__key Setzt den gemeinsamen geheimen Schlüssel, der für den Zugriff auf den Endpunkt des Azure OpenAI-Dienstes erforderlich ist, mittels schlüsselbasierter Authentifizierung. Als Sicherheitsbest-Practice sollten Sie immer Microsoft Entra ID mit verwalteten Identitäten zur Authentifizierung verwenden.

Betrachten Sie diese Managed Identity Connection-Einstellungen, wenn Sie die Eigenschaft AIConnectionName auf myAzureOpenAIsetzen:

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

Zur Laufzeit interpretiert der Host diese Einstellungen als eine einzige myAzureOpenAI Einstellung:

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

Wenn Sie verwaltete Identitäten verwenden, fügen Sie Ihre Identität unbedingt der Cognitive Services OpenAI User Rolle hinzu.

Beim lokalen Ausführen fügen Sie diese Einstellungen der local.settings.json Projektdatei hinzu. Weitere Informationen finden Sie unter "Lokale Entwicklung mit identitätsbasierten Verbindungen".

Weitere Informationen finden Sie unter Verwenden von Anwendungseinstellungen.