Поделиться через


Триггер помощника по Azure OpenAI для Функции Azure

Внимание

Расширение Azure OpenAI для Функции Azure в настоящее время находится в предварительной версии.

Триггер помощника По Azure OpenAI позволяет запускать код на основе пользовательского чат-бота или запроса навыка, сделанного помощнику.

Сведения о настройке и настройке расширения Azure OpenAI см. в Функции Azure расширения Azure OpenAI. Дополнительные сведения о помощниках По Azure OpenAI см. в api Azure OpenAI Assistants.

Примечание.

Ссылки и примеры предоставляются только для модели Node.js версии 4.

Примечание.

Ссылки и примеры предоставляются только для модели Python версии 2.

Примечание.

Хотя поддерживаются обе модели процессов C#, предоставляются только примеры изолированных рабочих моделей .

Пример

В этом примере показано, как создать помощник, который добавляет новую задачу todo в базу данных. Триггер содержит статическое описание, используемое Create a new todo task моделью. Сама функция принимает строку, представляющую новую задачу для добавления. При выполнении функция добавляет задачу в качестве нового элемента todo в пользовательском хранилище элементов и возвращает ответ из хранилища.

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

В этом примере показано, как создать помощник, который добавляет новую задачу todo в базу данных. Триггер содержит статическое описание, используемое Create a new todo task моделью. Сама функция принимает строку, представляющую новую задачу для добавления. При выполнении функция добавляет задачу в качестве нового элемента todo в пользовательском хранилище элементов и возвращает ответ из хранилища.

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

В этом примере показано, как создать помощник, который добавляет новую задачу todo в базу данных. Триггер содержит статическое описание, используемое Create a new todo task моделью. Сама функция принимает строку, представляющую новую задачу для добавления. При выполнении функция добавляет задачу в качестве нового элемента todo в пользовательском хранилище элементов и возвращает ответ из хранилища.

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

В этом примере показано, как создать помощник, который добавляет новую задачу todo в базу данных. Триггер содержит статическое описание, используемое Create a new todo task моделью. Сама функция принимает строку, представляющую новую задачу для добавления. При выполнении функция добавляет задачу в качестве нового элемента todo в пользовательском хранилище элементов и возвращает ответ из хранилища.

Ниже приведен файл function.json для добавления todo:

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

Дополнительные сведения о свойствах файла function.json см. в разделе "Конфигурация ".

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

В этом примере показано, как создать помощник, который добавляет новую задачу todo в базу данных. Триггер содержит статическое описание, используемое Create a new todo task моделью. Сама функция принимает строку, представляющую новую задачу для добавления. При выполнении функция добавляет задачу в качестве нового элемента todo в пользовательском хранилище элементов и возвращает ответ из хранилища.

@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

Атрибуты

Примените атрибут для AssistantSkillTrigger определения триггера помощника, который поддерживает следующие параметры:

Параметр Описание
FunctionDescription Возвращает описание функции помощника, которая предоставляется модели.
Имя функции Необязательно. Возвращает или задает имя функции, вызываемой помощником.
ParameterDescriptionJson Необязательно. Возвращает или задает описание JSON параметра функции, который предоставляется модели. Дополнительные сведения см. в разделе "Использование".
Модель Необязательно. Возвращает или задает используемое развертывание модели чата OpenAI со значением gpt-3.5-turboпо умолчанию.

Заметки

Заметка AssistantSkillTrigger позволяет определить триггер помощника, который поддерживает следующие параметры:

Элемент Description
name Возвращает или задает имя входной привязки.
functionDescription Возвращает описание функции помощника, которая предоставляется модели.
functionName Необязательно. Возвращает или задает имя функции, вызываемой помощником.
parameterDescriptionJson Необязательно. Возвращает или задает описание JSON параметра функции, который предоставляется модели. Дополнительные сведения см. в разделе "Использование".
model Необязательно. Возвращает или задает используемое развертывание модели чата OpenAI со значением gpt-3.5-turboпо умолчанию.

Декораторы

Во время предварительной версии определите входную привязку как привязку generic_trigger типа assistantSkillTrigger, которая поддерживает следующие параметры:

Параметр Описание
function_description Возвращает описание функции помощника, которая предоставляется модели.
function_name Необязательно. Возвращает или задает имя функции, вызываемой помощником.
parameterDescriptionJson Необязательно. Возвращает или задает описание JSON параметра функции, который предоставляется модели. Дополнительные сведения см. в разделе "Использование".
model Необязательно. Возвращает или задает используемое развертывание модели чата OpenAI со значением gpt-3.5-turboпо умолчанию.

Настройка

Привязка поддерживает эти свойства конфигурации, заданные в файле function.json.

Свойство Описание
type Этот параметр должен содержать значение AssistantSkillTrigger.
direction Этот параметр должен содержать значение in.
name Имя триггера.
functionName Возвращает или задает имя функции, вызываемой помощником.
functionDescription Возвращает описание функции помощника, которая предоставляется LLM
parameterDescriptionJson Необязательно. Возвращает или задает описание JSON параметра функции, который предоставляется модели. Дополнительные сведения см. в разделе "Использование".
model Необязательно. Возвращает или задает используемое развертывание модели чата OpenAI со значением gpt-3.5-turboпо умолчанию.

Настройка

Привязка поддерживает эти свойства, определенные в коде:

Свойство Описание
type Этот параметр должен содержать значение AssistantSkillTrigger.
name Имя триггера.
functionName Возвращает или задает имя функции, вызываемой помощником.
functionDescription Возвращает описание функции помощника, которая предоставляется LLM
parameterDescriptionJson Необязательно. Возвращает или задает описание JSON параметра функции, который предоставляется модели. Дополнительные сведения см. в разделе "Использование".
model Необязательно. Возвращает или задает используемое развертывание модели чата OpenAI со значением gpt-3.5-turboпо умолчанию.

Подробные примеры см. в разделе Примеры.

Использование

Если parameterDescriptionJson значение JSON не указано, оно создается автоматически. Дополнительные сведения о синтаксисе этого объекта см. в документации по API OpenAI.