에이전트로 작업 자동화하기

에이전트로 작업 자동화하기

오늘날 대부분의 AI 에이전트는 단순히 데이터를 검색하고 사용자 질의에 응답할 뿐이에요. 하지만 AI 에이전트는 플러그인을 사용해 사용자를 대신해 작업을 자동화함으로써 훨씬 더 많은 것을 할 수 있습니다. 이렇게 하면 사용자는 작업을 AI 에이전트에 위임해서 더 중요한 일에 시간을 쓸 수 있어요.

다만 AI 에이전트가 동작을 수행하기 시작하면, 그것이 사용자의 최선의 이익을 위해 행동하는지 확인하는 게 중요해집니다. 그래서 Semantic Kernel은 AI 에이전트가 취할 수 있는 동작을 제어할 수 있도록 훅/필터를 제공해요.

출처: 공식 문서 — Task automation with agents

사용자 동의 요구하기

AI 에이전트가 사용자를 대신해 동작을 수행하려 할 때는 먼저 사용자의 동의를 구해야 합니다. 특히 그 동작이 민감한 데이터나 금융 거래를 수반한다면 더 중요해요.

Semantic Kernel에서는 함수 호출 필터(function invocation filter)를 사용할 수 있습니다. 이 필터는 AI 에이전트가 함수를 호출할 때마다 항상 호출됩니다. 필터를 만들려면 IFunctionInvocationFilter 인터페이스를 구현하고 커널에 서비스로 추가하면 돼요.

다음은 사용자 동의를 요구하는 함수 호출 필터 예시입니다.

C#

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

Python

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

Java 샘플은 곧 제공될 예정이에요.

이제 AI 에이전트가 DynamicsPlugin으로 주문을 만들려고 할 때마다, 사용자가 그 동작을 승인하라는 프롬프트를 받게 됩니다.

팁. 함수가 취소되거나 실패할 때는 AI 에이전트가 적절히 대응할 수 있도록 의미 있는 오류 메시지를 제공해야 해요. 예를 들어 주문 생성이 승인되지 않았다는 걸 AI 에이전트에게 알려주지 않으면, AI는 주문이 기술적 문제로 실패했다고 가정하고 다시 주문을 만들려고 할 거예요.

다음 단계

에이전트가 작업을 자동화하도록 허용하는 방법을 배웠으니, 이제 에이전트가 사용자 요구를 해결하기 위한 계획을 자동으로 만들도록 하는 방법을 배울 수 있어요.

더 알아보기 (Learn more)