Asystent usługi Azure OpenAI po powiązaniu wejściowym dla usługi Azure Functions

Ważne

Rozszerzenie Azure OpenAI dla usługi Azure Functions jest obecnie dostępne w wersji zapoznawczej.

Asystent usługi Azure OpenAI po powiązaniu danych wejściowych umożliwia wysyłanie monitów do asystentów czatbotów.

Aby uzyskać informacje na temat konfigurowania i konfigurowania rozszerzenia Azure OpenAI, zobacz Azure OpenAI extensions for Azure Functions (Rozszerzenia azure OpenAI dla usługi Azure Functions). Aby dowiedzieć się więcej na temat asystentów usługi Azure OpenAI, zobacz Interfejs API asystentów usługi Azure OpenAI.

Uwaga

Odwołania i przykłady są udostępniane tylko dla modelu Node.js w wersji 4.

Uwaga

Odwołania i przykłady są udostępniane tylko dla modelu języka Python w wersji 2.

Uwaga

Chociaż oba modele procesów języka C# są obsługiwane, udostępniane są tylko izolowane przykłady modeli procesów roboczych.

Przykład

Wsparcie Go nie jest obecnie dostępne dla tego przypisania.

W tym przykładzie pokazano proces tworzenia, w którym funkcja HTTP POST, która wysyła użytkownikowi monity do asystenta czatbota. Odpowiedź na monit jest zwracana w odpowiedzi HTTP.

/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static IActionResult PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
    return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}

W tym przykładzie pokazano proces tworzenia, w którym funkcja HTTP POST, która wysyła użytkownikowi monity do asystenta czatbota. Odpowiedź na monit jest zwracana w odpowiedzi HTTP.

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.POST}, 
        authLevel = AuthorizationLevel.FUNCTION,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", aiConnectionName = "AzureOpenAI", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        
        List<AssistantMessage> recentMessages = state.getRecentMessages();
        String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
        
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(response)
            .build();
}

W tym przykładzie pokazano proces tworzenia, w którym funkcja HTTP POST, która wysyła użytkownikowi monity do asystenta czatbota. Odpowiedź na monit jest zwracana w odpowiedzi HTTP.

const { app, input, output } = require("@azure/functions");

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    aiConnectionName: 'AzureOpenAI',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'function',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    aiConnectionName: 'AzureOpenAI',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'function',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState: any = context.extraInputs.get(assistantPostInput)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})

W tym przykładzie pokazano proces tworzenia, w którym funkcja HTTP POST, która wysyła użytkownikowi monity do asystenta czatbota. Odpowiedź na monit jest zwracana w odpowiedzi HTTP.

Oto plik function.json do publikowania zapytania użytkownika:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "State",
      "type": "assistantPost",
      "direction": "in",
      "dataType": "string",
      "id": "{assistantId}",
      "userMessage": "{Query.message}",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState",
      "aiConnectionName": "AzureOpenAI"
    }
  ]
}

Aby uzyskać więcej informacji na temat function.json właściwości pliku, zobacz sekcję Konfiguracja.

using namespace System.Net

param($Request, $TriggerMetadata, $State)

$recent_message_content = "No recent messages!"

if ($State.recentMessages.Count -gt 0) {
    $recent_message_content = $State.recentMessages[0].content
}

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body       = $recent_message_content
    Headers    = @{
        "Content-Type" = "text/plain"
    }
})

W tym przykładzie pokazano proces tworzenia, w którym funkcja HTTP POST, która wysyła użytkownikowi monity do asystenta czatbota. Odpowiedź na monit jest zwracana w odpowiedzi HTTP.

@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
    arg_name="state",
    id="{assistantId}",
    user_message="{Query.message}",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
    ai_connection_name="AzureOpenAI",
    chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
    collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
    # Parse the JSON string into a dictionary
    data = json.loads(state)

    # Extract the content of the recentMessage
    recent_message_content = data["recentMessages"][0]["content"]
    return func.HttpResponse(
        recent_message_content, status_code=200, mimetype="text/plain"
    )

Atrybuty

Zastosuj atrybut, aby zdefiniować asystenta po powiązaniu PostUserQuery wejściowym, który obsługuje następujące parametry:

Parametr Opis
Id Identyfikator asystenta do zaktualizowania.
UserMessage Pobiera lub ustawia komunikat użytkownika dla modelu uzupełniania czatu zakodowany jako ciąg.
AIConnectionName Opcjonalnie. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY.
ChatModel Opcjonalnie. Pobiera lub ustawia identyfikator modelu do użycia jako ciąg z wartością gpt-3.5-turbodomyślną .
Temperatura Opcjonalnie. Pobiera lub ustawia temperaturę próbkowania do użycia jako ciąg między 0 i 2. Wyższe wartości (0.8) sprawiają, że dane wyjściowe będą bardziej losowe, a niższe wartości, takie jak (0.2), sprawiają, że dane wyjściowe są bardziej skoncentrowane i deterministyczne. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
TopP Opcjonalnie. Pobiera lub ustawia alternatywę dla próbkowania z temperaturą, nazywaną próbkowaniem jądra, jako ciągiem. W tej metodzie próbkowania model uwzględnia wyniki tokenów z masą top_p prawdopodobieństwa. Oznacza to 0.1 , że uwzględniane są tylko tokeny składające się z 10% masy prawdopodobieństwa. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
MaxTokens Opcjonalnie. Pobiera lub ustawia maksymalną liczbę tokenów do wygenerowania w uzupełnianiu jako ciąg z wartością domyślną 100. Liczba tokenów zapytania plus max_tokens nie może przekraczać długości kontekstu modelu. Większość modeli ma długość kontekstu 2048 tokenów (z wyjątkiem najnowszych modeli, które obsługują 4096).
IsReasoningModel Opcjonalnie. Pobiera lub ustawia wartość wskazującą, czy model uzupełniania czatu jest modelem rozumowania. Ta opcja jest eksperymentalna i skojarzona z modelem rozumowania, dopóki wszystkie modele nie mają parzystości w oczekiwanych właściwościach z wartością falsedomyślną .

Adnotacje

Adnotacja PostUserQuery umożliwia zdefiniowanie asystenta po powiązaniu wejściowym, które obsługuje następujące parametry:

Składnik Opis
nazwa Nazwa powiązania wyjściowego.
id Identyfikator asystenta do zaktualizowania.
userMessage Pobiera lub ustawia komunikat użytkownika dla modelu uzupełniania czatu zakodowany jako ciąg.
aiConnectionName Opcjonalnie. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY.
chatModel Pobiera lub ustawia identyfikator modelu do użycia jako ciąg z wartością gpt-3.5-turbodomyślną .
temperatura Opcjonalnie. Pobiera lub ustawia temperaturę próbkowania do użycia jako ciąg między 0 i 2. Wyższe wartości (0.8) sprawiają, że dane wyjściowe będą bardziej losowe, a niższe wartości, takie jak (0.2), sprawiają, że dane wyjściowe są bardziej skoncentrowane i deterministyczne. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
topP Opcjonalnie. Pobiera lub ustawia alternatywę dla próbkowania z temperaturą, nazywaną próbkowaniem jądra, jako ciągiem. W tej metodzie próbkowania model uwzględnia wyniki tokenów z masą top_p prawdopodobieństwa. Oznacza to 0.1 , że uwzględniane są tylko tokeny składające się z 10% masy prawdopodobieństwa. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
maxTokens Opcjonalnie. Pobiera lub ustawia maksymalną liczbę tokenów do wygenerowania w uzupełnianiu jako ciąg z wartością domyślną 100. Liczba tokenów zapytania plus max_tokens nie może przekraczać długości kontekstu modelu. Większość modeli ma długość kontekstu 2048 tokenów (z wyjątkiem najnowszych modeli, które obsługują 4096).
isReasoningModel Opcjonalnie. Pobiera lub ustawia wartość wskazującą, czy model uzupełniania czatu jest modelem rozumowania. Ta opcja jest eksperymentalna i skojarzona z modelem rozumowania, dopóki wszystkie modele nie mają parzystości w oczekiwanych właściwościach z wartością falsedomyślną .

Dekoratory

W wersji zapoznawczej zdefiniuj powiązanie wyjściowe jako generic_output_binding powiązanie typu postUserQuery, które obsługuje następujące parametry:

Parametr Opis
arg_name Nazwa zmiennej reprezentującej parametr powiązania.
id Identyfikator asystenta do zaktualizowania.
user_message Pobiera lub ustawia komunikat użytkownika dla modelu uzupełniania czatu zakodowany jako ciąg.
ai_connection_name Opcjonalnie. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY.
chat_model Pobiera lub ustawia identyfikator modelu do użycia jako ciąg z wartością gpt-3.5-turbodomyślną .
temperatura Opcjonalnie. Pobiera lub ustawia temperaturę próbkowania do użycia jako ciąg między 0 i 2. Wyższe wartości (0.8) sprawiają, że dane wyjściowe będą bardziej losowe, a niższe wartości, takie jak (0.2), sprawiają, że dane wyjściowe są bardziej skoncentrowane i deterministyczne. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
top_p Opcjonalnie. Pobiera lub ustawia alternatywę dla próbkowania z temperaturą, nazywaną próbkowaniem jądra, jako ciągiem. W tej metodzie próbkowania model uwzględnia wyniki tokenów z masą top_p prawdopodobieństwa. Oznacza to 0.1 , że uwzględniane są tylko tokeny składające się z 10% masy prawdopodobieństwa. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
max_tokens Opcjonalnie. Pobiera lub ustawia maksymalną liczbę tokenów do wygenerowania w uzupełnianiu jako ciąg z wartością domyślną 100. Liczba tokenów zapytania plus max_tokens nie może przekraczać długości kontekstu modelu. Większość modeli ma długość kontekstu 2048 tokenów (z wyjątkiem najnowszych modeli, które obsługują 4096).
is_reasoning _model Opcjonalnie. Pobiera lub ustawia wartość wskazującą, czy model uzupełniania czatu jest modelem rozumowania. Ta opcja jest eksperymentalna i skojarzona z modelem rozumowania, dopóki wszystkie modele nie mają parzystości w oczekiwanych właściwościach z wartością falsedomyślną .

Konfigurowanie

Powiązanie obsługuje te właściwości konfiguracji ustawione w pliku function.json.

Właściwości Opis
typ Musi mieć wartość PostUserQuery.
kierunek Musi mieć wartość out.
nazwa Nazwa powiązania wyjściowego.
id Identyfikator asystenta do zaktualizowania.
userMessage Pobiera lub ustawia komunikat użytkownika dla modelu uzupełniania czatu zakodowany jako ciąg.
aiConnectionName Opcjonalnie. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY.
chatModel Pobiera lub ustawia identyfikator modelu do użycia jako ciąg z wartością gpt-3.5-turbodomyślną .
temperatura Opcjonalnie. Pobiera lub ustawia temperaturę próbkowania do użycia jako ciąg między 0 i 2. Wyższe wartości (0.8) sprawiają, że dane wyjściowe będą bardziej losowe, a niższe wartości, takie jak (0.2), sprawiają, że dane wyjściowe są bardziej skoncentrowane i deterministyczne. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
topP Opcjonalnie. Pobiera lub ustawia alternatywę dla próbkowania z temperaturą, nazywaną próbkowaniem jądra, jako ciągiem. W tej metodzie próbkowania model uwzględnia wyniki tokenów z masą top_p prawdopodobieństwa. Oznacza to 0.1 , że uwzględniane są tylko tokeny składające się z 10% masy prawdopodobieństwa. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
maxTokens Opcjonalnie. Pobiera lub ustawia maksymalną liczbę tokenów do wygenerowania w uzupełnianiu jako ciąg z wartością domyślną 100. Liczba tokenów zapytania plus max_tokens nie może przekraczać długości kontekstu modelu. Większość modeli ma długość kontekstu 2048 tokenów (z wyjątkiem najnowszych modeli, które obsługują 4096).
isReasoningModel Opcjonalnie. Pobiera lub ustawia wartość wskazującą, czy model uzupełniania czatu jest modelem rozumowania. Ta opcja jest eksperymentalna i skojarzona z modelem rozumowania, dopóki wszystkie modele nie mają parzystości w oczekiwanych właściwościach z wartością falsedomyślną .

Konfigurowanie

Powiązanie obsługuje te właściwości zdefiniowane w kodzie:

Właściwości Opis
id Identyfikator asystenta do zaktualizowania.
userMessage Pobiera lub ustawia komunikat użytkownika dla modelu uzupełniania czatu zakodowany jako ciąg.
aiConnectionName Opcjonalnie. Pobiera lub ustawia nazwę sekcji konfiguracji dla ustawień łączności usługi sztucznej inteligencji. W przypadku usługi Azure OpenAI: w przypadku określenia wyszukaj wartości "Endpoint" i "Key" w tej sekcji konfiguracji. Jeśli nie zostanie określona lub sekcja nie istnieje, wróć do zmiennych środowiskowych: AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY. W przypadku uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika ta właściwość jest wymagana. W przypadku usługi OpenAI (spoza platformy Azure) ustaw zmienną środowiskową OPENAI_API_KEY.
chatModel Pobiera lub ustawia identyfikator modelu do użycia jako ciąg z wartością gpt-3.5-turbodomyślną .
temperatura Opcjonalnie. Pobiera lub ustawia temperaturę próbkowania do użycia jako ciąg między 0 i 2. Wyższe wartości (0.8) sprawiają, że dane wyjściowe będą bardziej losowe, a niższe wartości, takie jak (0.2), sprawiają, że dane wyjściowe są bardziej skoncentrowane i deterministyczne. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
topP Opcjonalnie. Pobiera lub ustawia alternatywę dla próbkowania z temperaturą, nazywaną próbkowaniem jądra, jako ciągiem. W tej metodzie próbkowania model uwzględnia wyniki tokenów z masą top_p prawdopodobieństwa. Oznacza to 0.1 , że uwzględniane są tylko tokeny składające się z 10% masy prawdopodobieństwa. Należy użyć metody Temperature lub TopP, ale nie obu tych elementów.
maxTokens Opcjonalnie. Pobiera lub ustawia maksymalną liczbę tokenów do wygenerowania w uzupełnianiu jako ciąg z wartością domyślną 100. Liczba tokenów zapytania plus max_tokens nie może przekraczać długości kontekstu modelu. Większość modeli ma długość kontekstu 2048 tokenów (z wyjątkiem najnowszych modeli, które obsługują 4096).
isReasoningModel Opcjonalnie. Pobiera lub ustawia wartość wskazującą, czy model uzupełniania czatu jest modelem rozumowania. Ta opcja jest eksperymentalna i skojarzona z modelem rozumowania, dopóki wszystkie modele nie mają parzystości w oczekiwanych właściwościach z wartością falsedomyślną .

Użycie

Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.

Connections

Aby korzystać z rozszerzenia Azure OpenAI, musisz określić połączenie z definicją modelu OpenAI. Ustaw połączenie modelu OpenAI w swoich bindingach, stosując jedno z następujących podejść:

  • Użyj właściwości wiązania AIConnectionName (preferowanej dla Azure OpenAI).
  • Ustaw AZURE_OPENAI_ENDPOINT i AZURE_OPENAI_KEY w ustawieniach aplikacji (dla Azure OpenAI).
  • Ustaw tylko Open_API_Key w ustawieniach aplikacji (dla https://api.openai.com).

Sposób, w jaki ustawiasz połączenie, zależy zarówno od API modelu, jak i metody uwierzytelniania, jak pokazano w poniższej tabeli:

API uwierzytelniania/modelu Azure OpenAI OpenAI (https://api.openai.com)
Połączenie zarządzanej tożsamości AIConnectionName Niewspierane
Odniesienie do Key Vault AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Referencja konfiguracji aplikacji AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Wspólny klucz tajny AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Użyj połączeń opartych na zarządzanej tożsamości oraz właściwości AIConnectionName .

Gdy używamy AIConnectionName, wartość tego ustawienia właściwości zależy od typu połączenia:

  • Połączenie zarządzanej tożsamości: Własność AIConnectionName jest współdzielona <CONNECTION_NAME_PREFIX> przez grupę ustawień, które razem definiują połączenie oparte na tożsamości z Azure OpenAI. Więcej informacji można znaleźć w artykule Definiuj powiązania tożsamości.
  • Key Vault referencja: Ustawienie AIConnectionName właściwości zwraca referencję Azure Key Vault do miejsca, w którym klucz API jest centralnie przechowywany. Więcej informacji można znaleźć w artykule Definiuj połączenia Key Vault.
  • Referencja konfiguracji aplikacji: Ustawienie AIConnectionName właściwości zwraca referencję Azure App Configuration, która zwraca klucz API lub referencję do Key Vault. Więcej informacji można znaleźć w artykule o połączeniach w sekcji Azure App Configuration.
  • Klucz API: Ustawienie AIConnectionName właściwości rozwiązuje się bezpośrednio do ustawień aplikacji zawierających punkt końcowy i klucz. Ponieważ klucze współdzielone mogą zostać zagrożone, stosuj połączenia zarządzane tożsamości, gdy to możliwe. Więcej informacji można znaleźć w artykule Definiuj połączenia.

Aby dowiedzieć się więcej o powiązaniach wiązanych, zobacz Zarządzanie połączeniami w Azure Functions.

Powiązania OpenAI zawierają właściwośćAIConnectionName, którą możesz użyć do określenia <ConnectionNamePrefix> grupy ustawień aplikacji definiujących połączenie z Azure OpenAI:

Nazwa ustawień Opis
<CONNECTION_NAME_PREFIX>__endpoint Sets endpoint URI usługi Azure OpenAI. To ustawienie jest zawsze wymagane.
<CONNECTION_NAME_PREFIX>__clientId Ustawia określoną tożsamość przypisaną przez użytkownika do użycia podczas uzyskiwania tokenu dostępu. Wymaga, aby <CONNECTION_NAME_PREFIX>__credential było ustawione na managedidentity. Właściwość akceptuje identyfikator klienta odpowiadający tożsamości przypisanej przez użytkownika do aplikacji. Jest to nieprawidłowe określenie zarówno identyfikatora zasobu, jak i identyfikatora klienta. Jeśli nie określisz tej właściwości, używana jest tożsamość przypisana przez system. Ta właściwość jest używana inaczej w lokalnych scenariuszach programowania, gdy credential nie należy ich ustawiać.
<CONNECTION_NAME_PREFIX>__credential Definiuje sposób uzyskiwania tokenu access dla połączenia. Służy managedidentity do uwierzytelniania tożsamości zarządzanej. Ta wartość jest prawidłowa tylko wtedy, gdy tożsamość zarządzana jest dostępna w środowisku hostingu.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Gdy credential jest ustawione na managedidentity, ustaw tę właściwość, aby określić identyfikator zasobu, którego ma się użyć przy uzyskaniu tokena. Właściwość akceptuje identyfikator zasobu odpowiadający identyfikatorowi zasobu tożsamości zarządzanej zdefiniowanej przez użytkownika. Nie można określić zarówno identyfikatora zasobu, jak i identyfikatora klienta. Jeśli nie określisz żadnej z tych funkcji, używa się tożsamości przypisanej przez system. Ta właściwość jest używana inaczej w lokalnych scenariuszach programowania, gdy credential nie należy ich ustawiać.
<CONNECTION_NAME_PREFIX>__key Ustawia wspólny tajny klucz potrzebny do dostępu do punktu końcowego usługi Azure OpenAI, korzystając z uwierzytelniania opartego na kluczu. Jako najlepszą praktykę bezpieczeństwa zawsze używaj Microsoft Entra ID z zarządzanymi tożsamościami do uwierzytelniania.

Rozważ te ustawienia zarządzania połączeniem tożsamości, gdy ustawiasz AIConnectionName własność na:myAzureOpenAI

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

W czasie działania host interpretuje te ustawienia jako jedno myAzureOpenAI ustawienie:

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

Korzystając z zarządzanych tożsamości, upewnij się, że dodajesz swoją tożsamość do roli użytkownika OpenAI w Usługach Kognitywnych .

Podczas uruchamiania lokalnie dodaj te ustawienia do pliku projektu local.settings.json . Aby uzyskać więcej informacji, zobacz Programowanie lokalne przy użyciu połączeń opartych na tożsamościach.

Aby uzyskać więcej informacji, zobacz Praca z ustawieniami aplikacji.