Una solución basada en Python que emplea razonamiento de múltiples agentes , donde múltiples agentes de IA colaboran para generar respuestas óptimas a las indicaciones de los usuarios. Al simular interacciones entre agentes e integrar Swarm Framework for Intelligence , el sistema mejora las capacidades de razonamiento para ofrecer respuestas precisas y refinadas. Se pueden agregar agentes personalizados a través de JSON, lo que le permite personalizar sus personalidades, estilos de interacción y más. El sistema aprovecha Prompt Caching para optimizar el rendimiento y reducir la latencia y los costos de las indicaciones repetidas.
El script de razonamiento de múltiples agentes crea una experiencia de chatbot interactivo en la que múltiples agentes de IA colaboran a través de un proceso de razonamiento estructurado para proporcionar respuestas óptimas. Cada agente aporta perspectivas y experiencia únicas y, a través de pasos iterativos de discusión, verificación, crítica y refinamiento, convergen en una respuesta precisa y de alta calidad.
Además, el sistema integra Swarm Framework for Intelligence para mejorar la colaboración entre agentes. Swarm permite a los agentes coordinarse de manera eficiente, aprovechando la inteligencia colectiva para resolver tareas complejas.
Los usuarios también pueden chatear con agentes individuales . Los agentes se conocen entre sí, incluidas sus personalidades y peculiaridades, y pueden responder preguntas sobre los demás, lo que brinda una experiencia rica e interactiva.
Clonar el repositorio :
git clone https://github.com/AdieLaine/multi-agent-reasoning.git
Navegue al directorio del proyecto :
cd multi-agent-reasoning
Instale los paquetes necesarios :
pip install openai colorama tiktoken
Instalar enjambre:
pip install git+ssh://[email protected]/openai/swarm.git
or
pip install git+https://github.com/openai/swarm.git
Consulte el repositorio GitHub de Swarm para obtener instrucciones de instalación detalladas.
Configure su clave API de OpenAI :
Configure su clave API como una variable de entorno:
export OPENAI_API_KEY= ' your-api-key-here '
Alternativamente, puede configurarlo directamente en su script o usar un archivo .env
.
Ejecute el script usando Python:
python reasoning.py
Al ejecutar el script, se le presentará un menú:
═════════════════════════════════════════════════════════════════════════════════════════════
║ Multi-Agent Reasoning Chatbot ║
═════════════════════════════════════════════════════════════════════════════════════════════
Please select an option:
1. Chat with an agent
2. Use reasoning logic
3. Use Swarm-based reasoning
4. Exit
Enter your choice (1/2/3/4):
Opción 1: chatear con un agente
Opción 2: usar lógica de razonamiento
Opción 3: utilizar razonamiento basado en Swarm
Opción 4: Salir
El sistema de razonamiento multiagente utiliza modelos OpenAI específicos:
o1-preview-2024-09-12
para tareas de razonamiento.gpt-4o
para interacciones de chat con agentes.gpt-4o
.Estos modelos admiten funciones avanzadas e informes de uso de tokens, lo que permite que el sistema proporcione información detallada sobre el uso de tokens después de cada respuesta.
Objetivo : Permite al usuario chatear directamente con un agente seleccionado.
Ejemplo :
El núcleo de la funcionalidad del chatbot radica en el proceso de razonamiento empleado por los agentes. Este proceso está diseñado para simular un entorno colaborativo donde los agentes piensan críticamente, verifican hechos, cuestionan las perspectivas de los demás y refinan sus respuestas basándose en comentarios constructivos.
Objetivo : los agentes generan sus respuestas iniciales al mensaje del usuario en función de su razonamiento y conocimiento individuales.
Ejemplo :
Objetivo : Los agentes verifican la exactitud y validez de sus propias respuestas para garantizar la exactitud de los hechos.
Ejemplo :
Objetivo : Los agentes critican las respuestas verificadas de cada uno para identificar áreas de mejora, omisiones o sesgos.
Ejemplo :
Objetivo : los agentes refinan sus propias respuestas incorporando comentarios de las críticas y mejorando su razonamiento inicial.
Ejemplo :
Objetivo : combinar las respuestas refinadas de todos los agentes en una respuesta única, cohesiva e integral.
blend_responses
.Ejemplo :
Objetivo : Incorporar los comentarios del usuario para refinar aún más la respuesta, garantizando satisfacción y precisión.
MAX_REFINEMENT_ATTEMPTS
.Ejemplo :
Objetivo : permitir que la conversación mantenga el contexto a través de múltiples indicaciones del usuario para un diálogo coherente.
Ejemplo :
Swarm Integration mejora el sistema de razonamiento de múltiples agentes al permitir la coordinación dinámica de agentes y la delegación de tareas. Swarm permite a los agentes colaborar de manera eficiente, aprovechando la inteligencia colectiva para resolver tareas complejas y mejorar la capacidad de respuesta.
Swarm se centra en hacer que la coordinación y ejecución de los agentes sea ligera, altamente controlable y fácilmente comprobable. Lo logra a través de dos abstracciones primitivas: Agentes y Handoffs . Un Agente abarca instrucciones y herramientas y puede, en cualquier momento, optar por pasar una conversación a otro Agente.
Inicialización del cliente Swarm : el sistema inicializa un cliente Swarm para gestionar las interacciones de los agentes.
from swarm import Agent , Swarm
client = Swarm ()
Inicialización del agente :
agents.json
.Manejo de conversaciones :
Objetivo : utilizar Swarm Framework for Intelligence para coordinar agentes dinámicamente, permitiendo una colaboración y delegación de tareas eficientes.
Inicialización :
agents.json
.Discusión :
client.run()
de Swarm.Verificación :
Criticando :
Refinamiento :
Combinando respuestas :
blend_responses
.Ejemplo :
Objetivo : proporcionar una interfaz de chat que aproveche las capacidades de Swarm para una interacción fluida con los agentes.
Agente de enjambre para chatear :
Manejo de conversaciones :
def swarm_chat_interface ( conversation_history ):
# Load Swarm agent's configuration
swarm_agent = ... # Initialize Swarm agent
messages = [{ "role" : "system" , "content" : swarm_agent . instructions }]
messages . extend ( conversation_history )
response = client . run ( agent = swarm_agent , messages = messages )
swarm_reply = response . messages [ - 1 ][ 'content' ]. strip ()
return swarm_reply
Respuestas dinámicas :
Ejemplo :
Diseño de agente :
Definiciones de funciones :
Variables de contexto :
Manejo de errores :
Pruebas :
¿Qué es Swarm y cómo mejora el sistema?
¿Necesito modificar mis agentes existentes para que funcionen con Swarm?
Agent
. Los agentes existentes se pueden adaptar incorporando la estructura y las convenciones de Swarm.¿Puedo agregar más agentes al sistema Swarm?
agents.json
e inicializarlos en el sistema.¿Cómo maneja Swarm los traspasos de agentes?
¿Swarm es compatible con los modelos utilizados en el sistema?
gpt-4o
. Prompt Caching mejora la eficiencia del sistema de razonamiento multiagente al reducir la latencia y el costo al manejar mensajes repetidos o largos. Funciona almacenando en caché los prefijos comunes más largos de mensajes, lo que permite un procesamiento más rápido de solicitudes posteriores que reutilizan estos prefijos.
Duración de la caché :
usage
que muestra detalles de uso del token. "usage" : {
"prompt_tokens" : 2006 ,
"completion_tokens" : 300 ,
"total_tokens" : 2306 ,
"prompt_tokens_details" : {
"cached_tokens" : 1920
},
"completion_tokens_details" : {
"reasoning_tokens" : 0
}
}
cached_tokens
indica cuántos tokens de aviso se recuperaron del caché. Los agentes se configuran mediante un archivo agents.json
, lo que permite una fácil personalización de sus atributos.
Ubicación : debe colocarse en el mismo directorio que el script reasoning.py
.
Estructura :
{
"agents" : [
{
"name" : " Agent 47 " ,
"system_purpose" : " You are a logical and analytical assistant, focusing on facts and clear reasoning. " ,
"interaction_style" : { ... },
"ethical_conduct" : { ... },
"capabilities_limitations" : { ... },
"context_awareness" : { ... },
"adaptability_engagement" : { ... },
"responsiveness" : { ... },
"additional_tools_modules" : { ... },
"personality" : {
"logical" : " Yes " ,
"analytical" : " Yes " ,
"humor_style" : " ... " ,
"friendly_demeanor" : " ... " ,
"personality_traits" : [ " Methodical " , " Precise " ],
"empathy_level" : " Moderate " ,
"interaction_style_with_humor" : " Dry wit " ,
"quirks" : [ " Uses technical jargon " ]
}
},
{
"name" : " Agent 74 " ,
"system_purpose" : " You are a creative and empathetic assistant, emphasizing imaginative solutions and understanding. " ,
"interaction_style" : { ... },
"ethical_conduct" : { ... },
"capabilities_limitations" : { ... },
"context_awareness" : { ... },
"adaptability_engagement" : { ... },
"responsiveness" : { ... },
"additional_tools_modules" : { ... },
"personality" : {
"creative" : " Yes " ,
"empathetic" : " Yes " ,
"humor_style" : " ... " ,
"friendly_demeanor" : " ... " ,
"personality_traits" : [ " Imaginative " , " Caring " ],
"empathy_level" : " High " ,
"interaction_style_with_humor" : " Playful " ,
"quirks" : [ " Uses metaphors " ]
}
},
{
"name" : " Swarm Agent " ,
"system_purpose" : " You are a collaborative AI assistant composed of multiple expert agents. You coordinate tasks among agents to provide comprehensive and accurate responses. " ,
"interaction_style" : { ... },
"personality" : {
"coordinator" : " Yes " ,
"collaborative" : " Yes " ,
"personality_traits" : [ " Organized " , " Facilitator " ],
"quirks" : [ " Ensures all perspectives are considered " ]
}
}
]
}
Personalización :
Ejemplo :
El código está estructurado para facilitar tanto el proceso de razonamiento como las interacciones de chat con los agentes. También incorpora Swarm Framework para mejorar la coordinación de agentes.
Bibliotecas :
os
, time
, logging
, json
: para operaciones del sistema, temporización, registro y manejo de JSON.colorama
: Para salida de consola en color.swarm
: Para implementar Swarm Intelligence.tiktoken
: para un recuento preciso de tokens (en otras partes del script).Inicialización :
from swarm import Agent , Swarm
client = Swarm ()
Los agentes se inicializan desde el archivo de configuración agents.json
.
Cada agente se crea como una instancia de Swarm Agent
con instrucciones y atributos específicos.
Los agentes se conocen entre sí añadiendo información sobre otros agentes a sus instrucciones.
def initialize_swarm_agents ():
# Load agents from agents.json and create Swarm agents
agents = []
# ... Load and initialize agents with awareness of others
return agents
Función : swarm_chat_interface(conversation_history)
Propósito : Maneja las interacciones de chat con el agente de Swarm.
Proceso :
def swarm_chat_interface ( conversation_history ):
# Prepare messages
messages = [{ "role" : "system" , "content" : swarm_agent . instructions }]
messages . extend ( conversation_history )
# Run Swarm client
response = client . run ( agent = swarm_agent , messages = messages )
swarm_reply = response . messages [ - 1 ][ 'content' ]. strip ()
return swarm_reply
Función : run_swarm_reasoning(user_prompt)
Propósito : utiliza agentes de Swarm para colaborar y responder a un mensaje de usuario siguiendo múltiples etapas de razonamiento.
Proceso :
blend_responses
combina las respuestas refinadas en una respuesta final.Procesamiento paralelo : Swarm permite a los agentes realizar estos pasos simultáneamente, mejorando la eficiencia.
Ejemplo de función de fusión :
def blend_responses ( agent_responses , user_prompt ):
# Prepare combined prompt
combined_prompt = ...
# Initialize Blender agent
blender_agent = Agent (
name = "Swarm Agent" ,
instructions = "You are a collaborative AI assistant composed of multiple expert agents."
)
# Run blending process
response = client . run ( agent = blender_agent , messages = [{ "role" : "user" , "content" : combined_prompt }])
blended_reply = response . messages [ - 1 ][ 'content' ]
return blended_reply
swarm_middle_agent_interface(user_prompt)
:run_swarm_reasoning
con el mensaje del usuario.swarm_chat_interface(conversation_history)
:A continuación se muestra un diagrama de flujo actualizado que refleja la nueva lógica, incluido el modo de chat, el conocimiento mutuo de los agentes, la transparencia del uso de tokens, el almacenamiento en caché de avisos y la integración de Swarm:
¡Las contribuciones son bienvenidas! Para contribuir:
Este proyecto está bajo la licencia MIT.
Para preparar el repositorio de GitHub:
Cree un nuevo repositorio en GitHub llamado multi-agent-reasoning
.
Agregue el archivo README.md
con este contenido.
Incluya el script reasoning.py
en el directorio raíz.
Incluya el archivo agents.json
en el directorio raíz.
Cree un archivo .gitignore
para excluir archivos innecesarios:
# Exclude log files
reasoning.log
swarm_middle_agent.log
# Exclude environment files
.env
# Python cache
__pycache__ /
* .py [ cod ]
Confirme y envíe los archivos a GitHub.
multi-agent-reasoning/
├── README.md
├── reasoning.py
├── swarm_middle_agent.py
├── agents.json
├── LICENSE
├── .gitignore
└── img/
├── reasoningbanner.png
├── reasoningflow.png
├── agents.png
└── promptcache.png
└── swarm.png
¡Siéntete libre de explorar el código, personalizar los agentes e interactuar con el chatbot de razonamiento multiagente!
Si tiene alguna pregunta o necesita ayuda, abra un problema en GitHub.