你当前正在访问 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 文档。