Azure OpenAI-Eingabebindung zum Senden einer Nachricht an den Assistenten für Azure Functions

Wichtig

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

Mit der Azure OpenAI-Eingabebindung zum Senden einer Nachricht an den Assistenten können Sie Prompts an Assistenten-Chatbots senden.

Informationen zu Einrichtungs- und Konfigurationsdetails der Azure OpenAI-Erweiterung finden Sie unter Azure OpenAI-Erweiterungen für Azure Functions. Weitere Informationen zu Azure OpenAI-Assistenten finden Sie unter [Azure OpenAI Assistants API](.). /ai-services/openai/

Hinweis

Referenzen und Beispiele werden nur für das Node.js v4-Modell bereitgestellt.

Hinweis

Referenzen und Beispiele werden nur für das Python v2-Modell bereitgestellt.

Hinweis

Während beide C#-Prozessmodelle unterstützt werden, werden nur Isolierte Arbeitsmodellbeispiele bereitgestellt.

Beispiel

In diesem Beispiel wird der Erstellungsprozess veranschaulicht, bei dem die HTTP POST-Funktion Benutzerprompts an den Assistenten-Chatbot sendet. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

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

/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static async Task<IActionResult> GetChatState(
   [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
   string assistantId,
   [AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{

In diesem Beispiel wird der Erstellungsprozess veranschaulicht, bei dem die HTTP POST-Funktion Benutzerprompts an den Assistenten-Chatbot sendet. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

public HttpResponseMessage getChatState(
    @HttpTrigger(
        name = "req",
        methods = {HttpMethod.GET}, 
        authLevel = AuthorizationLevel.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantQuery(name = "AssistantState", id = "{assistantId}", timestampUtc = "{Query.timestampUTC}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
    final ExecutionContext context) {
        return request.createResponseBuilder(HttpStatus.OK)
            .header("Content-Type", "application/json")
            .body(state)
            .build();
}

/*
 * HTTP POST function that sends user prompts to the assistant chat bot.
 */ 
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(

Beispiele sind noch nicht verfügbar.

In diesem Beispiel wird der Erstellungsprozess veranschaulicht, bei dem die HTTP POST-Funktion Benutzerprompts an den Assistenten-Chatbot sendet. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

    }
})


const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    model: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    userMessage: '{Query.message}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
    methods: ['POST'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [assistantPostInput],
    handler: async (_, context) => {
        const chatState: any = context.extraInputs.get(assistantPostInput)

In diesem Beispiel wird der Erstellungsprozess veranschaulicht, bei dem die HTTP POST-Funktion Benutzerprompts an den Assistenten-Chatbot sendet. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

Dies ist die function.json Datei für die Abfrage nach dem Benutzer:

{
  "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}",
      "model": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

Weitere Informationen zu den Dateieigenschaften von function.json finden Sie im Abschnitt Konfiguration.

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"
    }
})

In diesem Beispiel wird der Erstellungsprozess veranschaulicht, bei dem die HTTP POST-Funktion Benutzerprompts an den Assistenten-Chatbot sendet. Die Antwort auf den Prompt wird in der HTTP-Antwort zurückgegeben.

    response_json = {"assistantId": assistantId}
    return func.HttpResponse(json.dumps(response_json), status_code=202, mimetype="application/json")


@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(arg_name="state", id="{assistantId}", user_message="{Query.message}", model="%CHAT_MODEL_DEPLOYMENT_NAME%", 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)

Attribute

Wenden Sie das Attribut PostUserQuery an, um eine Eingabebindung zum Senden einer Nachricht an den Assistenten zu definieren, die diese Parameter unterstützt:

Parameter Beschreibung
Id Die ID des zu aktualisierenden Assistenten.
Modell Der Name des zu verwendenden OpenAI-Chatmodells. Bei Azure OpenAI ist dieser Wert der Name der Modellbereitstellung.

Anmerkungen

Mit der Anmerkung PostUserQuery können Sie eine Eingabebindung zum Senden einer Nachricht an den Assistenten definieren, die diese Parameter unterstützt:

Element BESCHREIBUNG
name Der Name der Ausgabebindung.
id Die ID des zu aktualisierenden Assistenten.
Modell Der Name des zu verwendenden OpenAI-Chatmodells. Bei Azure OpenAI ist dieser Wert der Name der Modellbereitstellung.

Decorator-Elemente

Definieren Sie während der Vorschau die Ausgabebindung als Bindung generic_output_binding vom Typ postUserQuery, die diese Parameter unterstützt:

Parameter Beschreibung
arg_name Der Name der Variablen, die den Bindungsparameter darstellt.
id Die ID des zu aktualisierenden Assistenten.
Modell Der Name des zu verwendenden OpenAI-Chatmodells. Bei Azure OpenAI ist dieser Wert der Name der Modellbereitstellung.

Konfiguration

Die Bindung unterstützt diese Konfigurationseigenschaften, die Sie in der Datei „function.json“ festlegen.

Eigenschaft Beschreibung des Dataflows
type Muss PostUserQuerylauten.
direction Muss outlauten.
name Der Name der Ausgabebindung.
id Die ID des zu aktualisierenden Assistenten.
Modell Der Name des zu verwendenden OpenAI-Chatmodells. Bei Azure OpenAI ist dieser Wert der Name der Modellbereitstellung.

Konfiguration

Die Bindung unterstützt diese Eigenschaften, die in Ihrem Code definiert sind:

Eigenschaft BESCHREIBUNG
id Die ID des zu aktualisierenden Assistenten.
Modell Der Name des zu verwendenden OpenAI-Chatmodells. Bei Azure OpenAI ist dieser Wert der Name der Modellbereitstellung.

Verbrauch

Vollständige Beispiele finden Sie im Abschnitt Beispiele.