ai-agents-for-beginners

. Según Wikipedia, un actor es el bloque básico de construcción de la computación concurrente. En respuesta a un mensaje que recibe, un actor puede: tomar decisiones locales, crear más actores, enviar más mensajes y determinar cómo responder al siguiente mensaje recibido.

Casos de uso: Automatización de generación de código, tareas de análisis de datos y creación de agentes personalizados para funciones de planificación e investigación.

Aquí algunos conceptos clave de AutoGen:

Pila de aplicación

*los agentes se comunican mediante mensajes a través del entorno de ejecución, y este gestiona el ciclo de vida de los agentes*

Semantic Kernel + Agent Framework

Semantic Kernel es un SDK de orquestación de IA listo para empresas. Consiste en conectores de IA y memoria, junto con un Framework de Agentes.

Primero cubramos algunos componentes básicos:

Eso cubre lo básico del framework Semantic Kernel, ¿qué hay del Agent Framework?

Azure AI Agent Service

Azure AI Agent Service es una incorporación más reciente, presentada en Microsoft Ignite 2024. Permite el desarrollo y despliegue de agentes de IA con modelos más flexibles, como llamar directamente a LLMs de código abierto como Llama 3, Mistral y Cohere.

Azure AI Agent Service proporciona mecanismos de seguridad empresarial más robustos y métodos de almacenamiento de datos, haciéndolo adecuado para aplicaciones empresariales.

Funciona de forma nativa con frameworks de orquestación multiagente como AutoGen y Semantic Kernel.

Este servicio está actualmente en vista previa pública y soporta Python y C# para construir agentes.

Usando Semantic Kernel Python, podemos crear un Azure AI Agent con un plugin definido por el usuario:

import asyncio
from typing import Annotated

from azure.identity.aio import DefaultAzureCredential

from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings, AzureAIAgentThread
from semantic_kernel.contents import ChatMessageContent
from semantic_kernel.contents import AuthorRole
from semantic_kernel.functions import kernel_function


# Define a sample plugin for the sample
class MenuPlugin:
    """A sample Menu Plugin used for the concept sample."""

    @kernel_function(description="Provides a list of specials from the menu.")
    def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]:
        return """
        Special Soup: Clam Chowder
        Special Salad: Cobb Salad
        Special Drink: Chai Tea
        """

    @kernel_function(description="Provides the price of the requested menu item.")
    def get_item_price(
        self, menu_item: Annotated[str, "The name of the menu item."]
    ) -> Annotated[str, "Returns the price of the menu item."]:
        return "$9.99"


async def main() -> None:
    ai_agent_settings = AzureAIAgentSettings.create()

    async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(
            credential=creds,
            conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
        ) as client,
    ):
        # Create agent definition
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            name="Host",
            instructions="Answer questions about the menu.",
        )

        # Create the AzureAI Agent using the defined client and agent definition
        agent = AzureAIAgent(
            client=client,
            definition=agent_definition,
            plugins=[MenuPlugin()],
        )

        # Create a thread to hold the conversation
        # If no thread is provided, a new thread will be
        # created and returned with the initial response
        thread: AzureAIAgentThread | None = None

        user_inputs = [
            "Hello",
            "What is the special soup?",
            "How much does that cost?",
            "Thank you",
        ]

        try:
            for user_input in user_inputs:
                print(f"# User: '{user_input}'")
                # Invoke the agent for the specified thread
                response = await agent.get_response(
                    messages=user_input,
                    thread_id=thread,
                )
                print(f"# {response.name}: {response.content}")
                thread = response.thread
        finally:
            await thread.delete() if thread else None
            await client.agents.delete_agent(agent.id)


if __name__ == "__main__":
    asyncio.run(main())

Conceptos clave

Azure AI Agent Service tiene los siguientes conceptos clave:

Casos de uso: Azure AI Agent Service está diseñado para aplicaciones empresariales que requieren un despliegue seguro, escalable y flexible de agentes de IA.

¿Cuál es la diferencia entre estos frameworks?

Parece que hay mucha superposición entre estos frameworks, pero existen diferencias clave en cuanto a diseño, capacidades y casos de uso objetivo:

¿Aún no sabes cuál elegir?

Casos de uso

Veamos si podemos ayudarte repasando algunos casos comunes:

P: Estoy experimentando, aprendiendo y construyendo aplicaciones de agentes para pruebas de concepto, y quiero poder construir y experimentar rápido.

R: AutoGen sería una buena opción para este escenario, ya que se enfoca en aplicaciones agenticas distribuidas y orientadas a eventos, y soporta patrones avanzados de diseño multiagente.

P: ¿Qué hace que AutoGen sea mejor opción que Semantic Kernel y Azure AI Agent Service para este caso?

R: AutoGen está diseñado específicamente para aplicaciones agenticas distribuidas y orientadas a eventos, lo que lo hace ideal para automatizar generación de código y tareas de análisis de datos. Proporciona las herramientas y capacidades necesarias para construir sistemas multiagente complejos de manera eficiente.

P: Parece que Azure AI Agent Service también podría funcionar aquí, tiene herramientas para generación de código y más.

R: Sí, Azure AI Agent Service es un servicio de plataforma para agentes y añade capacidades integradas para múltiples modelos, Azure AI Search, Bing Search y Azure Functions. Facilita construir tus agentes en el Portal Foundry y desplegarlos a escala.

P: Sigo confundido, solo dame una opción.

R: Una excelente opción es construir tu aplicación primero en Semantic Kernel y luego usar Azure AI Agent Service para desplegar tu agente. Este enfoque te permite persistir fácilmente tus agentes mientras aprovechas el poder para construir sistemas multiagente en Semantic Kernel. Además, Semantic Kernel tiene un conector en AutoGen, facilitando usar ambos frameworks juntos.

Resumamos las diferencias clave en una tabla:

| Framework | Enfoque | Conceptos clave | Casos de uso | |———————|———————————————-|————————————–|————————————-| | AutoGen | Aplicaciones agenticas distribuidas y orientadas a eventos | Agentes, Personas, Funciones, Datos | Generación de código, análisis de datos | | Semantic Kernel | Comprensión y generación de texto humanoide | Agentes, Componentes modulares, Colaboración | Comprensión de lenguaje natural, generación de contenido | | Azure AI Agent Service | Modelos flexibles, seguridad empresarial, generación de código, llamadas a herramientas |

Lección Anterior

Introducción a los Agentes de IA y Casos de Uso de Agentes

Próxima Lección

Entendiendo los Patrones de Diseño Agéntico

Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o interpretación errónea derivada del uso de esta traducción.