Automazione delle attività con agenti
La maggior parte degli agenti di intelligenza artificiale oggi recupera semplicemente i dati e risponde alle query degli utenti. Gli agenti di intelligenza artificiale, tuttavia, possono ottenere molto di più usando i plug-in per automatizzare le attività per conto degli utenti. Ciò consente agli utenti di delegare le attività agli agenti di intelligenza artificiale, liberando tempo per un lavoro più importante.
Quando gli agenti di intelligenza artificiale iniziano a eseguire azioni, tuttavia, è importante assicurarsi che agiscano nel miglior interesse dell'utente. Ecco perché forniamo hook/filtri per consentire di controllare le azioni che l'agente di intelligenza artificiale può eseguire.
Richiesta del consenso dell'utente
Quando un agente di intelligenza artificiale sta per eseguire un'azione per conto di un utente, deve prima chiedere il consenso dell'utente. Ciò è particolarmente importante quando l'azione comporta dati sensibili o transazioni finanziarie.
In Kernel semantico è possibile usare il filtro di chiamata della funzione. Questo filtro viene sempre chiamato ogni volta che viene richiamata una funzione da un agente di intelligenza artificiale. Per creare un filtro, è necessario implementare l'interfaccia IFunctionInvocationFilter
e quindi aggiungerla come servizio al kernel.
Di seguito è riportato un esempio di filtro di chiamata di funzione che richiede il consenso dell'utente:
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);
}
}
È quindi possibile aggiungere il filtro come servizio al 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)
L'esempio Java sarà presto disponibile.
A questo punto, ogni volta che l'agente di intelligenza artificiale tenta di creare un ordine usando DynamicsPlugin
, all'utente verrà richiesto di approvare l'azione.
Suggerimento
Ogni volta che una funzione viene annullata o ha esito negativo, è necessario fornire all'agente di intelligenza artificiale un messaggio di errore significativo in modo che possa rispondere in modo appropriato. Ad esempio, se l'agente di intelligenza artificiale non è stato indicato che la creazione dell'ordine non è stata approvata, si presuppone che l'ordine non sia riuscito a causa di un problema tecnico e tenterebbe di creare di nuovo l'ordine.
Passaggi successivi
Ora che si è appreso come consentire agli agenti di automatizzare le attività, è possibile imparare a consentire agli agenti di creare automaticamente piani per soddisfare le esigenze degli utenti.