Bagikan melalui


Asisten Azure OpenAI membuat pengikatan output untuk Azure Functions

Penting

Ekstensi Azure OpenAI untuk Azure Functions saat ini dalam pratinjau.

Asisten Azure OpenAI membuat pengikatan output memungkinkan Anda membuat bot obrolan asisten baru dari eksekusi kode fungsi 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 PUT yang membuat bot obrolan asisten baru dengan ID yang ditentukan. Respons terhadap perintah dikembalikan dalam respons HTTP.

/// <summary>
/// HTTP PUT function that creates a new assistant chat bot with the specified ID.
/// </summary>
[Function(nameof(CreateAssistant))]
public static async Task<CreateChatBotOutput> CreateAssistant(
    [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "assistants/{assistantId}")] HttpRequestData req,
    string assistantId)
{
    string instructions =
       """
        Don't make assumptions about what values to plug into functions.
        Ask for clarification if a user request is ambiguous.
        """;

    using StreamReader reader = new(req.Body);

    string request = await reader.ReadToEndAsync();


    return new CreateChatBotOutput
    {
        HttpResponse = new ObjectResult(new { assistantId }) { StatusCode = 201 },
        ChatBotCreateRequest = new AssistantCreateRequest(assistantId, instructions)
        {
            ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting,
            CollectionName = DefaultCollectionName,
        },
    };
}

public class CreateChatBotOutput
{
    [AssistantCreateOutput()]
    public AssistantCreateRequest? ChatBotCreateRequest { get; set; }

    [HttpResult]
    public IActionResult? HttpResponse { get; set; }
}

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP PUT yang membuat bot obrolan asisten baru dengan ID yang ditentukan. Respons terhadap perintah dikembalikan dalam respons HTTP.

/**
 * The default storage account setting for the table storage account.
 * This constant is used to specify the connection string for the table storage
 * account
 * where chat data will be stored.
 */
final String DEFAULT_CHATSTORAGE = "AzureWebJobsStorage";

/**
 * The default collection name for the table storage account.
 * This constant is used to specify the collection name for the table storage
 * account
 * where chat data will be stored.
 */
final String DEFAULT_COLLECTION = "ChatState";

/*
 * HTTP PUT function that creates a new assistant chat bot with the specified ID.
 */
@FunctionName("CreateAssistant")
public HttpResponseMessage createAssistant(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.PUT}, 
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "assistants/{assistantId}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("assistantId") String assistantId,
    @AssistantCreate(name = "AssistantCreate") OutputBinding<AssistantCreateRequest> message,
    final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");
        
        String instructions = "Don't make assumptions about what values to plug into functions.\n" +
                "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();    
}

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP PUT yang membuat bot obrolan asisten baru dengan ID yang ditentukan. Respons terhadap perintah dikembalikan dalam respons HTTP.

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

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request, context) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
            collectionName: COLLECTION_NAME
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }
    }
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"

const CHAT_STORAGE_CONNECTION_SETTING = "AzureWebJobsStorage";
const COLLECTION_NAME = "ChatState";

const chatBotCreateOutput = output.generic({
    type: 'assistantCreate'
})
app.http('CreateAssistant', {
    methods: ['PUT'],
    route: 'assistants/{assistantId}',
    authLevel: 'anonymous',
    extraOutputs: [chatBotCreateOutput],
    handler: async (request: HttpRequest, context: InvocationContext) => {
        const assistantId = request.params.assistantId
        const instructions =
            `
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            `
        const createRequest = {
            id: assistantId,
            instructions: instructions,
            chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
            collectionName: COLLECTION_NAME
        }
        context.extraOutputs.set(chatBotCreateOutput, createRequest)
        return { status: 202, jsonBody: { assistantId: assistantId } }
    }
})

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP PUT yang membuat bot obrolan asisten baru dengan ID yang ditentukan. Respons terhadap perintah dikembalikan dalam respons HTTP.

Berikut adalah file function.json untuk Buat Asisten:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "assistants/{assistantId}",
      "methods": [
        "put"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "assistantCreate",
      "direction": "out",
      "dataType": "string",
      "name": "Requests"
    }
  ]
}

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

{{Ini berasal dari contoh komentar kode}}

using namespace System.Net

param($Request, $TriggerMetadata)

$assistantId = $Request.params.assistantId

$instructions = "Don't make assumptions about what values to plug into functions."
$instructions += "\nAsk for clarification if a user request is ambiguous."

$create_request = @{
    "id" = $assistantId
    "instructions" = $instructions
    "chatStorageConnectionSetting" = "AzureWebJobsStorage"
    "collectionName" = "ChatState"
}

Push-OutputBinding -Name Requests -Value (ConvertTo-Json $create_request)

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

Contoh ini menunjukkan proses pembuatan, di mana fungsi HTTP PUT yang membuat bot obrolan asisten baru dengan ID yang ditentukan. Respons terhadap perintah dikembalikan dalam respons HTTP.

DEFAULT_CHAT_STORAGE_SETTING = "AzureWebJobsStorage"
DEFAULT_CHAT_COLLECTION_NAME = "ChatState"


@apis.function_name("CreateAssistant")
@apis.route(route="assistants/{assistantId}", methods=["PUT"])
@apis.assistant_create_output(arg_name="requests")
def create_assistant(
    req: func.HttpRequest, requests: func.Out[str]
) -> func.HttpResponse:
    assistantId = req.route_params.get("assistantId")
    instructions = """
            Don't make assumptions about what values to plug into functions.
            Ask for clarification if a user request is ambiguous.
            """
    create_request = {
        "id": assistantId,
        "instructions": instructions,
        "chatStorageConnectionSetting": DEFAULT_CHAT_STORAGE_SETTING,
        "collectionName": DEFAULT_CHAT_COLLECTION_NAME,
    }
    requests.set(json.dumps(create_request))
    response_json = {"assistantId": assistantId}
    return func.HttpResponse(
        json.dumps(response_json), status_code=202, mimetype="application/json"
    )

Atribut

CreateAssistant Terapkan atribut untuk menentukan asisten membuat pengikatan output, yang mendukung parameter ini:

Pengaturan Deskripsi
Id Pengidentifikasi asisten yang akan dibuat.
Petunjuk Opsional. Instruksi yang diberikan kepada asisten untuk diikuti.
ChatStorageConnectionSetting Opsional. Nama bagian konfigurasi untuk pengaturan tabel untuk penyimpanan obrolan. Nilai defaultnya adalah AzureWebJobsStorage.
CollectionName Opsional. Nama koleksi tabel untuk penyimpanan obrolan. Nilai defaultnya adalah ChatState.

Anotasi

Anotasi CreateAssistant memungkinkan Anda menentukan asisten membuat pengikatan output, yang mendukung parameter ini:

Elemen Deskripsi
nama Mendapatkan atau mengatur nama pengikatan output.
Id Pengidentifikasi asisten yang akan dibuat.
instruksi Opsional. Instruksi yang diberikan kepada asisten untuk diikuti.
chatStorageConnectionSetting Opsional. Nama bagian konfigurasi untuk pengaturan tabel untuk penyimpanan obrolan. Nilai defaultnya adalah AzureWebJobsStorage.
collectionName Opsional. Nama koleksi tabel untuk penyimpanan obrolan. Nilai defaultnya adalah ChatState.

Dekorator

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

Pengaturan Deskripsi
arg_name Nama variabel yang mewakili parameter pengikatan.
Id Pengidentifikasi asisten yang akan dibuat.
instruksi Opsional. Instruksi yang diberikan kepada asisten untuk diikuti.
chat_storage_connection_setting Opsional. Nama bagian konfigurasi untuk pengaturan tabel untuk penyimpanan obrolan. Nilai defaultnya adalah AzureWebJobsStorage.
collection_name Opsional. Nama koleksi tabel untuk penyimpanan obrolan. Nilai defaultnya adalah ChatState.

Konfigurasi

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

Properti Deskripsi
jenis Harus berupa CreateAssistant .
arah Harus berupa out .
nama Nama pengikatan output.
Id Pengidentifikasi asisten yang akan dibuat.
instruksi Opsional. Instruksi yang diberikan kepada asisten untuk diikuti.
chatStorageConnectionSetting Opsional. Nama bagian konfigurasi untuk pengaturan tabel untuk penyimpanan obrolan. Nilai defaultnya adalah AzureWebJobsStorage.
collectionName Opsional. Nama koleksi tabel untuk penyimpanan obrolan. Nilai defaultnya adalah ChatState.

Konfigurasi

Pengikatan mendukung properti ini, yang ditentukan dalam kode Anda:

Properti Deskripsi
Id Pengidentifikasi asisten yang akan dibuat.
instruksi Opsional. Instruksi yang diberikan kepada asisten untuk diikuti.
chatStorageConnectionSetting Opsional. Nama bagian konfigurasi untuk pengaturan tabel untuk penyimpanan obrolan. Nilai defaultnya adalah AzureWebJobsStorage.
collectionName Opsional. Nama koleksi tabel untuk penyimpanan obrolan. Nilai defaultnya adalah ChatState.

Penggunaan

Lihat Bagian contoh untuk contoh lengkapnya.