Compartir a través de


El asistente de Azure OpenAI crea un enlace de salida para Azure Functions

Importante

La extensión de Azure OpenAI para Azure Functions está actualmente en versión preliminar.

El asistente de Azure OpenAI genera un enlace de salida que permite crear un nuevo bot de chat del asistente a partir de la ejecución del código de la función.

Para obtener información sobre la configuración y los detalles de configuración de la extensión de Azure OpenAI, consulte Extensiones de Azure OpenAI para Azure Functions. Para más información sobre los asistentes de Azure OpenAI, consulte API Azure OpenAI Assistants.

Nota:

Las referencias y ejemplos solo se proporcionan para el modelo de Node.js v4.

Nota:

Las referencias y ejemplos solo se proporcionan para el modelo de Python v2.

Nota:

Aunque se admiten ambos modelos de proceso de C#, solo se proporcionan ejemplos de modelos de trabajo aislados.

Ejemplo

En este ejemplo se muestra el proceso de creación, donde la función HTTP PUT crea un nuevo bot de chat del asistente con el identificador especificado. La respuesta a la solicitud se devuelve en la respuesta HTTP.

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

En este ejemplo se muestra el proceso de creación, donde la función HTTP PUT crea un nuevo bot de chat del asistente con el identificador especificado. La respuesta a la solicitud se devuelve en la respuesta HTTP.

 * 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,

En este ejemplo se muestra el proceso de creación, donde la función HTTP PUT crea un nuevo bot de chat del asistente con el identificador especificado. La respuesta a la solicitud se devuelve en la respuesta HTTP.

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

En este ejemplo se muestra el proceso de creación, donde la función HTTP PUT crea un nuevo bot de chat del asistente con el identificador especificado. La respuesta a la solicitud se devuelve en la respuesta HTTP.

Este es el archivo function.json para Crear asistente:

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

Para obtener más información sobre las propiedades del archivo function.json, consulte la sección de Configuración.

{{Esto procede del comentario de código de ejemplo}}

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

En este ejemplo se muestra el proceso de creación, donde la función HTTP PUT crea un nuevo bot de chat del asistente con el identificador especificado. La respuesta a la solicitud se devuelve en la respuesta HTTP.

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

Atributos

Aplique el atributo CreateAssistant para definir un enlace de salida de creación del asistente, que admite estos parámetros:

Parámetro Descripción
Id Identificador del asistente que se va a crear.
Instrucciones Opcional. Instrucciones que se proporcionan al asistente.

anotaciones

La anotación de CreateAssistant permite definir un enlace de salida de creación del asistente, que admite estos parámetros:

Elemento Descripción
name Obtiene o establece el nombre del enlace de salida.
id Identificador del asistente que se va a crear.
detalladas Opcional. Instrucciones que se proporcionan al asistente.

Elementos Decorator

Durante la versión preliminar, defina el enlace de salida como un enlace generic_output_binding de tipo createAssistant, que admite estos parámetros:

Parámetro Descripción
arg_name Nombre de la variable que representa el parámetro de enlace.
id Identificador del asistente que se va a crear.
detalladas Opcional. Instrucciones que se proporcionan al asistente.

Configuración

El enlace admite estas propiedades de configuración que se establecen en el archivo function.json.

Propiedad Descripción
type Debe ser CreateAssistant.
direction Debe ser out.
name Nombre del enlace de salida.
id Identificador del asistente que se va a crear.
detalladas Opcional. Instrucciones que se proporcionan al asistente.

Configuración

El enlace admite estas propiedades, que se definen en el código:

Propiedad Descripción
id Identificador del asistente que se va a crear.
detalladas Opcional. Instrucciones que se proporcionan al asistente.

Uso

Consulte la sección de ejemplos para ver ejemplos completos.