Megosztás a következőn keresztül:


Azure OpenAI-asszisztens kimeneti kötés létrehozása az Azure Functionshez

Fontos

Az Azure Functions Azure OpenAI bővítménye jelenleg előzetes verzióban érhető el.

Az Azure OpenAI-asszisztens kimeneti kötése lehetővé teszi egy új csevegőrobot létrehozását a függvénykód végrehajtásából.

Az Azure OpenAI-bővítmény beállítási és konfigurációs részleteiről további információt az Azure Functions Azure OpenAI-bővítményeivel kapcsolatban talál. További információ az Azure OpenAI-asszisztensekről: Azure OpenAI Assistants API.

Feljegyzés

A referenciák és példák csak a Node.js v4-modellhez vannak megadva.

Feljegyzés

A hivatkozások és példák csak a Python v2-modellhez vannak megadva.

Feljegyzés

Bár mindkét C#-folyamatmodell támogatott, csak izolált feldolgozómodell-példák állnak rendelkezésre.

Példa

Ez a példa bemutatja a létrehozási folyamatot, ahol a HTTP PUT függvény egy új csevegőrobotot hoz létre a megadott azonosítóval. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

/// <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; }
}

Ez a példa bemutatja a létrehozási folyamatot, ahol a HTTP PUT függvény egy új csevegőrobotot hoz létre a megadott azonosítóval. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

/**
 * 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();    
}

Ez a példa bemutatja a létrehozási folyamatot, ahol a HTTP PUT függvény egy új csevegőrobotot hoz létre a megadott azonosítóval. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

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

Ez a példa bemutatja a létrehozási folyamatot, ahol a HTTP PUT függvény egy új csevegőrobotot hoz létre a megadott azonosítóval. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

A Create Assistant function.json fájlja:

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

A function.json fájltulajdonságokról a Konfiguráció szakaszban talál további információt.

{{Ez a példakód megjegyzéséből származik}}

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

Ez a példa bemutatja a létrehozási folyamatot, ahol a HTTP PUT függvény egy új csevegőrobotot hoz létre a megadott azonosítóval. A rendszer a HTTP-válaszban adja vissza a kérdésre adott választ.

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

Attribútumok

Alkalmazza az CreateAssistant attribútumot egy asszisztens kimeneti kötésének definiálására, amely támogatja az alábbi paramétereket:

Paraméter Leírás
Azonosító A létrehozandó asszisztens azonosítója.
Utasítások Választható. Az asszisztens által követendő utasítások.
ChatStorageConnectionSetting Választható. A csevegőtároló táblabeállításainak konfigurációs szakaszának neve. Az alapértelmezett érték a AzureWebJobsStorage.
CollectionName Választható. A csevegőtároló táblagyűjteményének neve. Az alapértelmezett érték a ChatState.

Jegyzetek

A CreateAssistant széljegyzet lehetővé teszi, hogy egy asszisztens hozzon létre kimeneti kötést, amely támogatja az alábbi paramétereket:

Elem Leírás
név Lekéri vagy beállítja a kimeneti kötés nevét.
azonosító A létrehozandó asszisztens azonosítója.
előírás Választható. Az asszisztens által követendő utasítások.
chatStorageConnectionSetting Választható. A csevegőtároló táblabeállításainak konfigurációs szakaszának neve. Az alapértelmezett érték a AzureWebJobsStorage.
collectionName Választható. A csevegőtároló táblagyűjteményének neve. Az alapértelmezett érték a ChatState.

Dekorátorok

Az előzetes verzióban adja meg a kimeneti kötést típuskötésként generic_output_bindingcreateAssistant, amely támogatja az alábbi paramétereket:

Paraméter Leírás
arg_name A kötési paramétert képviselő változó neve.
azonosító A létrehozandó asszisztens azonosítója.
előírás Választható. Az asszisztens által követendő utasítások.
chat_storage_connection_setting Választható. A csevegőtároló táblabeállításainak konfigurációs szakaszának neve. Az alapértelmezett érték a AzureWebJobsStorage.
collection_name Választható. A csevegőtároló táblagyűjteményének neve. Az alapértelmezett érték a ChatState.

Konfiguráció

A kötés támogatja a function.json fájlban beállított konfigurációs tulajdonságokat.

Tulajdonság Leírás
típus Kell lennie CreateAssistant.
irány Kell lennie out.
név A kimeneti kötés neve.
azonosító A létrehozandó asszisztens azonosítója.
előírás Választható. Az asszisztens által követendő utasítások.
chatStorageConnectionSetting Választható. A csevegőtároló táblabeállításainak konfigurációs szakaszának neve. Az alapértelmezett érték a AzureWebJobsStorage.
collectionName Választható. A csevegőtároló táblagyűjteményének neve. Az alapértelmezett érték a ChatState.

Konfiguráció

A kötés támogatja ezeket a tulajdonságokat, amelyek a kódban vannak definiálva:

Tulajdonság Leírás
azonosító A létrehozandó asszisztens azonosítója.
előírás Választható. Az asszisztens által követendő utasítások.
chatStorageConnectionSetting Választható. A csevegőtároló táblabeállításainak konfigurációs szakaszának neve. Az alapértelmezett érték a AzureWebJobsStorage.
collectionName Választható. A csevegőtároló táblagyűjteményének neve. Az alapértelmezett érték a ChatState.

Használat

A teljes példákért tekintse meg a Példa szakaszt .