Dela via


Azure OpenAI-assistent efter indatabindning för Azure Functions

Viktigt!

Azure OpenAI-tillägget för Azure Functions är för närvarande i förhandsversion.

Med Azure OpenAI-assistenten efter indatabindningen kan du skicka frågor till chattrobotar för assistenter.

Information om konfiguration och konfigurationsinformation för Azure OpenAI-tillägget finns i Azure OpenAI-tillägg för Azure Functions. Mer information om Azure OpenAI-assistenter finns i [Azure OpenAI Assistants API](.. /ai-services/openai/

Kommentar

Referenser och exempel tillhandahålls endast för modellen Node.js v4.

Kommentar

Referenser och exempel tillhandahålls endast för Python v2-modellen.

Kommentar

Båda C#-processmodellerna stöds, men endast exempel på isolerade arbetsmodeller tillhandahålls.

Exempel

Det här exemplet visar skapandeprocessen, där FUNKTIONEN HTTP POST som skickar användarfrågor till chattroboten assistent. Svaret på uppmaningen returneras i HTTP-svaret.

/// <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)
{

Det här exemplet visar skapandeprocessen, där FUNKTIONEN HTTP POST som skickar användarfrågor till chattroboten assistent. Svaret på uppmaningen returneras i HTTP-svaret.

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(

Exempel är ännu inte tillgängliga.

Det här exemplet visar skapandeprocessen, där FUNKTIONEN HTTP POST som skickar användarfrågor till chattroboten assistent. Svaret på uppmaningen returneras i HTTP-svaret.

    }
})


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)

Det här exemplet visar skapandeprocessen, där FUNKTIONEN HTTP POST som skickar användarfrågor till chattroboten assistent. Svaret på uppmaningen returneras i HTTP-svaret.

Här är function.json-filen för postanvändarfråga:

{
  "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"
    }
  ]
}

Mer information om function.json filegenskaper finns i avsnittet 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"
    }
})

Det här exemplet visar skapandeprocessen, där FUNKTIONEN HTTP POST som skickar användarfrågor till chattroboten assistent. Svaret på uppmaningen returneras i HTTP-svaret.

    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)

Attribut

PostUserQuery Använd attributet för att definiera en assistent efter indatabindning, som stöder följande parametrar:

Parameter Description
ID ID:t för assistenten som ska uppdateras.
Modell Namnet på den OpenAI-chattmodell som ska användas. För Azure OpenAI är det här värdet namnet på modelldistributionen.

Kommentarer

Med anteckningen PostUserQuery kan du definiera en assistent efter indatabindningen, som stöder följande parametrar:

Element Description
Namn Namnet på utdatabindningen.
id ID:t för assistenten som ska uppdateras.
Modell Namnet på den OpenAI-chattmodell som ska användas. För Azure OpenAI är det här värdet namnet på modelldistributionen.

Dekoratörer

Under förhandsversionen definierar du utdatabindningen som en generic_output_binding bindning av typen postUserQuery, som stöder följande parametrar:

Parameter Description
arg_name Namnet på variabeln som representerar bindningsparametern.
id ID:t för assistenten som ska uppdateras.
Modell Namnet på den OpenAI-chattmodell som ska användas. För Azure OpenAI är det här värdet namnet på modelldistributionen.

Konfiguration

Bindningen stöder de konfigurationsegenskaper som du anger i filen function.json.

Property Beskrivning
typ Måste vara PostUserQuery.
riktning Måste vara out.
Namn Namnet på utdatabindningen.
id ID:t för assistenten som ska uppdateras.
Modell Namnet på den OpenAI-chattmodell som ska användas. För Azure OpenAI är det här värdet namnet på modelldistributionen.

Konfiguration

Bindningen stöder dessa egenskaper, som definieras i koden:

Property beskrivning
id ID:t för assistenten som ska uppdateras.
Modell Namnet på den OpenAI-chattmodell som ska användas. För Azure OpenAI är det här värdet namnet på modelldistributionen.

Användning

Se avsnittet Exempel för fullständiga exempel.