次の方法で共有


エージェントを使用したタスクの自動化

今日のほとんどの AI エージェントは、単にデータを取得し、ユーザー クエリに応答します。 ただし、AI エージェントは、プラグインを使用してユーザーに代わってタスクを自動化することで、はるかに多くのことを実現できます。 これにより、ユーザーは AI エージェントにタスクを委任し、より重要な作業のための時間を解放できます。

ただし、AI エージェントがアクションの実行を開始したら、ユーザーの最善の利益のために動作していることを確認することが重要です。 これが、AI エージェントが実行できるアクションを制御できるようにするためのフック/フィルターを提供する理由です。

AI エージェントがユーザーに代わってアクションを実行しようとしている場合は、まずユーザーの同意を求める必要があります。 これは、アクションに機密データまたは財務トランザクションが含まれている場合に特に重要です。

セマンティック カーネルでは、関数呼び出しフィルターを使用できます。 このフィルターは、AI エージェントから関数が呼び出されるたびに常に呼び出されます。 フィルターを作成するには、 IFunctionInvocationFilter インターフェイスを実装し、カーネルにサービスとして追加する必要があります。

ユーザーの同意を必要とする関数呼び出しフィルターの例を次に示します。

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

その後、サービスとしてのフィルターをカーネルに追加できます。

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)

Java サンプルは近日公開予定です。

これで、AI エージェントが DynamicsPluginを使用して注文を作成しようとするたびに、ユーザーはアクションの承認を求められます。

ヒント

関数が取り消されたり失敗したりするたびに、適切に応答できるように、AI エージェントに意味のあるエラー メッセージを提供する必要があります。 たとえば、注文の作成が承認されていないことを AI エージェントに知らせなかった場合、技術的な問題が原因で注文が失敗し、注文の作成が再試行されると想定されます。

次のステップ

エージェントによるタスクの自動化を許可する方法を学習したので、エージェントがユーザーのニーズに対応するプランを自動的に作成できるようにする方法を学習できます。