共用方式為


使用代理程序進行工作自動化

現今大部分的 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 代理程式知道訂單建立未獲得核准,則會假設訂單因為技術問題而失敗,並嘗試再次建立訂單。

下一步

既然您已瞭解如何允許代理程式自動執行工作,您可以瞭解如何允許代理程序自動建立方案來解決使用者需求。