Delen via


Azure OpenAI-assistent maakt uitvoerbinding voor Azure Functions

Belangrijk

De Azure OpenAI-extensie voor Azure Functions is momenteel in preview.

Met de Azure OpenAI-assistent maakt u een uitvoerbinding waarmee u een nieuwe assistent-chatbot kunt maken op basis van de uitvoering van uw functiecode.

Zie Azure OpenAI-extensies voor Azure Functions voor informatie over de installatie en configuratie van de Azure OpenAI-extensie. Zie de Api voor Azure OpenAI-assistenten voor meer informatie over Azure OpenAI-assistenten.

Notitie

Verwijzingen en voorbeelden worden alleen verstrekt voor het Node.js v4-model.

Notitie

Verwijzingen en voorbeelden worden alleen verstrekt voor het Python v2-model.

Notitie

Hoewel beide C#-procesmodellen worden ondersteund, worden alleen geïsoleerde werkrolmodelvoorbeelden gegeven.

Opmerking

In dit voorbeeld wordt het aanmaakproces gedemonstreerd, waarbij de HTTP PUT-functie waarmee een nieuwe assistent-chatbot met de opgegeven id wordt gemaakt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

/// 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 = 202 },
        ChatBotCreateRequest = new AssistantCreateRequest(assistantId, instructions)
        {
            ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting,
            CollectionName = DefaultCollectionName,
        },

In dit voorbeeld wordt het aanmaakproces gedemonstreerd, waarbij de HTTP PUT-functie waarmee een nieuwe assistent-chatbot met de opgegeven id wordt gemaakt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

 * account
 * where chat data will be stored.
 */
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.
 */
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,

In dit voorbeeld wordt het aanmaakproces gedemonstreerd, waarbij de HTTP PUT-functie waarmee een nieuwe assistent-chatbot met de opgegeven id wordt gemaakt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

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

In dit voorbeeld wordt het aanmaakproces gedemonstreerd, waarbij de HTTP PUT-functie waarmee een nieuwe assistent-chatbot met de opgegeven id wordt gemaakt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

Dit is het function.json-bestand voor Assistent maken:

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

Zie de sectie Configuratie voor meer informatie over function.json bestandseigenschappen.

{{Dit komt uit de opmerking van de voorbeeldcode}}

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

In dit voorbeeld wordt het aanmaakproces gedemonstreerd, waarbij de HTTP PUT-functie waarmee een nieuwe assistent-chatbot met de opgegeven id wordt gemaakt. Het antwoord op de prompt wordt geretourneerd in het HTTP-antwoord.

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

Kenmerken

Pas het CreateAssistant kenmerk toe om een assistent uitvoerbinding te definiëren, die ondersteuning biedt voor deze parameters:

Parameter Description
Id De id van de assistent die moet worden gemaakt.
Instructies Optioneel. De instructies die aan de assistent worden verstrekt om te volgen.

Aantekeningen

Met de CreateAssistant aantekening kunt u een assistent voor het maken van uitvoerbinding definiëren, die ondersteuning biedt voor deze parameters:

Element Description
name Hiermee haalt u de naam van de uitvoerbinding op of stelt u deze in.
id De id van de assistent die moet worden gemaakt.
Instructies Optioneel. De instructies die aan de assistent worden verstrekt om te volgen.

Decorators

Definieer tijdens de preview de uitvoerbinding als een generic_output_binding binding van het type createAssistant, die ondersteuning biedt voor deze parameters:

Parameter Description
arg_name De naam van de variabele die de bindingsparameter vertegenwoordigt.
id De id van de assistent die moet worden gemaakt.
Instructies Optioneel. De instructies die aan de assistent worden verstrekt om te volgen.

Configuratie

De binding ondersteunt deze configuratie-eigenschappen die u in het function.json-bestand hebt ingesteld.

Eigenschappen Beschrijving
type Moet CreateAssistant zijn.
direction Moet out zijn.
name De naam van de uitvoerbinding.
id De id van de assistent die moet worden gemaakt.
Instructies Optioneel. De instructies die aan de assistent worden verstrekt om te volgen.

Configuratie

De binding ondersteunt deze eigenschappen, die zijn gedefinieerd in uw code:

Eigenschappen Description
id De id van de assistent die moet worden gemaakt.
Instructies Optioneel. De instructies die aan de assistent worden verstrekt om te volgen.

Gebruik

Zie de sectie Voorbeeld voor volledige voorbeelden.