El marco de Atomic Agents está diseñado para ser modular, extensible y fácil de usar. Su objetivo principal es eliminar la complejidad redundante, las abstracciones innecesarias y las suposiciones ocultas y, al mismo tiempo, proporcionar una plataforma flexible y poderosa para crear aplicaciones de IA a través de la atomicidad. El marco proporciona un conjunto de herramientas y agentes que se pueden combinar para crear aplicaciones potentes. Está construido sobre Instructor y aprovecha el poder de Pydantic para la validación y serialización de datos y esquemas.
Si bien los marcos existentes para la IA agente se centran en la construcción de sistemas autónomos de múltiples agentes, a menudo carecen del control y la previsibilidad necesarios para las aplicaciones del mundo real. Las empresas necesitan sistemas de inteligencia artificial que produzcan resultados consistentes y confiables alineados con su marca y sus objetivos.
Atomic Agents aborda esta necesidad proporcionando:
Modularidad: cree aplicaciones de IA combinando componentes pequeños y reutilizables.
Previsibilidad: defina esquemas claros de entrada y salida para garantizar un comportamiento coherente.
Extensibilidad: intercambie componentes fácilmente o integre otros nuevos sin interrumpir todo el sistema.
Control: ajuste cada parte del sistema individualmente, desde indicaciones del sistema hasta integraciones de herramientas.
En Atomic Agents, un agente se compone de varios componentes clave:
Aviso del sistema: define el comportamiento y el propósito del agente.
Esquema de entrada: especifica la estructura y las reglas de validación para la entrada del agente.
Esquema de salida: especifica la estructura y las reglas de validación para la salida del agente.
Memoria: almacena el historial de conversaciones u otros datos relevantes.
Proveedores de contexto: inyecta contexto dinámico en el indicador del sistema del agente en tiempo de ejecución.
Aquí hay un diagrama de arquitectura de alto nivel:
Para instalar Atomic Agents, puedes usar pip:
pip install agentes-atómicos
Asegúrese de instalar también el proveedor que desea utilizar. Por ejemplo, para usar OpenAI y Groq, puedes instalar los paquetes openai
y groq
:
pip instalar openai groq
Esto también instala CLI Atomic Assembler , que se puede usar para descargar herramientas (y pronto también agentes y canalizaciones).
Para desarrollo local, puedes instalar desde el repositorio:
clon de git https://github.com/BrainBlend-AI/atomic-agents.gitcd atomic-agents instalación de poesía
Atomic Agents utiliza una estructura monorepo con los siguientes componentes principales:
atomic-agents/
: La biblioteca central de agentes atómicos.
atomic-assembler/
: la herramienta CLI para gestionar componentes de Atomic Agents
atomic-examples/
: Proyectos de ejemplo que muestran el uso de agentes atómicos
atomic-forge/
: una colección de herramientas que se pueden utilizar con Atomic Agents
Puede encontrar una lista completa de ejemplos en el directorio de ejemplos.
Nos esforzamos por documentar minuciosamente cada ejemplo, pero si algo no está claro, no dude en abrir un problema o realizar una solicitud para mejorar la documentación.
Aquí hay un breve fragmento que demuestra lo fácil que es crear un agente poderoso con Atomic Agents:
# Definir una clase de esquema de salida personalizada CustomOutputSchema(BaseIOSchema):""" cadena de documentación para el esquema de salida personalizado """chat_message: str = Field(..., descripción="El mensaje de chat del agente.")suggested_questions: List[str ] = Field(..., descripción="Preguntas de seguimiento sugeridas.")# Configure el sistema de avisosystem_prompt_generator = SystemPromptGenerator(antecedentes=["Este asistente está bien informado, es útil y sugiere preguntas de seguimiento."],pasos =["Analizar la entrada del usuario para comprender el contexto y la intención.","Formular una respuesta relevante e informativa.","Generar 3 preguntas de seguimiento sugeridas para el usuario."],output_instructions=["Proporcionar información clara y concisa en respuesta a las consultas de los usuarios.","Concluya cada respuesta con 3 preguntas sugeridas relevantes para el usuario."] )# Inicialice el agenteagente = BaseAgent(config=BaseAgentConfig(client=your_openai_client, # Reemplace con su clientmodel="gpt-4o-mini",system_prompt_generator=system_prompt_generator,memory=AgentMemory(),output_schema=CustomOutputSchema) )# Utilice agentresponse = agent.run(user_input)print(f"Agent: {response.chat_message}")print("Preguntas sugeridas:") para la pregunta en respuesta.suggested_questions:print(f"- {question}")
Este fragmento muestra cómo crear un agente personalizable que responda a las consultas de los usuarios y sugiera preguntas de seguimiento. Para obtener ejemplos completos y ejecutables, consulte los siguientes archivos en el directorio atomic-examples/quickstart/quickstart/
:
Chatbot básico Un ejemplo mínimo de chatbot para comenzar.
Chatbot personalizado Un ejemplo más avanzado con un mensaje de sistema personalizado.
Chatbot personalizado con esquema Un ejemplo avanzado que presenta un esquema de salida personalizado.
Chatbot multiproveedor Demuestra cómo utilizar diferentes proveedores como Ollama o Groq.
Además de los ejemplos de inicio rápido, tenemos ejemplos más complejos que demuestran el poder de los agentes atómicos:
Agente de búsqueda web: un agente inteligente que realiza búsquedas web y responde preguntas en función de los resultados.
YouTube Summarizer: un agente que extrae y resume conocimientos de vídeos de YouTube.
Para obtener una lista completa de ejemplos, consulte el directorio de ejemplos.
Estos ejemplos proporcionan un excelente punto de partida para comprender y utilizar los agentes atómicos.
Atomic Agents le permite mejorar sus agentes con contexto dinámico utilizando proveedores de contexto . Los proveedores de contexto le permiten inyectar información adicional en el indicador del sistema del agente en tiempo de ejecución, lo que hace que sus agentes sean más flexibles y conscientes del contexto.
Para utilizar un proveedor de contexto, cree una clase que herede de SystemPromptContextProviderBase
e implemente el método get_info()
, que devuelve la cadena de contexto que se agregará al indicador del sistema.
He aquí un ejemplo sencillo:
de atomic_agents.lib.components.system_prompt_generator import SystemPromptContextProviderBaseclass SearchResultsProvider(SystemPromptContextProviderBase):def __init__(self, title: str, search_results: List[str]):super().__init__(title=title)self.search_results = search_resultsdef get_info(self ) -> str:return "n".join(self.search_results)
Luego puede registrar su proveedor de contexto con el agente:
# Inicialice su proveedor de contexto con datos dinámicossearch_results_provider = SearchResultsProvider(title="Resultados de búsqueda",search_results=["Resultado 1", "Resultado 2", "Resultado 3"] )# Registre el proveedor de contexto con agentagent.register_context_provider("search_results", search_results_provider)
Esto le permite a su agente incluir los resultados de la búsqueda (o cualquier otro contexto) en el mensaje del sistema, mejorando sus respuestas en función de la información más reciente.
Atomic Agents facilita la cadena de agentes y herramientas al alinear sus esquemas de entrada y salida. Este diseño le permite intercambiar componentes sin esfuerzo, promoviendo la modularidad y la reutilización en sus aplicaciones de IA.
Suponga que tiene un agente que genera consultas de búsqueda y desea utilizar estas consultas con diferentes herramientas de búsqueda. Al alinear el esquema de salida del agente con el esquema de entrada de la herramienta de búsqueda, puede encadenarlos fácilmente o cambiar entre diferentes proveedores de búsqueda.
Así es como puedes lograr esto:
import instructorimport openaifrom pydantic import Fieldfrom atomic_agents.agents.base_agent import BaseIOSchema, BaseAgent, BaseAgentConfigfrom atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator# Importe la herramienta de búsqueda que desea usar desde web_search_agent.tools.searxng_search import SearxNGSearchTool# Defina el esquema de entrada para la consulta agentclass QueryAgentInputSchema(BaseIOSchema):"""Esquema de entrada para QueryAgent."""instruction: str = Field(..., descripción="Instrucción para generar consultas de búsqueda para.")num_queries: int = Field(..., descripción="Número de consultas a generar.")# Inicialice la consulta agentquery_agent = BaseAgent(BaseAgentConfig(client=instructor.from_openai(openai.OpenAI()),model="gpt-4o-mini",system_prompt_generator=SystemPromptGenerator(background= ["Usted es un experto en generación inteligente de consultas.","Su tarea es generar un número específico de consultas diversas y altamente relevantes basadas en una instrucción determinada."],steps=["Reciba la instrucción y la cantidad de consultas a generar .","Genere las consultas en formato JSON."],output_instructions=["Asegúrese de que cada consulta sea única y relevante.","Proporcione las consultas en el esquema esperado."], ),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # Alinear esquema de salida) )
En este ejemplo:
Modularidad : al configurar el output_schema
de query_agent
para que coincida con el input_schema
de SearxNGSearchTool
, puede usar directamente la salida del agente como entrada para la herramienta.
Intercambiabilidad : si decide cambiar a un proveedor de búsqueda diferente, puede importar una herramienta de búsqueda diferente y actualizar el output_schema
en consecuencia.
Por ejemplo, para cambiar a otro servicio de búsqueda:
# Importar una herramienta de búsqueda diferente de web_search_agent.tools.another_search import AnotherSearchTool# Actualizar el esquema de salida query_agent.config.output_schema = AnotherSearchTool.input_schema
Este patrón de diseño simplifica el proceso de encadenamiento de agentes y herramientas, lo que hace que sus aplicaciones de IA sean más adaptables y fáciles de mantener.
Para ejecutar la CLI, simplemente ejecute el siguiente comando:
atómico
O si instalaste Atomic Agents with Poetry, por ejemplo:
la poesía es atómica
O si instaló Atomic Agents con uv:
uv ejecutar atómico
Después de ejecutar este comando, se le presentará un menú que le permitirá descargar herramientas.
Cada herramienta tiene la suya:
Esquema de entrada
Esquema de salida
Ejemplo de uso
Dependencias
Instrucciones de instalación
La CLI atomic-assembler
le brinda control total sobre sus herramientas, evitando el desorden de dependencias innecesarias. Hace que la modificación de herramientas sea sencilla. Además, cada herramienta viene con su propio conjunto de pruebas de confiabilidad.
¡Pero no estás limitado a la CLI! Si lo prefiere, puede acceder directamente a las carpetas de herramientas y administrarlas manualmente simplemente copiando y pegando según sea necesario.
Agentes atómicos depende del paquete de instructor. Esto significa que en todos los ejemplos en los que se utiliza OpenAI, también se puede utilizar cualquier otra API compatible con Instructor, como Ollama, Groq, Mistral, Cohere, Anthropic, Gemini y más. Para obtener una lista completa, consulte la documentación del instructor en su página de GitHub.
La documentación API se puede encontrar aquí.
Atomic Forge es una colección de herramientas que se pueden utilizar con Atomic Agents para ampliar su funcionalidad. Las herramientas actuales incluyen:
Calculadora
BuscarxNG Buscar
Raspador de transcripciones de YouTube
Para obtener más información sobre el uso y la creación de herramientas, consulte el archivo README de Atomic Forge.
¡Agradecemos las contribuciones! Consulte la Guía para desarrolladores para obtener información detallada sobre cómo contribuir a Atomic Agents. Aquí hay algunos pasos rápidos:
Bifurcar el repositorio
Crea una nueva rama ( git checkout -b feature-branch
)
Haz tus cambios
Ejecutar pruebas ( pytest --cov atomic_agents
)
Formatee su código ( black atomic_agents atomic_assembler
)
Limpia tu código ( flake8 atomic_agents atomic_assembler
)
Confirme sus cambios ( git commit -m 'Add some feature'
)
Empujar a la rama ( git push origin feature-branch
)
Abrir una solicitud de extracción
Para conocer la configuración y las pautas de desarrollo completas, consulte la Guía para desarrolladores.
Este proyecto tiene la licencia MIT; consulte el archivo LICENCIA para obtener más detalles.