Automatización de tareas con agentes
La mayoría de los agentes de inteligencia artificial actualmente simplemente recuperan datos y responden a las consultas de los usuarios. Sin embargo, los agentes de inteligencia artificial pueden lograr mucho más mediante complementos para automatizar tareas en nombre de los usuarios. Esto permite a los usuarios delegar tareas a agentes de inteligencia artificial, lo que permite liberar tiempo de trabajo más importante.
Una vez que los agentes de IA empiecen a realizar acciones, sin embargo, es importante asegurarse de que actúan en el mejor interés del usuario. Este es el motivo por el que proporcionamos enlaces o filtros para permitirle controlar qué acciones puede realizar el agente de IA.
Requerir consentimiento del usuario
Cuando un agente de IA está a punto de realizar una acción en nombre de un usuario, primero debe pedir el consentimiento del usuario. Esto es especialmente importante cuando la acción implica datos confidenciales o transacciones financieras.
En Kernel semántico, puede usar el filtro de invocación de función. Este filtro siempre se llama a este filtro cada vez que se invoca una función desde un agente de IA. Para crear un filtro, debe implementar la IFunctionInvocationFilter
interfaz y, a continuación, agregarla como servicio al kernel.
Este es un ejemplo de un filtro de invocación de función que requiere el consentimiento del usuario:
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);
}
}
A continuación, puede agregar el filtro como servicio 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)
El ejemplo de Java estará disponible próximamente.
Ahora, siempre que el agente de IA intente crear un pedido mediante DynamicsPlugin
, se le pedirá al usuario que apruebe la acción.
Sugerencia
Cada vez que se cancela o se produce un error en una función, debe proporcionar al agente de IA un mensaje de error significativo para que pueda responder correctamente. Por ejemplo, si no se ha indicado al agente de IA que la creación del pedido no se ha aprobado, se supone que se produjo un error en el pedido debido a un problema técnico e intentaría volver a crear el pedido.
Pasos siguientes
Ahora que ha aprendido a permitir que los agentes automaticen tareas, puede aprender a permitir que los agentes creen automáticamente planes para satisfacer las necesidades del usuario.