Bagikan melalui


Pemicu asisten Azure OpenAI untuk Azure Functions

Penting

Ekstensi Azure OpenAI untuk Azure Functions saat ini dalam pratinjau.

Pemicu asisten Azure OpenAI memungkinkan Anda menjalankan kode berdasarkan bot obrolan kustom atau permintaan keterampilan yang dibuat untuk asisten.

Untuk informasi tentang penyiapan dan detail konfigurasi ekstensi Azure OpenAI, lihat Ekstensi Azure OpenAI untuk Azure Functions. Untuk mempelajari selengkapnya tentang asisten Azure OpenAI, lihat Azure OpenAI Assistants API.

Catatan

Referensi dan contoh hanya disediakan untuk model Node.js v4.

Catatan

Referensi dan contoh hanya disediakan untuk model Python v2.

Catatan

Meskipun kedua model proses C# didukung, hanya contoh model pekerja terisolasi yang disediakan.

Contoh

Contoh ini menunjukkan cara membuat asisten yang menambahkan tugas todo baru ke database. Pemicu memiliki deskripsi statis yang Create a new todo task digunakan oleh model. Fungsi itu sendiri mengambil string, yang mewakili tugas baru untuk ditambahkan. Saat dijalankan, fungsi menambahkan tugas sebagai item todo baru di penyimpanan item kustom dan mengembalikan respons dari penyimpanan.

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

Contoh ini menunjukkan cara membuat asisten yang menambahkan tugas todo baru ke database. Pemicu memiliki deskripsi statis yang Create a new todo task digunakan oleh model. Fungsi itu sendiri mengambil string, yang mewakili tugas baru untuk ditambahkan. Saat dijalankan, fungsi menambahkan tugas sebagai item todo baru di penyimpanan item kustom dan mengembalikan respons dari penyimpanan.

/**
 * 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);
}

Contoh ini menunjukkan cara membuat asisten yang menambahkan tugas todo baru ke database. Pemicu memiliki deskripsi statis yang Create a new todo task digunakan oleh model. Fungsi itu sendiri mengambil string, yang mewakili tugas baru untuk ditambahkan. Saat dijalankan, fungsi menambahkan tugas sebagai item todo baru di penyimpanan item kustom dan mengembalikan respons dari penyimpanan.

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

Contoh ini menunjukkan cara membuat asisten yang menambahkan tugas todo baru ke database. Pemicu memiliki deskripsi statis yang Create a new todo task digunakan oleh model. Fungsi itu sendiri mengambil string, yang mewakili tugas baru untuk ditambahkan. Saat dijalankan, fungsi menambahkan tugas sebagai item todo baru di penyimpanan item kustom dan mengembalikan respons dari penyimpanan.

Berikut adalah file function.json untuk Tambahkan Todo:

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

Untuk informasi selengkapnya tentang properti file function.json , lihat bagian Konfigurasi .

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

Contoh ini menunjukkan cara membuat asisten yang menambahkan tugas todo baru ke database. Pemicu memiliki deskripsi statis yang Create a new todo task digunakan oleh model. Fungsi itu sendiri mengambil string, yang mewakili tugas baru untuk ditambahkan. Saat dijalankan, fungsi menambahkan tugas sebagai item todo baru di penyimpanan item kustom dan mengembalikan respons dari penyimpanan.

@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

Atribut

Terapkan AssistantSkillTrigger atribut untuk menentukan pemicu asisten, yang mendukung parameter ini:

Pengaturan Deskripsi
FunctionDescription Mendapatkan deskripsi fungsi asisten, yang disediakan untuk model.
FunctionName Opsional. Mendapatkan atau mengatur nama fungsi yang dipanggil oleh asisten.
ParameterDescriptionJson Opsional. Mendapatkan atau mengatur deskripsi JSON dari parameter fungsi, yang disediakan untuk model. Untuk informasi selengkapnya, lihat Penggunaan.

Anotasi

Anotasi AssistantSkillTrigger memungkinkan Anda menentukan pemicu asisten, yang mendukung parameter ini:

Elemen Deskripsi
nama Mendapatkan atau mengatur nama pengikatan input.
functionDescription Mendapatkan deskripsi fungsi asisten, yang disediakan untuk model.
functionName Opsional. Mendapatkan atau mengatur nama fungsi yang dipanggil oleh asisten.
parameterDescriptionJson Opsional. Mendapatkan atau mengatur deskripsi JSON dari parameter fungsi, yang disediakan untuk model. Untuk informasi selengkapnya, lihat Penggunaan.

Dekorator

Selama pratinjau, tentukan pengikatan input sebagai generic_trigger pengikatan jenis assistantSkillTrigger, yang mendukung parameter ini:

Pengaturan Deskripsi
function_description Mendapatkan deskripsi fungsi asisten, yang disediakan untuk model.
function_name Opsional. Mendapatkan atau menetapkan nama fungsi yang dipanggil oleh asisten.
parameterDescriptionJson Opsional. Mendapatkan atau mengatur deskripsi JSON dari parameter fungsi, yang disediakan untuk model. Untuk informasi selengkapnya, lihat Penggunaan.

Konfigurasi

Pengikatan mendukung properti konfigurasi ini yang Anda tetapkan dalam file function.json.

Properti Deskripsi
jenis Harus berupa AssistantSkillTrigger .
arah Harus berupa in .
nama Nama pemicu.
functionName Mendapatkan atau mengatur nama fungsi yang dipanggil oleh asisten.
functionDescription Mendapatkan deskripsi fungsi asisten, yang disediakan untuk model bahasa.
parameterDescriptionJson Opsional. Mendapatkan atau mengatur deskripsi JSON dari parameter fungsi, yang disediakan untuk model. Untuk informasi selengkapnya, lihat Penggunaan.

Konfigurasi

Pengikatan mendukung properti ini, yang ditentukan dalam kode Anda:

Properti Deskripsi
jenis Harus berupa AssistantSkillTrigger .
nama Nama pemicu.
functionName Mendapatkan atau mengatur nama fungsi yang dipanggil oleh asisten.
functionDescription Mendapatkan deskripsi fungsi asisten, yang disediakan untuk LLM
parameterDescriptionJson Opsional. Mendapatkan atau mengatur deskripsi JSON dari parameter fungsi, yang disediakan untuk model. Untuk informasi selengkapnya, lihat Penggunaan.

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

Ketika parameterDescriptionJson nilai JSON tidak disediakan, nilai tersebut dibuat secara otomatis. Untuk informasi selengkapnya tentang sintaks objek ini, lihat dokumentasi OpenAI API.