Bagikan melalui


Otomatisasi tugas dengan agen

Sebagian besar agen AI saat ini hanya mengambil data dan menanggapi kueri pengguna. Namun, agen AI dapat mencapai lebih banyak dengan menggunakan plugin untuk mengotomatiskan tugas atas nama pengguna. Ini memungkinkan pengguna untuk mendelegasikan tugas ke agen AI, membebaskan waktu untuk pekerjaan yang lebih penting.

Namun, setelah Agen AI mulai melakukan tindakan, penting untuk memastikan bahwa mereka bertindak demi kepentingan pengguna yang terbaik. Inilah sebabnya mengapa kami menyediakan kait / filter untuk memungkinkan Anda mengontrol tindakan apa yang dapat dilakukan agen AI.

Ketika agen AI akan melakukan tindakan atas nama pengguna, agen AI harus terlebih dahulu meminta persetujuan pengguna. Ini sangat penting ketika tindakan melibatkan data sensitif atau transaksi keuangan.

Di Kernel Semantik, Anda dapat menggunakan filter pemanggilan fungsi. Filter ini selalu dipanggil setiap kali fungsi dipanggil dari agen AI. Untuk membuat filter, Anda perlu mengimplementasikan IFunctionInvocationFilter antarmuka lalu menambahkannya sebagai layanan ke kernel.

Berikut adalah contoh filter pemanggilan fungsi yang memerlukan persetujuan pengguna:

public class ApprovalFilterExample() : IFunctionInvocationFilter
{
    public async Task OnFunctionInvocationAsync(FunctionInvocationContext context, Func<FunctionInvocationContext, Task> next)
    {
        if (context.Function.PluginName == "DynamicsPlugin" && context.Function.Name == "create_order")
        {
            Console.WriteLine("System > The agent wants to create an approval, do you want to proceed? (Y/N)");
            string shouldProceed = Console.ReadLine()!;

            if (shouldProceed != "Y")
            {
                context.Result = new FunctionResult(context.Result, "The order creation was not approved by the user");
                return;
            }
        }

        await next(context);
    }
}

Anda kemudian dapat menambahkan filter sebagai layanan ke kernel:

IKernelBuilder builder = Kernel.CreateBuilder();
builder.Services.AddSingleton<IFunctionInvocationFilter, ApprovalFilterExample>();
Kernel kernel = builder.Build();
from typing import Any, Coroutine
from semantic_kernel.filters.filter_types import FilterTypes
from semantic_kernel.filters.functions.function_invocation_context import FunctionInvocationContext
from semantic_kernel.functions.function_result import FunctionResult

# The `filter` decorator within kernel, creates and adds the filter in one go.
@kernel.filter(filter_type=FilterTypes.FUNCTION_INVOCATION)
async def approval_filter_example(
    context: FunctionInvocationContext, next: Coroutine[FunctionInvocationContext, Any, None]
):
    if context.function.plugin_name == "DynamicsPlugin" and context.function.name == "create_order":
        should_proceed = input("System > The agent wants to create an approval, do you want to proceed? (Y/N)")
        if should_proceed.lower() != "y":
            context.result = FunctionResult(
                function=context.function.metadata, value="The order creation was not approved by the user"
            )
            return

    await next(context)

Sampel Java akan segera hadir.

Sekarang, setiap kali agen AI mencoba membuat pesanan menggunakan DynamicsPlugin, pengguna akan diminta untuk menyetujui tindakan.

Tip

Setiap kali fungsi dibatalkan atau gagal, Anda harus memberi agen AI pesan kesalahan yang bermakna sehingga dapat merespons dengan tepat. Misalnya, jika kami tidak membiarkan agen AI tahu bahwa pembuatan pesanan tidak disetujui, itu akan mengasumsikan bahwa pesanan gagal karena masalah teknis dan akan mencoba membuat pesanan lagi.

Langkah berikutnya

Setelah mempelajari cara mengizinkan agen mengotomatiskan tugas, Anda dapat mempelajari cara mengizinkan agen membuat rencana secara otomatis untuk memenuhi kebutuhan pengguna.