Bagikan melalui


Pengikatan input kueri asisten Azure OpenAI untuk Azure Functions

Penting

Ekstensi Azure OpenAI untuk Azure Functions saat ini dalam pratinjau.

Pengikatan input kueri asisten Azure OpenAI memungkinkan Anda mengintegrasikan kueri Assistants API ke dalam eksekusi kode Anda.

Untuk informasi tentang penyiapan dan detail konfigurasi ekstensi Azure OpenAI, lihat Ekstensi Azure OpenAI untuk Azure Functions. Untuk mempelajari selengkapnya tentang asisten Azure OpenAI, lihat Azure OpenAI Assistants API.

Catatan

Referensi dan contoh hanya disediakan untuk model Node.js v4.

Catatan

Referensi dan contoh hanya disediakan untuk model Python v2.

Catatan

Meskipun kedua model proses C# didukung, hanya contoh model pekerja terisolasi yang disediakan.

Contoh

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP GET yang meminta riwayat percakapan bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static 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);
}

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP GET yang meminta riwayat percakapan bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

/*
 * HTTP GET function that queries the conversation history of the assistant chat bot.
 */   
@FunctionName("GetChatState")
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();
}

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP GET yang meminta riwayat percakapan bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

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

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

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP GET yang meminta riwayat percakapan bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

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

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP GET yang meminta riwayat percakapan bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

Berikut adalah file function.json untuk Dapatkan Status Obrolan:

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

Untuk informasi selengkapnya tentang properti file function.json , lihat bagian Konfigurasi .

using namespace System.Net

param($Request, $TriggerMetadata, $State)

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

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP GET yang meminta riwayat percakapan bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

@apis.function_name("GetChatState")
@apis.route(route="assistants/{assistantId}", methods=["GET"])
@apis.assistant_query_input(
    arg_name="state",
    id="{assistantId}",
    timestamp_utc="{Query.timestampUTC}",
    chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING,
    collection_name=DEFAULT_CHAT_COLLECTION_NAME,
)
def get_chat_state(req: func.HttpRequest, state: str) -> func.HttpResponse:
    return func.HttpResponse(state, status_code=200, mimetype="application/json")

Atribut

Terapkan AssistantQuery atribut untuk menentukan pengikatan input kueri asisten, yang mendukung parameter ini:

Pengaturan Deskripsi
Id Mendapatkan ID asisten untuk dikueri.
Stempel WaktuUtc Opsional. Mendapatkan atau mengatur tanda waktu pesan paling awal dalam riwayat obrolan untuk diambil. Tanda waktu harus dalam format ISO 8601 - misalnya, 2023-08-01T00:00:00Z.

Anotasi

Anotasi assistantQuery memungkinkan Anda menentukan pengikatan input kueri asisten, yang mendukung parameter ini:

Elemen Deskripsi
nama Mendapatkan atau mengatur nama pengikatan input.
Id Mendapatkan ID asisten untuk dikueri.
timeStampUtc Opsional. Mendapatkan atau mengatur tanda waktu pesan paling awal dalam riwayat obrolan untuk diambil. Tanda waktu harus dalam format ISO 8601 - misalnya, 2023-08-01T00:00:00Z.

Dekorator

Selama pratinjau, tentukan pengikatan input sebagai generic_input_binding pengikatan jenis assistantQuery, yang mendukung parameter ini:

Pengaturan Deskripsi
arg_name Nama variabel yang mewakili parameter pengikatan.
Id Mendapatkan ID asisten untuk dikueri.
time_stamp_utc Opsional. Mendapatkan atau mengatur tanda waktu pesan paling awal dalam riwayat obrolan untuk diambil. Tanda waktu harus dalam format ISO 8601 - misalnya, 2023-08-01T00:00:00Z.

Konfigurasi

Pengikatan mendukung properti konfigurasi ini yang Anda tetapkan dalam file function.json.

Properti Deskripsi
jenis Harus berupa assistantQuery .
arah Harus berupa in .
nama Nama pengikatan input.
Id Mendapatkan ID asisten untuk dikueri.
timeStampUtc Opsional. Mendapatkan atau mengatur tanda waktu pesan paling awal dalam riwayat obrolan untuk diambil. Tanda waktu harus dalam format ISO 8601 - misalnya, 2023-08-01T00:00:00Z.

Konfigurasi

Pengikatan mendukung properti ini, yang ditentukan dalam kode Anda:

Properti Deskripsi
Id Mendapatkan ID asisten untuk dikueri.
timeStampUtc Opsional. Mendapatkan atau mengatur tanda waktu pesan paling awal dalam riwayat obrolan untuk diambil. Tanda waktu harus dalam format ISO 8601 - misalnya, 2023-08-01T00:00:00Z.

Penggunaan

Lihat Bagian contoh untuk contoh lengkapnya.