AGENIC AI 103: Construyendo equipos de agente múltiple

Introducción

Artículos aquí en TDS, exploramos los fundamentos de la IA de agente. He estado compartiendo con ustedes algunos conceptos que lo ayudarán a navegar a través de este mar de contenido que hemos estado viendo por ahí.

En los últimos dos artículos, exploramos cosas como:

  • Cómo crear su primer agente
  • ¿Qué son las herramientas y cómo implementarlas en su agente?
  • Memoria y razonamiento
  • Barandas
  • Evaluación y monitoreo del agente

¡Lindo! Si quieres leer al respecto, te sugiero que mires los artículos [1] y [2] de la sección de referencias.

AGENIC AI es uno de los sujetos más populares en este momento, y hay varios marcos entre los que puede elegir. Afortunadamente, una cosa que he visto de mi experiencia aprendiendo sobre los agentes es que estos conceptos fundamentales pueden transferirse de uno a otro.

Por ejemplo, la clase Agent De un marco se convierte en chat En otra, o incluso en algo más, pero generalmente con argumentos similares y el mismo objetivo de conectarse con un modelo de lenguaje grande (LLM).

Así que tomemos otro paso en nuestro viaje de aprendizaje.

En esta publicación, aprenderemos cómo crear equipos de múltiples agentes, abriendo oportunidades para que permitamos que la IA realice tareas más complejas para nosotros.

En aras de la consistencia, continuaré usando Agno como nuestro marco.

Hagamos esto.

Equipos de múltiples agentes

Un equipo de múltiples agentes no es más de lo que significa la palabra: un equipo con más de un agente.

Pero, ¿por qué necesitamos eso?

Bueno, creé esta simple regla general para mí que, si un agente necesita usar más de 2 o 3 herramientas, es hora de crear un equipo. La razón de esto es que dos especialistas Trabajar juntos funcionará mucho mejor que un generalista.

Cuando intentas crear el “agente de cuchillo suizo”, la probabilidad de ver que las cosas retrocedan es alta. El agente se volverá demasiado abrumado con diferentes instrucciones y la cantidad de herramientas para tratar, por lo que termina lanzando un error o devolviendo un mal resultado.

Por otro lado, cuando crea agentes con un solo propósito, necesitarán solo una herramienta para resolver ese problema, aumentando el rendimiento y mejorando el resultado.

Para coordinar este equipo de especialistas, usaremos la clase Team de Agno, que puede asignar tareas al agente adecuado.

Sigamos y comprendamos lo que construiremos a continuación.

Proyecto

Nuestro proyecto se centrará en la industria de la generación de contenido de las redes sociales. Construiremos un equipo de agentes que genere una publicación de Instagram y sugiere una imagen basada en el tema proporcionado por el usuario.

  1. El usuario envía un mensaje para una publicación.
  2. El coordinador envía la tarea al Escritor
    • Va a Internet y busca ese tema.
  3. El Escritor Devuelve texto para la publicación de redes sociales.
  4. Una vez que el coordinador tiene el primer resultado, enruta ese mensaje de texto al Ilustrador Agente, por lo que puede crear una solicitud para una imagen para la publicación.
Flujo de trabajo del equipo de agentes. Imagen del autor.

Observe cómo estamos separando muy bien las tareas, para que cada agente pueda centrarse únicamente en su trabajo. El coordinador se asegurará de que cada agente haga su trabajo y colaborará para un buen resultado final.

Para que nuestro equipo sea aún más desempeñado, restringiré el tema para que se creen las publicaciones sobre Vino y alimentos finos. De esta manera, reducimos aún más el alcance del conocimiento necesario de nuestro agente, y podemos aclarar su papel y más enfocado.

Vamos a codificar eso ahora.

Código

Primero, instale las bibliotecas necesarias.

pip install agno duckduckgo-search google-genai

Crear un archivo para las variables de entorno .env y agregue las teclas API necesarias para Gemini y cualquier mecanismo de búsqueda que esté utilizando, si es necesario. Duckduckgo no requiere uno.

GEMINI_API_KEY="your api key"
SEARCH_TOOL_API_KEY="api key"

Importar las bibliotecas.

# Imports
import os
from textwrap import dedent
from agno.agent import Agent
from agno.models.google import Gemini
from agno.team import Team
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.file import FileTools
from pathlib import Path

Creando los agentes

A continuación, crearemos el primer agente. Es un sumiller y especialista en comida gourmet.

  • Necesita un name Para una identificación más fácil del equipo.
  • El role Decirle cuál es su especialidad.
  • A description para decirle al agente cómo comportarse.
  • El tools que puede usar para realizar la tarea.
  • add_name_to_instructions es enviar junto con la respuesta el nombre del agente que trabajó en esa tarea.
  • Describimos el expected_output.
  • El model es el cerebro del agente.
  • exponential_backoff y delay_between_retries son para evitar demasiadas solicitudes a LLMS (error 429).
# Create individual specialized agents
writer = Agent(
    name="Writer",
    role=dedent("""\
                You are an experienced digital marketer who specializes in Instagram posts.
                You know how to write an engaging, SEO-friendly post.
                You know all about wine, cheese, and gourmet foods found in grocery stores.
                You are also a wine sommelier who knows how to make recommendations.
                \
                """),
    description=dedent("""\
                Write clear, engaging content using a neutral to fun and conversational tone.
                Write an Instagram caption about the requested {topic}.
                Write a short call to action at the end of the message.
                Add 5 hashtags to the caption.
                If you encounter a character encoding error, remove the character before sending your response to the Coordinator.
                        \
                        """),
    tools=[DuckDuckGoTools()],
    add_name_to_instructions=True,
    expected_output=dedent("Caption for Instagram about the {topic}."),
    model=Gemini(id="gemini-2.0-flash-lite", api_key=os.environ.get("GEMINI_API_KEY")),
    exponential_backoff=True,
    delay_between_retries=2
)

Ahora, creemos el agente Illustrator. Los argumentos son los mismos.

# Illustrator Agent
illustrator = Agent(
    name="Illustrator",
    role="You are an illustrator who specializes in pictures of wines, cheeses, and fine foods found in grocery stores.",
    description=dedent("""\
                Based on the caption created by Marketer, create a prompt to generate an engaging photo about the requested {topic}.
                If you encounter a character encoding error, remove the character before sending your response to the Coordinator.
                \
                """),
    expected_output= "Prompt to generate a picture.",
    add_name_to_instructions=True,
    model=Gemini(id="gemini-2.0-flash", api_key=os.environ.get("GEMINI_API_KEY")),
    exponential_backoff=True,
    delay_between_retries=2
)

Creando el equipo

Para que estos dos agentes especializados funcionen juntos, necesitamos usar la clase Agent. Le damos un nombre y usamos el argument Para determinar el tipo de interacción que tendrá el equipo. Agno pone a disposición los modos coordinate, route o collaborate.

Además, no olvides usar share_member_interactions=True Para asegurarse de que las respuestas fluyan suavemente entre los agentes. También puedes usar enable_agentic_contextque permite compartir el contexto del equipo con los miembros del equipo.

El argumento monitoring es agradable si desea usar el panel de control del monitor incorporado de Agno, disponible en https://app.agno.com/

# Create a team with these agents
writing_team = Team(
    name="Instagram Team",
    mode="coordinate",
    members=[writer, illustrator],
    instructions=dedent("""\
                        You are a team of content writers working together to create engaging Instagram posts.
                        First, you ask the 'Writer' to create a caption for the requested {topic}.
                        Next, you ask the 'Illustrator' to create a prompt to generate an engaging illustration for the requested {topic}.
                        Do not use emojis in the caption.
                        If you encounter a character encoding error, remove the character before saving the file.
                        Use the following template to generate the output:
                        - Post
                        - Prompt to generate an illustration
                        \
                        """),
    model=Gemini(id="gemini-2.0-flash", api_key=os.environ.get("GEMINI_API_KEY")),
    tools=[FileTools(base_dir=Path("./output"))],
    expected_output="A text named 'post.txt' with the content of the Instagram post and the prompt to generate an picture.",
    share_member_interactions=True,
    markdown=True,
    monitoring=True
)

Vamos a ejecutarlo.

# Prompt
prompt = "Write a post about: Sparkling Water and sugestion of food to accompany."

# Run the team with a task
writing_team.print_response(prompt)

Esta es la respuesta.

Imagen de la respuesta del equipo. Imagen del autor.

Así es como se ve el archivo de texto.

- Post
Elevate your refreshment game with the effervescence of sparkling water! 
Forget the sugary sodas, and embrace the crisp, clean taste of bubbles. 
Sparkling water is the ultimate palate cleanser and a versatile companion for 
your culinary adventures.

Pair your favorite sparkling water with gourmet delights from your local
grocery store.
Try these delightful duos:

*   **For the Classic:** Sparkling water with a squeeze of lime, served with 
creamy brie and crusty bread.
*   **For the Adventurous:** Sparkling water with a splash of cranberry, 
alongside a sharp cheddar and artisan crackers.
*   **For the Wine Lover:** Sparkling water with a hint of elderflower, 
paired with prosciutto and melon.

Sparkling water isn't just a drink; it's an experience. 
It's the perfect way to enjoy those special moments.

What are your favorite sparkling water pairings?

\#SparklingWater \#FoodPairing \#GourmetGrocery \#CheeseAndWine \#HealthyDrinks

- Prompt to generate an image
A vibrant, eye-level shot inside a gourmet grocery store, showcasing a selection
of sparkling water bottles with various flavors. Arrange pairings around 
the bottles, including a wedge of creamy brie with crusty bread, sharp cheddar 
with artisan crackers, and prosciutto with melon. The lighting should be bright 
and inviting, highlighting the textures and colors of the food and beverages.

Después de tener este archivo de texto, podemos ir a cualquier LLM que nos guste mejor para crear imágenes, y simplemente copiar y pegar el Prompt to generate an image.

Y aquí hay una maqueta de cómo sería la publicación.

Maqueta de la publicación generada por el equipo de múltiples agentes. Imagen del autor.

Bastante bien, diría. ¿Qué opinas?

Antes de que te vayas

En esta publicación, dimos otro paso al aprender sobre AI de Agentic. Este tema está de moda, y hay muchos marcos disponibles en el mercado. Simplemente dejé de tratar de aprenderlos a todos y elegí uno para comenzar a construir algo.

Aquí, pudimos semiautomicar la creación de publicaciones en las redes sociales. Ahora, todo lo que tenemos que hacer es elegir un tema, ajustar el aviso y ejecutar el equipo. Después de eso, se trata de ir a las redes sociales y crear la publicación.

Ciertamente, hay más automatización que se puede hacer en este flujo, pero aquí está fuera del alcance.

Con respecto a los agentes de la construcción, le recomiendo que comience los marcos más fáciles, y como necesita más personalización, puede pasar a Langgraph, por ejemplo, lo que le permite.

Contacto y presencia en línea

Si le gustó este contenido, encuentre más de mi trabajo y redes sociales en mi sitio web:

https://gustavorsantos.me

Repositorio de Github

https://github.com/gurezende/agno-ai-labs

Referencias

[1. Agentic AI 101: Starting Your Journey Building AI Agents] https://towardsdatascience.com/agentic-ai-101-starting-your-journey-building-ai-agents/

[2. Agentic AI 102: Guardrails and Agent Evaluation] https://towardsdatascience.com/agentic-ai-102-guardrails-and-agent-evaluation/

[3. Agno] https://docs.agno.com/introduction

[4. Agno Team class] https://docs.agno.com/reference/teams/team