Megosztás:


Feladatautomatizálás ügynökökkel

A legtöbb AI-ügynök ma egyszerűen lekéri az adatokat, és válaszol a felhasználói lekérdezésekre. Az AI-ügynökök azonban sokkal többet érhetnek el, ha beépülő modulokkal automatizálják a felhasználók nevében végzett feladatokat. Ez lehetővé teszi a felhasználók számára, hogy feladatokat delegáljanak az AI-ügynököknek, így időt szabadíthat fel a fontosabb munkákhoz.

Ha azonban az AI-ügynökök megkezdik a műveletek végrehajtását, fontos biztosítani, hogy a felhasználó érdekében járjanak el. Ezért biztosítunk horgokat / szűrőket, hogy ön szabályozhassa, hogy az AI-ügynök milyen műveleteket hajthat végre.

Ha egy AI-ügynök egy felhasználó nevében szeretne műveletet végrehajtani, először a felhasználó hozzájárulását kell kérnie. Ez különösen akkor fontos, ha a művelet bizalmas adatokat vagy pénzügyi tranzakciókat foglal magában.

A Szemantikus kernelben használhatja a függvényhívási szűrőt. Ezt a szűrőt mindig meghívja a program, amikor egy AI-ügynök meghív egy függvényt. Szűrő létrehozásához implementálnia kell a IFunctionInvocationFilter felületet, majd hozzá kell adnia szolgáltatásként a kernelhez.

Íme egy példa egy függvényhívási szűrőre, amely felhasználói hozzájárulást igényel:

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

Ezután hozzáadhatja a szűrőt szolgáltatásként a kernelhez:

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)

Hamarosan megjelenik a Java-minta.

Most, amikor az AI-ügynök megpróbál rendelést létrehozni a DynamicsPluginhasználatával, a rendszer kérni fogja a felhasználót, hogy hagyja jóvá a műveletet.

Tipp.

Ha egy függvényt megszakítanak vagy meghiúsulnak, az AI-ügynöknek egy értelmes hibaüzenetet kell megadnia, hogy megfelelően válaszoljon. Ha például nem adnánk meg az AI-ügynöknek, hogy a rendelés létrehozása nem lett jóváhagyva, feltételezzük, hogy a megrendelés műszaki hiba miatt meghiúsult, és megpróbálná újra létrehozni a rendelést.

Következő lépések

Most, hogy megtanulta, hogyan engedélyezheti az ügynököknek a feladatok automatizálását, megtanulhatja, hogyan engedélyezheti az ügynököknek, hogy automatikusan létrehozhassanak terveket a felhasználói igényeknek megfelelően.