重要
Azure Functions 用の Azure OpenAI 拡張機能は現在、プレビュー段階です。
Azure OpenAI アシスタント トリガーを使用すると、アシスタントに対して行われたカスタム チャット ボットまたはスキル要求に基づいてコードを実行できます。
Azure OpenAI 拡張機能のセットアップと構成の詳細については、「Azure Functions 用の Azure OpenAI 拡張機能」を参照してください。 Azure OpenAI アシスタントの詳細については、「Azure OpenAI Assistants API」を参照してください。
注
リファレンスと例は、Node.js v4 モデルに対してのみ提供されています。
注
リファレンスと例は、Python v2 モデルに対してのみ提供されます。
注
両方の C# プロセス モデルがサポートされていますが、 isolated worker モデル 例のみが提供されます。
例
この例では、新しい 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 項目として追加され、ストアからの応答が返されます。
/**
* Called by the assistant to create new todo tasks.
*/
@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 項目として追加され、ストアからの応答が返されます。
Add 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
この例では、新しい 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 | モデルに提供されるアシスタント関数の説明を取得します。 |
FunctionName | 省略可。 アシスタントによって呼び出される関数の名前を取得または設定します。 |
ParameterDescriptionJson | 省略可。 モデルに提供される関数パラメーターの JSON 記述を取得または設定します。 詳細については、「使用」をご覧ください。 |
注釈
AssistantSkillTrigger
注釈を使用すると、次のパラメーターをサポートするアシスタント トリガーを定義できます。
要素 | 説明 |
---|---|
名前 | 入力バインドの名前を取得または設定します。 |
functionDescription | モデルに提供されるアシスタント関数の説明を取得します。 |
functionName | 省略可。 アシスタントによって呼び出される関数の名前を取得または設定します。 |
parameterDescriptionJson | 省略可。 モデルに提供される関数パラメーターの JSON 記述を取得または設定します。 詳細については、「使用」をご覧ください。 |
デコレーター
プレビュー中に、入力バインドを次のパラメーターをサポートする generic_trigger
型の assistantSkillTrigger
バインドとして定義します。
パラメーター | 説明 |
---|---|
function_description | モデルに提供されるアシスタント関数の説明を取得します。 |
function_name | 省略可。 アシスタントによって呼び出される関数の名前を取得または設定します。 |
parameterDescriptionJson | 省略可。 モデルに提供される関数パラメーターの JSON 記述を取得または設定します。 詳細については、「使用」をご覧ください。 |
構成
このバインドでは、function.json ファイルで設定したこれらの構成プロパティをサポートします。
プロパティ | 説明 |
---|---|
タイプ |
AssistantSkillTrigger である必要があります。 |
方向 |
in である必要があります。 |
名前 | トリガーの名前。 |
functionName | アシスタントによって呼び出される関数の名前を取得または設定します。 |
functionDescription | 言語モデルに提供されるアシスタント関数の説明を取得します。 |
parameterDescriptionJson | 省略可。 モデルに提供される関数パラメーターの JSON 記述を取得または設定します。 詳細については、「使用」をご覧ください。 |
構成
このバインドでは、コードで定義されている、これらのプロパティをサポートします。
プロパティ | 説明 |
---|---|
タイプ |
AssistantSkillTrigger である必要があります。 |
名前 | トリガーの名前。 |
functionName | アシスタントによって呼び出される関数の名前を取得または設定します。 |
functionDescription | LLM に提供されるアシスタント関数の説明を取得します |
parameterDescriptionJson | 省略可。 モデルに提供される関数パラメーターの JSON 記述を取得または設定します。 詳細については、「使用」をご覧ください。 |
完全な例については、セクションの例を参照してください。
使用方法
parameterDescriptionJson
の JSON 値が指定されていない場合は、自動生成されます。 このオブジェクトの構文の詳細については、OpenAI API ドキュメントに関する記事をご覧ください。