Automação de tarefas com agentes
Atualmente, a maioria dos agentes de IA simplesmente recupera dados e responde às consultas dos usuários. Os agentes de IA, no entanto, podem conseguir muito mais usando plugins para automatizar tarefas em nome dos usuários. Isso permite que os usuários deleguem tarefas a agentes de IA, liberando tempo para trabalhos mais importantes.
Uma vez que os agentes de IA começam a executar ações, no entanto, é importante garantir que eles estão agindo no melhor interesse do usuário. É por isso que fornecemos ganchos / filtros para permitir que você controle quais ações o agente de IA pode tomar.
Exigir o consentimento do utilizador
Quando um agente de IA está prestes a executar uma ação em nome de um usuário, ele deve primeiro pedir o consentimento do usuário. Isso é especialmente importante quando a ação envolve dados confidenciais ou transações financeiras.
No Kernel Semântico, você pode usar o filtro de invocação de função. Esse filtro é sempre chamado sempre que uma função é invocada de um agente de IA. Para criar um filtro, você precisa implementar a IFunctionInvocationFilter
interface e, em seguida, adicioná-lo como um serviço ao kernel.
Aqui está um exemplo de um filtro de invocação de função que requer o consentimento do usuário:
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);
}
}
Em seguida, você pode adicionar o filtro como um serviço ao kernel:
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)
A amostra Java será disponibilizada em breve.
Agora, sempre que o agente de IA tentar criar um pedido usando o DynamicsPlugin
, o usuário será solicitado a aprovar a ação.
Gorjeta
Sempre que uma função é cancelada ou falha, você deve fornecer ao agente de IA uma mensagem de erro significativa para que ele possa responder adequadamente. Por exemplo, se não informássemos o agente de IA de que a criação do pedido não foi aprovada, ele assumiria que o pedido falhou devido a um problema técnico e tentaria criar o pedido novamente.
Próximos passos
Agora que você aprendeu como permitir que os agentes automatizem tarefas, você pode aprender como permitir que os agentes criem planos automaticamente para atender às necessidades do usuário.