Bagikan melalui


Pengikatan input pasca asisten Azure OpenAI untuk Azure Functions

Penting

Ekstensi Azure OpenAI untuk Azure Functions saat ini dalam pratinjau.

Pengikatan input pasca asisten Azure OpenAI memungkinkan Anda mengirim perintah ke bot obrolan asisten.

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 POST yang mengirim permintaan pengguna ke bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static IActionResult PostUserQuery(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId,
    [AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%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.");
}

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP POST yang mengirim permintaan pengguna ke bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons 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.ANONYMOUS,
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,        
    @AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", 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();
}

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP POST yang mengirim permintaan pengguna ke bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

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

const assistantPostInput = input.generic({
    type: 'assistantPost',
    id: '{assistantId}',
    chatModel: '%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 = 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%',
    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)
        const content = chatState.recentMessages[0].content
        return {
            status: 200,
            body: content,
            headers: {
                'Content-Type': 'text/plain'
            }
        };
    }
})

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP POST yang mengirim permintaan pengguna ke bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons HTTP.

Berikut adalah file function.json untuk kueri pengguna posting:

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

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

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

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP POST yang mengirim permintaan pengguna ke bot obrolan asisten. Respons terhadap perintah dikembalikan dalam respons 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%",
    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"
    )

Atribut

PostUserQuery Terapkan atribut untuk menentukan pengikatan input pasca asisten, yang mendukung parameter ini:

Pengaturan Deskripsi
Id ID asisten yang akan diperbarui.
UserMessage Mendapatkan atau mengatur pesan pengguna untuk model penyelesaian obrolan, dikodekan sebagai string.
AIConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
ChatModel Opsional. Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
Suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
TopP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
MaxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
IsReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Anotasi

Anotasi PostUserQuery memungkinkan Anda menentukan pengikatan input posting asisten, yang mendukung parameter ini:

Elemen Deskripsi
nama Nama pengikatan output.
Id ID asisten yang akan diperbarui.
userMessage Mendapatkan atau mengatur pesan pengguna untuk model penyelesaian obrolan, dikodekan sebagai string.
aiConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chatModel Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
topP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
maxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
isReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Dekorator

Selama pratinjau, tentukan pengikatan output sebagai generic_output_binding pengikatan jenis postUserQuery, yang mendukung parameter ini:

Pengaturan Deskripsi
arg_name Nama variabel yang mewakili parameter pengikatan.
Id ID asisten yang akan diperbarui.
user_message Mendapatkan atau mengatur pesan pengguna untuk model penyelesaian obrolan, dikodekan sebagai string.
ai_connection_name Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chat_model Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
top_p Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
max_tokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
is_reasoning _model Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Konfigurasi

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

Properti Deskripsi
jenis Harus berupa PostUserQuery .
arah Harus berupa out .
nama Nama pengikatan output.
Id ID asisten yang akan diperbarui.
userMessage Mendapatkan atau mengatur pesan pengguna untuk model penyelesaian obrolan, dikodekan sebagai string.
aiConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chatModel Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
topP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
maxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
isReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Konfigurasi

Pengikatan mendukung properti ini, yang ditentukan dalam kode Anda:

Properti Deskripsi
Id ID asisten yang akan diperbarui.
userMessage Mendapatkan atau mengatur pesan pengguna untuk model penyelesaian obrolan, dikodekan sebagai string.
aiConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chatModel Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
topP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
maxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
isReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Penggunaan

Lihat Bagian contoh untuk contoh lengkapnya.