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.