Partilhar via


Assistente do Azure OpenAI criar ligação de saída para o Azure Functions

Importante

A extensão do Azure OpenAI para o Azure Functions está atualmente em visualização.

O assistente do Azure OpenAI criar vinculação de saída permite que você crie um novo bot de chat assistente a partir da execução do código de função.

Para obter informações sobre detalhes de instalação e configuração da extensão do Azure OpenAI, consulte Extensões do Azure OpenAI para Azure Functions. Para saber mais sobre os assistentes do Azure OpenAI, consulte Azure OpenAI Assistants API.

Nota

Referências e exemplos são fornecidos apenas para o modelo Node.js v4.

Nota

Referências e exemplos são fornecidos apenas para o modelo Python v2.

Nota

Embora ambos os modelos de processo C# sejam suportados, apenas exemplos de modelos de trabalho isolados são fornecidos.

Exemplo

Este exemplo demonstra o processo de criação, onde a função HTTP PUT que cria um novo bot de chat assistente com a ID especificada. A resposta ao prompt é retornada na resposta 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; }
}

Este exemplo demonstra o processo de criação, onde a função HTTP PUT que cria um novo bot de chat assistente com a ID especificada. A resposta ao prompt é retornada na resposta 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();    
}

Este exemplo demonstra o processo de criação, onde a função HTTP PUT que cria um novo bot de chat assistente com a ID especificada. A resposta ao prompt é retornada na resposta 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 } }
    }
})

Este exemplo demonstra o processo de criação, onde a função HTTP PUT que cria um novo bot de chat assistente com a ID especificada. A resposta ao prompt é retornada na resposta HTTP.

Aqui está o arquivo de function.json para Criar Assistente:

{
  "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 obter mais informações sobre function.json propriedades do arquivo, consulte a seção Configuração .

{{Isso vem do comentário de código de exemplo}}

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

Este exemplo demonstra o processo de criação, onde a função HTTP PUT que cria um novo bot de chat assistente com a ID especificada. A resposta ao prompt é retornada na resposta 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"
    )

Atributos

Aplique o CreateAssistant atributo para definir um assistente criar ligação de saída, que suporta estes parâmetros:

Parâmetro Descrição
ID O identificador do assistente a ser criado.
Instruções Opcional. As instruções que são fornecidas ao assistente a seguir.
ChatStorageConnectionSetting Opcional. O nome da seção de configuração para as configurações de tabela para armazenamento de chat. O valor predefinido é AzureWebJobsStorage.
CollectionName Opcional. O nome da coleção de tabelas para armazenamento de chat. O valor predefinido é ChatState.

Anotações

A CreateAssistant anotação permite que você defina um assistente para criar vinculação de saída, que suporta estes parâmetros:

Elemento Descrição
Designação Obtém ou define o nome da ligação de saída.
ID O identificador do assistente a ser criado.
Instruções Opcional. As instruções que são fornecidas ao assistente a seguir.
chatStorageConnectionSetting Opcional. O nome da seção de configuração para as configurações de tabela para armazenamento de chat. O valor predefinido é AzureWebJobsStorage.
collectionName Opcional. O nome da coleção de tabelas para armazenamento de chat. O valor predefinido é ChatState.

Decoradores

Durante a visualização, defina a ligação de saída como uma generic_output_binding associação do tipo createAssistant, que suporta estes parâmetros:

Parâmetro Descrição
arg_name O nome da variável que representa o parâmetro de ligação.
ID O identificador do assistente a ser criado.
Instruções Opcional. As instruções que são fornecidas ao assistente a seguir.
chat_storage_connection_setting Opcional. O nome da seção de configuração para as configurações de tabela para armazenamento de chat. O valor predefinido é AzureWebJobsStorage.
collection_name Opcional. O nome da coleção de tabelas para armazenamento de chat. O valor predefinido é ChatState.

Configuração

A associação suporta essas propriedades de configuração definidas no arquivo function.json.

Propriedade Descrição
tipo Deve ser CreateAssistant.
direção Deve ser out.
Designação O nome da ligação de saída.
ID O identificador do assistente a ser criado.
Instruções Opcional. As instruções que são fornecidas ao assistente a seguir.
chatStorageConnectionSetting Opcional. O nome da seção de configuração para as configurações de tabela para armazenamento de chat. O valor predefinido é AzureWebJobsStorage.
collectionName Opcional. O nome da coleção de tabelas para armazenamento de chat. O valor predefinido é ChatState.

Configuração

A associação suporta estas propriedades, que são definidas no seu código:

Propriedade Descrição
ID O identificador do assistente a ser criado.
Instruções Opcional. As instruções que são fornecidas ao assistente a seguir.
chatStorageConnectionSetting Opcional. O nome da seção de configuração para as configurações de tabela para armazenamento de chat. O valor predefinido é AzureWebJobsStorage.
collectionName Opcional. O nome da coleção de tabelas para armazenamento de chat. O valor predefinido é ChatState.

Utilização

Consulte a seção Exemplo para obter exemplos completos.