Azure OpenAI-assistenten skapar utdatabindning för Azure Functions

Viktigt!

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

Azure OpenAI-assistenten skapar utdatabindning så att du kan skapa en ny chattrobot för assistenter från funktionskodens körning.

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 API för Azure OpenAI Assistants.

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 PUT som skapar en ny chattrobot för assistenter med det angivna ID:t. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet visar skapandeprocessen, där funktionen HTTP PUT som skapar en ny chattrobot för assistenter med det angivna ID:t. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet visar skapandeprocessen, där funktionen HTTP PUT som skapar en ny chattrobot för assistenter med det angivna ID:t. Svaret på uppmaningen returneras i HTTP-svaret.

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

Det här exemplet visar skapandeprocessen, där funktionen HTTP PUT som skapar en ny chattrobot för assistenter med det angivna ID:t. Svaret på uppmaningen returneras i HTTP-svaret.

Här är function.json-filen för Skapa assistent:

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

Mer information om function.json filegenskaper finns i avsnittet Konfiguration .

{{Detta kommer från exempelkodkommenten}}

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

Det här exemplet visar skapandeprocessen, där funktionen HTTP PUT som skapar en ny chattrobot för assistenter med det angivna ID:t. Svaret på uppmaningen returneras i HTTP-svaret.

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

Attribut

CreateAssistant Använd attributet för att definiera en utdatabindning för att skapa en assistent, som stöder följande parametrar:

Parameter Beskrivning
ID Identifieraren för assistenten som ska skapas.
Instruktioner Valfritt. De instruktioner som tillhandahålls till assistenten att följa.
ChatStorageConnectionSetting Valfritt. Konfigurationsavsnittets namn för tabellinställningarna för chattlagring. Standardvärdet är AzureWebJobsStorage.
CollectionName Valfritt. Tabellsamlingens namn för chattlagring. Standardvärdet är ChatState.

Kommentarer

Med anteckningen CreateAssistant kan du definiera en assistent för att skapa utdatabindning, som stöder följande parametrar:

Komponent Beskrivning
Namn Hämtar eller anger namnet på utdatabindningen.
ID Identifieraren för assistenten som ska skapas.
instruktioner Valfritt. De instruktioner som tillhandahålls till assistenten att följa.
chatStorageConnectionSetting Valfritt. Konfigurationsavsnittets namn för tabellinställningarna för chattlagring. Standardvärdet är AzureWebJobsStorage.
collectionName Valfritt. Tabellsamlingens namn för chattlagring. Standardvärdet är ChatState.

Dekoratörer

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

Parameter Beskrivning
arg_name Namnet på variabeln som representerar bindningsparametern.
ID Identifieraren för assistenten som ska skapas.
instruktioner Valfritt. De instruktioner som tillhandahålls till assistenten att följa.
chat_storage_connection_setting Valfritt. Konfigurationsavsnittets namn för tabellinställningarna för chattlagring. Standardvärdet är AzureWebJobsStorage.
collection_name Valfritt. Tabellsamlingens namn för chattlagring. Standardvärdet är ChatState.

Konfiguration

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

Fastighet Beskrivning
typ Måste vara CreateAssistant.
riktning Måste vara out.
Namn Namnet på utdatabindningen.
ID Identifieraren för assistenten som ska skapas.
instruktioner Valfritt. De instruktioner som tillhandahålls till assistenten att följa.
chatStorageConnectionSetting Valfritt. Konfigurationsavsnittets namn för tabellinställningarna för chattlagring. Standardvärdet är AzureWebJobsStorage.
collectionName Valfritt. Tabellsamlingens namn för chattlagring. Standardvärdet är ChatState.

Konfiguration

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

Fastighet Beskrivning
ID Identifieraren för assistenten som ska skapas.
instruktioner Valfritt. De instruktioner som tillhandahålls till assistenten att följa.
chatStorageConnectionSetting Valfritt. Konfigurationsavsnittets namn för tabellinställningarna för chattlagring. Standardvärdet är AzureWebJobsStorage.
collectionName Valfritt. Tabellsamlingens namn för chattlagring. Standardvärdet är ChatState.

Förbrukning

Se avsnittet Exempel för fullständiga exempel.