你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 Azure Functions 的 Azure OpenAI 助手触发器

重要

适用于 Azure Functions 的 Azure OpenAI 扩展目前为预览版。

使用 Azure OpenAI 助手触发器,可以根据对助手发出的自定义聊天机器人或技能请求来运行代码。

如需了解有关 Azure OpenAI 扩展的设置和配置详细信息,请参阅适用于 Azure Functions 的 Azure OpenAI 扩展。 若要了解有关 Azure OpenAI 助手的详细信息,请参阅 Azure OpenAI 助手 API

注意

仅提供了适用于 Node.js v4 模型的参考和示例。

注意

仅提供了适用于 Python v2 模型的参考和示例。

注意

虽然支持这两个 C# 进程模型,但仅 提供了独立的辅助角色模型 示例。

示例

此示例演示如何创建向数据库添加新待办事项任务的助手。 触发器具有模型使用的 Create a new todo task 的静态说明。 该函数本身采用一个字符串,表示要添加的新任务。 执行后,该函数会将任务添加为自定义项存储中的新待办事项,并从存储中返回响应。

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

此示例演示如何创建向数据库添加新待办事项任务的助手。 触发器具有模型使用的 Create a new todo task 的静态说明。 该函数本身采用一个字符串,表示要添加的新任务。 执行后,该函数会将任务添加为自定义项存储中的新待办事项,并从存储中返回响应。

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

此示例演示如何创建向数据库添加新待办事项任务的助手。 触发器具有模型使用的 Create a new todo task 的静态说明。 该函数本身采用一个字符串,表示要添加的新任务。 执行后,该函数会将任务添加为自定义项存储中的新待办事项,并从存储中返回响应。

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

此示例演示如何创建向数据库添加新待办事项任务的助手。 触发器具有模型使用的 Create a new todo task 的静态说明。 该函数本身采用一个字符串,表示要添加的新任务。 执行后,该函数会将任务添加为自定义项存储中的新待办事项,并从存储中返回响应。

下面是 用于添加 Todo 的 function.json文件:

{
  "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

此示例演示如何创建向数据库添加新待办事项任务的助手。 触发器具有模型使用的 Create a new todo task 的静态说明。 该函数本身采用一个字符串,表示要添加的新任务。 执行后,该函数会将任务添加为自定义项存储中的新待办事项,并从存储中返回响应。

@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 获取提供给模型的助手函数的说明。
FunctionName 可选。 获取或设置助手调用的函数的名称。
ParameterDescriptionJson 可选。 获取或设置提供给模型的函数参数的 JSON 说明。 有关详细信息,请参阅用法
型号 可选。 获取或设置要使用的 OpenAI 聊天模型部署,默认值为 gpt-3.5-turbo.

批注

通过 AssistantSkillTrigger 批注可以定义支持以下参数的助手触发器:

元素 说明
name 获取或设置输入绑定的名称。
functionDescription 获取提供给模型的助手函数的说明。
functionName 可选。 获取或设置助手调用的函数的名称。
parameterDescriptionJson 可选。 获取或设置提供给模型的函数参数的 JSON 说明。 有关详细信息,请参阅用法
model 可选。 获取或设置要使用的 OpenAI 聊天模型部署,默认值为 gpt-3.5-turbo.

修饰符

在预览期间,将输入绑定定义为 assistantSkillTrigger 类型的 generic_trigger 绑定,该绑定支持以下参数:

参数 说明
function_description 获取提供给模型的助手函数的说明。
function_name 可选。 获取或设置助手调用的函数的名称。
parameterDescriptionJson 可选。 获取或设置提供给模型的函数参数的 JSON 说明。 有关详细信息,请参阅用法
model 可选。 获取或设置要使用的 OpenAI 聊天模型部署,默认值为 gpt-3.5-turbo.

配置

绑定支持在 function.json 文件中设置的这些配置属性。

properties 说明
type 必须是 AssistantSkillTrigger
direction 必须是 in
name 触发器的名称。
functionName 获取或设置助手调用的函数的名称。
functionDescription 获取向 LLM 提供的助手函数的说明
parameterDescriptionJson 可选。 获取或设置提供给模型的函数参数的 JSON 说明。 有关详细信息,请参阅用法
model 可选。 获取或设置要使用的 OpenAI 聊天模型部署,默认值为 gpt-3.5-turbo.

配置

绑定支持以下属性,这些属性在代码中定义:

properties 说明
type 必须是 AssistantSkillTrigger
name 触发器的名称。
functionName 获取或设置助手调用的函数的名称。
functionDescription 获取向 LLM 提供的助手函数的说明
parameterDescriptionJson 可选。 获取或设置提供给模型的函数参数的 JSON 说明。 有关详细信息,请参阅用法
model 可选。 获取或设置要使用的 OpenAI 聊天模型部署,默认值为 gpt-3.5-turbo.

有关完整示例,请参阅示例部分

使用情况

如果未提供 parameterDescriptionJson JSON 值,则会自动生成该值。 有关此对象的语法的详细信息,请参阅 OpenAI API 文档