에이전트로 작업 자동화하기
에이전트로 작업 자동화하기
오늘날 대부분의 AI 에이전트는 단순히 데이터를 검색하고 사용자 질의에 응답할 뿐이에요. 하지만 AI 에이전트는 플러그인을 사용해 사용자를 대신해 작업을 자동화함으로써 훨씬 더 많은 것을 할 수 있습니다. 이렇게 하면 사용자는 작업을 AI 에이전트에 위임해서 더 중요한 일에 시간을 쓸 수 있어요.
다만 AI 에이전트가 동작을 수행하기 시작하면, 그것이 사용자의 최선의 이익을 위해 행동하는지 확인하는 게 중요해집니다. 그래서 Semantic Kernel은 AI 에이전트가 취할 수 있는 동작을 제어할 수 있도록 훅/필터를 제공해요.
사용자 동의 요구하기
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는 주문이 기술적 문제로 실패했다고 가정하고 다시 주문을 만들려고 할 거예요.
다음 단계
에이전트가 작업을 자동화하도록 허용하는 방법을 배웠으니, 이제 에이전트가 사용자 요구를 해결하기 위한 계획을 자동으로 만들도록 하는 방법을 배울 수 있어요.