En este tutorial, implementamos el marco colaborativo Agent2Agent creado en la cima de los modelos Gemini de Google. La guía camina a través de la creación de personajes de IA especializados, que van desde científicos de datos y estrategas de productos hasta analistas de riesgos e innovadores creativos. Demuestra cómo estos agentes pueden intercambiar mensajes estructurados para abordar los desafíos complejos del mundo real. Al definir roles claros, personalidades y protocolos de comunicación, el tutorial destaca cómo orquestar la resolución de problemas de múltiples agentes en tres fases: análisis individual, crítica de agentes cruzados y síntesis de soluciones.
import google.generativeai as genai
import json
import time
from dataclasses import dataclass
from typing import Dict, List, Any
from enum import Enum
import random
import re
API_KEY = "Use Your Own API Key"
genai.configure(api_key=API_KEY)
Mira el completo Cuaderno aquí
Importamos las bibliotecas centrales para construir su sistema Agent2Agent, manejo de JSON, tiempo, estructuras de datos y utilidades regex. Luego, establecemos su clave de API Gemini e inicializamos al cliente Genai para llamadas posteriores. Esto asegura que todas las solicitudes posteriores a los puntos finales generativos de IA de Google se autenticen.
class MessageType(Enum):
HANDSHAKE = "handshake"
TASK_PROPOSAL = "task_proposal"
ANALYSIS = "analysis"
CRITIQUE = "critique"
SYNTHESIS = "synthesis"
VOTE = "vote"
CONSENSUS = "consensus"
Mira el completo Cuaderno aquí
Este enum de MessageType define las etapas de la comunicación Agent2Agent, desde apretones de manos iniciales y propuestas de tareas hasta análisis, crítica, síntesis, votación y consenso final. Le permite etiquetar y enrutar mensajes de acuerdo con su papel en el flujo de trabajo colaborativo.
@dataclass
class A2AMessage:
sender_id: str
receiver_id: str
message_type: MessageType
payload: Dict[str, Any]
timestamp: float
priority: int = 1
Mira el completo Cuaderno aquí
Esta DataClass de A2Message encapsula todos los metadatos necesarios para la comunicación inter-agente, el seguimiento de quién lo envió, quién debería recibirlo, el papel del mensaje en el protocolo (Message_Type), su contenido (carga útil), cuando se envió (marca de tiempo) y su prioridad de procesamiento relativo. Proporciona una forma estructurada de tipo seguro para serializar y enrutar mensajes entre agentes.
class GeminiAgent:
def __init__(self, agent_id: str, role: str, personality: str, temperature: float = 0.7):
self.agent_id = agent_id
self.role = role
self.personality = personality
self.temperature = temperature
self.conversation_memory = []
self.current_position = None
self.confidence = 0.5
self.model = genai.GenerativeModel('gemini-2.0-flash')
def get_system_context(self, task_context: str = "") -> str:
return f"""You are {self.agent_id}, an AI agent in a multi-agent collaborative system.
ROLE: {self.role}
PERSONALITY: {self.personality}
CONTEXT: {task_context}
You are participating in Agent2Agent protocol communication. Your responsibilities:
1. Analyze problems from your specialized perspective
2. Provide constructive feedback to other agents
3. Synthesize information from multiple sources
4. Make data-driven decisions
5. Collaborate effectively while maintaining your expertise
IMPORTANT: Always structure your response as JSON with these fields:
{{
"agent_id": "{self.agent_id}",
"main_response": "your primary response content",
"confidence_level": 0.8,
"key_insights": ["insight1", "insight2"],
"questions_for_others": ["question1", "question2"],
"next_action": "suggested next step"
}}
Stay true to your role and personality while being collaborative."""
def generate_response(self, prompt: str, context: str = "") -> Dict[str, Any]:
"""Generate response using Gemini API"""
try:
full_prompt = f"{self.get_system_context(context)}\n\nPROMPT: {prompt}"
response = self.model.generate_content(
full_prompt,
generation_config=genai.types.GenerationConfig(
temperature=self.temperature,
max_output_tokens=600,
)
)
response_text = response.text
json_match = re.search(r'\{.*\}', response_text, re.DOTALL)
if json_match:
try:
return json.loads(json_match.group())
except json.JSONDecodeError:
pass
return {
"agent_id": self.agent_id,
"main_response": response_text[:200] + "..." if len(response_text) > 200 else response_text,
"confidence_level": random.uniform(0.6, 0.9),
"key_insights": [f"Insight from {self.role}"],
"questions_for_others": ["What do you think about this approach?"],
"next_action": "Continue analysis"
}
except Exception as e:
print(f"⚠️ Gemini API Error for {self.agent_id}: {e}")
return {
"agent_id": self.agent_id,
"main_response": f"Error occurred in {self.agent_id}: {str(e)}",
"confidence_level": 0.1,
"key_insights": ["API error encountered"],
"questions_for_others": [],
"next_action": "Retry connection"
}
def analyze_task(self, task: str) -> Dict[str, Any]:
prompt = f"Analyze this task from your {self.role} perspective: {task}"
return self.generate_response(prompt, f"Task Analysis: {task}")
def critique_analysis(self, other_analysis: Dict[str, Any], original_task: str) -> Dict[str, Any]:
analysis_summary = other_analysis.get('main_response', 'No analysis provided')
prompt = f"""
ORIGINAL TASK: {original_task}
ANOTHER AGENT'S ANALYSIS: {analysis_summary}
THEIR CONFIDENCE: {other_analysis.get('confidence_level', 0.5)}
THEIR INSIGHTS: {other_analysis.get('key_insights', [])}
Provide constructive critique and alternative perspectives from your {self.role} expertise.
"""
return self.generate_response(prompt, f"Critique Session: {original_task}")
def synthesize_solutions(self, all_analyses: List[Dict[str, Any]], task: str) -> Dict[str, Any]:
analyses_summary = "\n".join([
f"Agent {i+1}: {analysis.get('main_response', 'No response')[:100]}..."
for i, analysis in enumerate(all_analyses)
])
prompt = f"""
TASK: {task}
ALL AGENT ANALYSES:
{analyses_summary}
As the {self.role}, synthesize these perspectives into a comprehensive solution.
Identify common themes, resolve conflicts, and propose the best path forward.
"""
return self.generate_response(prompt, f"Synthesis Phase: {task}")
Mira el completo Cuaderno aquí
La clase Geminiagente envuelve una instancia del modelo de Google Gemini, encapsulando la identidad, el rol y la personalidad de cada agente para generar respuestas JSON estructuradas. Proporciona métodos auxiliares para construir indicaciones del sistema, llame a la API con temperatura controlada y límites de token, y recurra a un formato de respuesta predeterminado en caso de errores de análisis o API. Con Analyze_Task, Critique_analysis y Synthesize_Solutions, agiliza cada fase del flujo de trabajo de múltiples agentes.
class Agent2AgentCollaborativeSystem:
def __init__(self):
self.agents: Dict[str, GeminiAgent] = {}
self.collaboration_history: List[Dict[str, Any]] = []
def add_agent(self, agent: GeminiAgent):
self.agents[agent.agent_id] = agent
print(f"🤖 Registered Gemini Agent: {agent.agent_id} ({agent.role})")
def run_collaborative_problem_solving(self, problem: str):
print(f"\n🎯 Multi-Gemini Collaborative Problem Solving")
print(f"🔍 Problem: {problem}")
print("=" * 80)
print("\n📊 PHASE 1: Individual Agent Analysis")
initial_analyses = {}
for agent_id, agent in self.agents.items():
print(f"\n🧠 {agent_id} analyzing...")
analysis = agent.analyze_task(problem)
initial_analyses[agent_id] = analysis
print(f"✅ {agent_id} ({agent.role}):")
print(f" Response: {analysis.get('main_response', 'No response')[:150]}...")
print(f" Confidence: {analysis.get('confidence_level', 0.5):.2f}")
print(f" Key Insights: {analysis.get('key_insights', [])}")
print(f"\n🔄 PHASE 2: Cross-Agent Critique & Feedback")
critiques = {}
agent_list = list(self.agents.items())
for i, (agent_id, agent) in enumerate(agent_list):
target_agent_id = agent_list[(i + 1) % len(agent_list)][0]
target_analysis = initial_analyses[target_agent_id]
print(f"\n🔍 {agent_id} critiquing {target_agent_id}'s analysis...")
critique = agent.critique_analysis(target_analysis, problem)
critiques[f"{agent_id}_critiques_{target_agent_id}"] = critique
print(f"💬 {agent_id} → {target_agent_id}:")
print(f" Critique: {critique.get('main_response', 'No critique')[:120]}...")
print(f" Questions: {critique.get('questions_for_others', [])}")
print(f"\n🔬 PHASE 3: Solution Synthesis")
final_solutions = {}
all_analyses = list(initial_analyses.values())
for agent_id, agent in self.agents.items():
print(f"\n🎯 {agent_id} synthesizing final solution...")
synthesis = agent.synthesize_solutions(all_analyses, problem)
final_solutions[agent_id] = synthesis
print(f"🏆 {agent_id} Final Solution:")
print(f" {synthesis.get('main_response', 'No synthesis')[:200]}...")
print(f" Confidence: {synthesis.get('confidence_level', 0.5):.2f}")
print(f" Next Action: {synthesis.get('next_action', 'No action specified')}")
print(f"\n🤝 PHASE 4: Consensus & Recommendation")
avg_confidence = sum(
sol.get('confidence_level', 0.5) for sol in final_solutions.values()
) / len(final_solutions)
print(f"📊 Average Solution Confidence: {avg_confidence:.2f}")
most_confident_agent = max(
final_solutions.items(),
key=lambda x: x[1].get('confidence_level', 0)
)
print(f"\n🏅 Most Confident Solution from: {most_confident_agent[0]}")
print(f"📝 Recommended Solution: {most_confident_agent[1].get('main_response', 'No solution')}")
all_insights = []
for solution in final_solutions.values():
all_insights.extend(solution.get('key_insights', []))
print(f"\n💡 Collective Intelligence Insights:")
for i, insight in enumerate(set(all_insights), 1):
print(f" {i}. {insight}")
return final_solutions
Mira el completo Cuaderno aquí
La clase Agent2AgentCollaborativeSystem gestiona su flota de instancias geminiagentes, proporcionando métodos para registrar nuevos agentes y orquestar el flujo de trabajo de colaboración de cuatro fases, el análisis individual, la crítica de agentes cruzados, la síntesis de soluciones y la puntuación de consenso. Maneja el registro e imprimiendo los resultados intermedios y devuelve las soluciones finales propuestas por cada agente para el uso posterior.
def create_specialized_gemini_agents():
"""Create diverse Gemini agents with different roles and personalities"""
agents = [
GeminiAgent(
"DataScientist_Alpha",
"Data Scientist & Analytics Specialist",
"Methodical, evidence-based, loves patterns and statistical insights",
temperature=0.3
),
GeminiAgent(
"ProductManager_Beta",
"Product Strategy & User Experience Expert",
"User-focused, strategic thinker, balances business needs with user value",
temperature=0.5
),
GeminiAgent(
"TechArchitect_Gamma",
"Technical Architecture & Engineering Lead",
"System-oriented, focuses on scalability, performance, and technical feasibility",
temperature=0.4
),
GeminiAgent(
"CreativeInnovator_Delta",
"Innovation & Creative Problem Solving Specialist",
"Bold, unconventional, pushes boundaries and suggests breakthrough approaches",
temperature=0.8
),
GeminiAgent(
"RiskAnalyst_Epsilon",
"Risk Management & Compliance Expert",
"Cautious, thorough, identifies potential issues and mitigation strategies",
temperature=0.2
)
]
return agents
Mira el completo Cuaderno aquí
La función create_specialized_gemini_agents instancia a un equipo equilibrado de cinco agentes de Géminis, cada uno con un papel, personalidad y configuración de temperatura únicos. Los agentes cubren análisis, estrategia de productos, arquitectura del sistema, innovación creativa y gestión de riesgos para garantizar la resolución de problemas colaborativos completos.
def run_gemini_agent2agent_demo():
print("🚀 Agent2Agent Protocol: Multi-Gemini Collaborative Intelligence")
print("=" * 80)
if API_KEY == "your-gemini-api-key-here":
print("⚠️ Please set your Gemini API key!")
print("💡 Get your free API key from: https://makersuite.google.com/app/apikey")
return
collaborative_system = Agent2AgentCollaborativeSystem()
for agent in create_specialized_gemini_agents():
collaborative_system.add_agent(agent)
problems = [
"Design a sustainable urban transportation system for a city of 2 million people that reduces carbon emissions by 50% while maintaining economic viability.",
"Create a strategy for a tech startup to compete against established players in the AI-powered healthcare diagnostics market."
]
for i, problem in enumerate(problems, 1):
print(f"\n{'🌟 COLLABORATION SESSION ' + str(i):=^80}")
collaborative_system.run_collaborative_problem_solving(problem)
if i < len(problems):
print(f"\n{'⏸️ BREAK BETWEEN SESSIONS':=^80}")
time.sleep(3)
print(f"\n🎉 Multi-Gemini Agent2Agent Collaboration Complete!")
print("💡 This demonstrates true AI-to-AI collaboration using Google's Gemini models!")
print("🤖 Each agent brought unique expertise to solve complex problems collectively!")
if __name__ == "__main__":
run_gemini_agent2agent_demo()
Mira el completo Cuaderno aquí
Finalmente, la función run_gemini_agent2agent_demo une todo: imprime un encabezado general, asegura que se establece nuestra clave de la API Gemini, registra las cinco agentes especializados y luego ejecuta sesiones de resolución de problemas colaborativas en cada desafío predefinido (con una breve pausa entre las sesiones).
En conclusión, al final de este tutorial, tendremos un sistema de agente 2AGENT totalmente funcional capaz de simular la colaboración de alto nivel entre diversos expertos en IA. El diseño modular permite una fácil extensión. Se pueden conectar nuevos roles de agentes, tipos de mensajes o criterios de decisión con cambios mínimos, lo que hace que el marco sea adaptable a la planificación urbana, la estrategia de productos o los dominios de gestión de riesgos. En última instancia, este tutorial muestra la fuerza de los modelos Géminis de Google para tareas generativas individuales e ilustra cómo el diálogo coordinado y estructurado de IA a AI puede producir soluciones robustas e impulsadas por datos a problemas multifacéticos.
Mira el Cuaderno aquí. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, siéntete libre de seguirnos Gorjeo Y no olvides unirte a nuestro 95k+ ml de subreddit y suscribirse a Nuestro boletín.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.