Delen via


Queryinvoerbinding voor Azure OpenAI-assistent voor Azure Functions

Belangrijk

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

Met de queryinvoerbinding van de Azure OpenAI-assistent kunt u API-query's voor assistenten integreren in uw code-uitvoeringen.

Zie Azure OpenAI-extensies voor Azure Functions voor informatie over de installatie en configuratie van de Azure OpenAI-extensie. Zie de Api voor Azure OpenAI-assistenten voor meer informatie over Azure OpenAI-assistenten.

Notitie

Verwijzingen en voorbeelden worden alleen verstrekt voor het Node.js v4-model.

Notitie

Verwijzingen en voorbeelden worden alleen verstrekt voor het Python v2-model.

Notitie

Hoewel beide C#-procesmodellen worden ondersteund, worden alleen geïsoleerde werkrolmodelvoorbeelden gegeven.

Opmerking

In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP GET-functie die de gespreksgeschiedenis van de chatbot van de assistent opvraagt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

    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)
    {
        return new OkObjectResult(state);
    }
}

In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP GET-functie die de gespreksgeschiedenis van de chatbot van de assistent opvraagt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

                "Ask for clarification if a user request is ambiguous.";

        AssistantCreateRequest assistantCreateRequest = new AssistantCreateRequest(assistantId, instructions);
        assistantCreateRequest.setChatStorageConnectionSetting(DEFAULT_CHATSTORAGE);
        assistantCreateRequest.setCollectionName(DEFAULT_COLLECTION);

        message.setValue(assistantCreateRequest);
        JSONObject response = new JSONObject();
        response.put("assistantId", assistantId);
        
        return request.createResponseBuilder(HttpStatus.CREATED)
            .header("Content-Type", "application/json")
            .body(response.toString())
            .build();    
}

In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP GET-functie die de gespreksgeschiedenis van de chatbot van de assistent opvraagt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
const chatBotQueryInput = input.generic({
    type: 'assistantQuery',
    id: '{assistantId}',
    timestampUtc: '{Query.timestampUTC}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
    methods: ['GET'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [chatBotQueryInput],
    handler: async (_, context) => {
        const state = context.extraInputs.get(chatBotQueryInput)
        return { status: 200, jsonBody: state }
    }
})

In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP GET-functie die de gespreksgeschiedenis van de chatbot van de assistent opvraagt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";
const chatBotQueryInput = input.generic({
    type: 'assistantQuery',
    id: '{assistantId}',
    timestampUtc: '{Query.timestampUTC}',
    chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
    collectionName: COLLECTION_NAME
})
app.http('GetChatState', {
    methods: ['GET'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraInputs: [chatBotQueryInput],
    handler: async (_, context) => {
        const state: any = context.extraInputs.get(chatBotQueryInput)
        return { status: 200, jsonBody: state }
    }
})

In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP GET-functie die de gespreksgeschiedenis van de chatbot van de assistent opvraagt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

Dit is het bestand function.json voor chatstatus ophalen:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "State",
      "type": "assistantQuery",
      "direction": "in",
      "dataType": "string",
      "id": "{assistantId}",
      "timestampUtc": "{Query.timestampUTC}",
      "chatStorageConnectionSetting": "AzureWebJobsStorage",
      "collectionName": "ChatState"
    }
  ]
}

Zie de sectie Configuratie voor meer informatie over function.json bestandseigenschappen.

using namespace System.Net

param($Request, $TriggerMetadata, $State)

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

In dit voorbeeld ziet u het aanmaakproces, waarbij de HTTP GET-functie die de gespreksgeschiedenis van de chatbot van de assistent opvraagt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

    recent_message_content = data['recentMessages'][0]['content']
    return func.HttpResponse(recent_message_content, status_code=200, mimetype="text/plain")


@apis.function_name("GetChatState")

Kenmerken

Pas het AssistantQuery kenmerk toe om een assistentquery-invoerbinding te definiëren, die ondersteuning biedt voor deze parameters:

Parameter Description
Id Hiermee haalt u de id van de assistent op om een query uit te voeren.
TimeStampUtc Optioneel. Hiermee wordt de tijdstempel van het vroegste bericht in de chatgeschiedenis opgehaald of ingesteld. De tijdstempel moet een ISO 8601-indeling hebben, bijvoorbeeld 2023-08-01T00:00:00Z.

Aantekeningen

Met de assistantQuery aantekening kunt u een assistentquery-invoerbinding definiëren, die ondersteuning biedt voor deze parameters:

Element Description
name Hiermee haalt u de naam van de invoerbinding op of stelt u deze in.
id Hiermee haalt u de id van de assistent op om een query uit te voeren.
timeStampUtc Optioneel. Hiermee wordt de tijdstempel van het vroegste bericht in de chatgeschiedenis opgehaald of ingesteld. De tijdstempel moet een ISO 8601-indeling hebben, bijvoorbeeld 2023-08-01T00:00:00Z.

Decorators

Definieer tijdens de preview de invoerbinding als een generic_input_binding binding van het type assistantQuery, die ondersteuning biedt voor deze parameters:

Parameter Description
arg_name De naam van de variabele die de bindingsparameter vertegenwoordigt.
id Hiermee haalt u de id van de assistent op om een query uit te voeren.
time_stamp_utc Optioneel. Hiermee wordt de tijdstempel van het vroegste bericht in de chatgeschiedenis opgehaald of ingesteld. De tijdstempel moet een ISO 8601-indeling hebben, bijvoorbeeld 2023-08-01T00:00:00Z.

Configuratie

De binding ondersteunt deze configuratie-eigenschappen die u in het function.json-bestand hebt ingesteld.

Eigenschappen Beschrijving
type Moet assistantQuery zijn.
direction Moet in zijn.
name De naam van de invoerbinding.
id Hiermee haalt u de id van de assistent op om een query uit te voeren.
timeStampUtc Optioneel. Hiermee wordt de tijdstempel van het vroegste bericht in de chatgeschiedenis opgehaald of ingesteld. De tijdstempel moet een ISO 8601-indeling hebben, bijvoorbeeld 2023-08-01T00:00:00Z.

Configuratie

De binding ondersteunt deze eigenschappen, die zijn gedefinieerd in uw code:

Eigenschappen Description
id Hiermee haalt u de id van de assistent op om een query uit te voeren.
timeStampUtc Optioneel. Hiermee wordt de tijdstempel van het vroegste bericht in de chatgeschiedenis opgehaald of ingesteld. De tijdstempel moet een ISO 8601-indeling hebben, bijvoorbeeld 2023-08-01T00:00:00Z.

Gebruik

Zie de sectie Voorbeeld voor volledige voorbeelden.