Gatilho do assistente do OpenAI do Azure para Azure Functions

Importante

Atualmente, a extensão do OpenAI do Azure para Azure Functions está em versão prévia.

O gatilho do assistente do OpenAI do Azure permite que você execute seu código com base na solicitação de habilidade ou de chatbot personalizado feita a um assistente.

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

Observação

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

Observação

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

Observação

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

Exemplo

Este exemplo demonstra como criar um assistente que adiciona uma nova tarefa pendente a um banco de dados. O gatilho tem uma descrição estática de Create a new todo task usada pelo modelo. A função em si usa uma cadeia de caracteres, que representa uma nova tarefa a ser adicionada. Quando executada, a função adiciona a tarefa como um novo item pendente em um repositório de itens personalizado e retorna uma resposta do repositório.

[Function(nameof(AddTodo))]
public Task AddTodo([AssistantSkillTrigger("Create a new todo task")] string taskDescription)
{
    if (string.IsNullOrEmpty(taskDescription))
    {
        throw new ArgumentException("Task description cannot be empty");
    }

    this.logger.LogInformation("Adding todo: {task}", taskDescription);

    string todoId = Guid.NewGuid().ToString()[..6];
    return this.todoManager.AddTodoAsync(new TodoItem(todoId, taskDescription));
}

Este exemplo demonstra como criar um assistente que adiciona uma nova tarefa pendente a um banco de dados. O gatilho tem uma descrição estática de Create a new todo task usada pelo modelo. A função em si usa uma cadeia de caracteres, que representa uma nova tarefa a ser adicionada. Quando executada, a função adiciona a tarefa como um novo item pendente em um repositório de itens personalizado e retorna uma resposta do repositório.

@FunctionName("AddTodo")
public void addTodo(
    @AssistantSkillTrigger(
            name = "assistantSkillCreateTodo",
            functionDescription = "Create a new todo task"
    ) String taskDescription,
    final ExecutionContext context) {

    if (taskDescription == null || taskDescription.isEmpty()) {
        throw new IllegalArgumentException("Task description cannot be empty");
    }
    context.getLogger().info("Adding todo: " + taskDescription);

    String todoId = UUID.randomUUID().toString().substring(0, 6);
    TodoItem todoItem = new TodoItem(todoId, taskDescription);
    todoManager.addTodo(todoItem);
}

Ainda não há exemplos disponíveis.

Este exemplo demonstra como criar um assistente que adiciona uma nova tarefa pendente a um banco de dados. O gatilho tem uma descrição estática de Create a new todo task usada pelo modelo. A função em si usa uma cadeia de caracteres, que representa uma nova tarefa a ser adicionada. Quando executada, a função adiciona a tarefa como um novo item pendente em um repositório de itens personalizado e retorna uma resposta do repositório.


app.generic('AddTodo', {
    trigger: trigger.generic({
        type: 'assistantSkillTrigger',
        functionDescription: 'Create a new todo task'
    }),
    handler: async (taskDescription: string, context: InvocationContext) => {
        if (!taskDescription) {
            throw new Error('Task description cannot be empty')
        }

        context.log(`Adding todo: ${taskDescription}`)

        const todoId = randomUUID().substring(0, 6)
        return todoManager.AddTodo(new TodoItem(todoId, taskDescription))
    }

Este exemplo demonstra como criar um assistente que adiciona uma nova tarefa pendente a um banco de dados. O gatilho tem uma descrição estática de Create a new todo task usada pelo modelo. A função em si usa uma cadeia de caracteres, que representa uma nova tarefa a ser adicionada. Quando executada, a função adiciona a tarefa como um novo item pendente em um repositório de itens personalizado e retorna uma resposta do repositório.

Aqui está o arquivo function.json para Adicionar Todo:

{
  "bindings": [
    {
      "name": "TaskDescription",
      "type": "assistantSkillTrigger",
      "dataType": "string",
      "direction": "in",
      "functionDescription": "Create a new todo task"
    }
  ]
}

Para obter mais informações sobre as propriedades do arquivo function.json, consulte a seção Configuração.

using namespace System.Net

param($TaskDescription, $TriggerMetadata)
$ErrorActionPreference = "Stop"

if (-not $TaskDescription) {
    throw "Task description cannot be empty"
}

Write-Information "Adding todo: $TaskDescription"
$todoID = [Guid]::NewGuid().ToString().Substring(0, 5)
Add-Todo $todoId $TaskDescription

Este exemplo demonstra como criar um assistente que adiciona uma nova tarefa pendente a um banco de dados. O gatilho tem uma descrição estática de Create a new todo task usada pelo modelo. A função em si usa uma cadeia de caracteres, que representa uma nova tarefa a ser adicionada. Quando executada, a função adiciona a tarefa como um novo item pendente em um repositório de itens personalizado e retorna uma resposta do repositório.

@skills.function_name("AddTodo")
@skills.assistant_skill_trigger(arg_name="taskDescription", function_description="Create a new todo task")
def add_todo(taskDescription: str) -> None:
    if not taskDescription:
        raise ValueError("Task description cannot be empty")

    logging.info(f"Adding todo: {taskDescription}")

    todo_id = str(uuid.uuid4())[0:6]
    todo_manager.add_todo(TodoItem(id=todo_id, task=taskDescription))
    return

Atributos

Aplique o atributo AssistantSkillTrigger para definir um gatilho de assistente, que dá suporte a estes parâmetros:

Parâmetro Descrição
FunctionDescription Obtém a descrição da função de assistente, que é fornecida para o modelo.
FunctionName Opcional. Obtém ou define o nome da função chamada pelo assistente.
ParameterDescriptionJson Opcional. Obtém ou define uma descrição JSON do parâmetro de função, que é fornecido para o modelo. Para obter mais informações, confira Uso.
Modelo Opcional. Obtém ou define a implantação do modelo de chat do OpenAI a ser usada, com o valor padrão de gpt-3.5-turbo.

Anotações

A anotação AssistantSkillTrigger permite que você defina um gatilho de assistente, que dá suporte a estes parâmetros:

Element Descrição
name Obtém ou define o nome da associação de entrada.
functionDescription Obtém a descrição da função de assistente, que é fornecida para o modelo.
functionName Opcional. Obtém ou define o nome da função chamada pelo assistente.
parameterDescriptionJson Opcional. Obtém ou define uma descrição JSON do parâmetro de função, que é fornecido para o modelo. Para obter mais informações, confira Uso.
Modelo Opcional. Obtém ou define a implantação do modelo de chat do OpenAI a ser usada, com o valor padrão de gpt-3.5-turbo.

Decoradores

Durante a versão prévia, defina a associação de entrada como uma associação generic_trigger do tipo assistantSkillTrigger, que dá suporte a estes parâmetros:

Parâmetro Descrição
function_description Obtém a descrição da função de assistente, que é fornecida para o modelo.
function_name Opcional. Obtém ou define o nome de uma função chamada pelo assistente.
parameterDescriptionJson Opcional. Obtém ou define uma descrição JSON do parâmetro de função, que é fornecido para o modelo. Para obter mais informações, confira Uso.
Modelo Opcional. Obtém ou define a implantação do modelo de chat do OpenAI a ser usada, com o valor padrão de gpt-3.5-turbo.

Configuração

A associação dá suporte a essas propriedades de configuração definidas no arquivo function.json.

Propriedade Descrição
tipo Deve ser AssistantSkillTrigger.
direction Deve ser in.
name O nome do gatilho.
functionName Obtém ou define o nome da função chamada pelo assistente.
functionDescription Obtém a descrição da função de assistente, que é fornecida para o LLM
parameterDescriptionJson Opcional. Obtém ou define uma descrição JSON do parâmetro de função, que é fornecido para o modelo. Para obter mais informações, confira Uso.
Modelo Opcional. Obtém ou define a implantação do modelo de chat do OpenAI a ser usada, com o valor padrão de gpt-3.5-turbo.

Configuração

A associação dá suporte a estas propriedades, que são definidas no código:

Propriedade Descrição
tipo Deve ser AssistantSkillTrigger.
name O nome do gatilho.
functionName Obtém ou define o nome da função chamada pelo assistente.
functionDescription Obtém a descrição da função de assistente, que é fornecida para o LLM
parameterDescriptionJson Opcional. Obtém ou define uma descrição JSON do parâmetro de função, que é fornecido para o modelo. Para obter mais informações, confira Uso.
Modelo Opcional. Obtém ou define a implantação do modelo de chat do OpenAI a ser usada, com o valor padrão de gpt-3.5-turbo.

Consulte a Seção de exemplo para obter exemplos completos.

Uso

Quando o valor JSON parameterDescriptionJson não é fornecido, ele é gerado automaticamente. Para obter mais informações sobre a sintaxe desse objeto, confira a documentação da API do OpenAI.