Partager via


Déclencheur d’assistant Azure OpenAI pour Azure Functions

Important

L’extension Azure OpenAI pour Azure Functions est actuellement en préversion.

Le déclencheur de l’Assistant Azure OpenAI vous permet d’exécuter votre code en fonction d’une demande personnalisée de bot de conversation ou de compétence adressée à un assistant.

Pour plus d’informations sur l’installation et la configuration de l’extension Azure OpenAI, consultez Extensions Azure OpenAI pour Azure Functions. Si vous souhaitez en savoir plus sur les assistants Azure OpenAI, veuillez consulter la rubrique API d’assistants Azure OpenAI.

Remarque

Les références et les exemples sont fournis uniquement pour le modèle Node.js v4.

Remarque

Les références et exemples sont fournis uniquement pour le modèle Python v2.

Remarque

Bien que les deux modèles de processus C# soient pris en charge, seuls les exemples de modèles worker isolés sont fournis.

Exemple

Cet exemple montre comment créer un assistant qui ajoute une nouvelle tâche TODO à une base de données. Le déclencheur a une description statique Create a new todo task utilisé par le modèle. La fonction elle-même prend une chaîne, qui représente une nouvelle tâche à ajouter. Lorsqu’elle est exécutée, la fonction ajoute la tâche en tant que nouvel élément todo dans un magasin d’éléments personnalisé et retourne une réponse à partir du magasin.

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

Cet exemple montre comment créer un assistant qui ajoute une nouvelle tâche TODO à une base de données. Le déclencheur a une description statique Create a new todo task utilisé par le modèle. La fonction elle-même prend une chaîne, qui représente une nouvelle tâche à ajouter. Lorsqu’elle est exécutée, la fonction ajoute la tâche en tant que nouvel élément todo dans un magasin d’éléments personnalisé et retourne une réponse à partir du magasin.

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

Cet exemple montre comment créer un assistant qui ajoute une nouvelle tâche TODO à une base de données. Le déclencheur a une description statique Create a new todo task utilisé par le modèle. La fonction elle-même prend une chaîne, qui représente une nouvelle tâche à ajouter. Lorsqu’elle est exécutée, la fonction ajoute la tâche en tant que nouvel élément todo dans un magasin d’éléments personnalisé et retourne une réponse à partir du magasin.

const { app, trigger } = require("@azure/functions");
const { TodoItem, CreateTodoManager } = require("../services/todoManager");
const { randomUUID } = require('crypto');

const todoManager = CreateTodoManager()

app.generic('AddTodo', {
    trigger: trigger.generic({
        type: 'assistantSkillTrigger',
        functionDescription: 'Create a new todo task'
    }),
    handler: async (taskDescription, context) => {
        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))
    }
})
import { InvocationContext, app, trigger } from "@azure/functions"
import { TodoItem, ITodoManager, CreateTodoManager } from "../services/todoManager"
import { randomUUID } from 'crypto';

const todoManager: ITodoManager = CreateTodoManager()

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

Cet exemple montre comment créer un assistant qui ajoute une nouvelle tâche TODO à une base de données. Le déclencheur a une description statique Create a new todo task utilisé par le modèle. La fonction elle-même prend une chaîne, qui représente une nouvelle tâche à ajouter. Lorsqu’elle est exécutée, la fonction ajoute la tâche en tant que nouvel élément todo dans un magasin d’éléments personnalisé et retourne une réponse à partir du magasin.

Voici le fichier function.json pour ajouter todo :

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

Pour plus d’informations sur les propriétés du fichier function.json, consultez la section Configuration.

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

Cet exemple montre comment créer un assistant qui ajoute une nouvelle tâche TODO à une base de données. Le déclencheur a une description statique Create a new todo task utilisé par le modèle. La fonction elle-même prend une chaîne, qui représente une nouvelle tâche à ajouter. Lorsqu’elle est exécutée, la fonction ajoute la tâche en tant que nouvel élément todo dans un magasin d’éléments personnalisé et retourne une réponse à partir du magasin.

@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

Attributs

Appliquez l’attribut AssistantSkillTrigger pour définir un déclencheur Assistant, qui prend en charge ces paramètres :

Paramètre Description
FunctionDescription Obtient la description de la fonction Assistant, qui est fournie au modèle.
FunctionName Facultatif. Obtient ou définit le nom de la fonction appelée par l’Assistant.
ParameterDescriptionJson Facultatif. Obtient ou définit une description JSON du paramètre de fonction, qui est fourni au modèle. Pour plus d’informations, consultez Utilisation.
Modèle Facultatif. Obtient ou définit le modèle de déploiement de conversation OpenAI à utiliser, avec la valeur par défaut gpt-3.5-turbo.

Annotations

L’annotation AssistantSkillTrigger vous permet de définir un déclencheur Assistant, qui prend en charge ces paramètres :

Élément Description
name Obtient ou définit le nom de la liaison d’entrée.
functionDescription Obtient la description de la fonction Assistant, qui est fournie au modèle.
Nom de fonction Facultatif. Obtient ou définit le nom de la fonction appelée par l’Assistant.
parameterDescriptionJson Facultatif. Obtient ou définit une description JSON du paramètre de fonction, qui est fourni au modèle. Pour plus d’informations, consultez Utilisation.
modèle Facultatif. Obtient ou définit le modèle de déploiement de conversation OpenAI à utiliser, avec la valeur par défaut gpt-3.5-turbo.

Décorateurs

Pendant la préversion, définissez la liaison d’entrée en tant que liaison generic_trigger de type assistantSkillTrigger, qui prend en charge ces paramètres :

Paramètre Description
function_description Obtient la description de la fonction Assistant, qui est fournie au modèle.
function_name Facultatif. Obtient ou définit le nom d’une fonction appelée par l’Assistant.
parameterDescriptionJson Facultatif. Obtient ou définit une description JSON du paramètre de fonction, qui est fourni au modèle. Pour plus d’informations, consultez Utilisation.
modèle Facultatif. Obtient ou définit le modèle de déploiement de conversation OpenAI à utiliser, avec la valeur par défaut gpt-3.5-turbo.

Configuration

La liaison prend en charge ces propriétés de configuration que vous définissez dans le fichier function.json.

Propriété Description
type Doit être AssistantSkillTrigger.
direction Doit être in.
name Nom du déclencheur.
Nom de fonction Obtient ou définit le nom de la fonction appelée par l’Assistant.
functionDescription Obtient la description de la fonction Assistant, qui est fournie au LLM
parameterDescriptionJson Facultatif. Obtient ou définit une description JSON du paramètre de fonction, qui est fourni au modèle. Pour plus d’informations, consultez Utilisation.
modèle Facultatif. Obtient ou définit le modèle de déploiement de conversation OpenAI à utiliser, avec la valeur par défaut gpt-3.5-turbo.

Configuration

La liaison prend en charge ces propriétés, qui sont définies dans votre code :

Propriété Description
type Doit être AssistantSkillTrigger.
name Nom du déclencheur.
Nom de fonction Obtient ou définit le nom de la fonction appelée par l’Assistant.
functionDescription Obtient la description de la fonction Assistant, qui est fournie au LLM
parameterDescriptionJson Facultatif. Obtient ou définit une description JSON du paramètre de fonction, qui est fourni au modèle. Pour plus d’informations, consultez Utilisation.
modèle Facultatif. Obtient ou définit le modèle de déploiement de conversation OpenAI à utiliser, avec la valeur par défaut gpt-3.5-turbo.

Pour obtenir des exemples complets, consultez la section Exemple.

Utilisation

Lorsque la valeur JSON parameterDescriptionJson n’est pas fournie, elle est générée automatiquement. Pour plus d’informations sur la syntaxe de cet objet, consultez la documentation de l’API OpenAI.