¡Adiós a LangChain! ¡Agentes Atómicos está que arde!
se parecen aCadena LangChainyCrewAIresponder cantandoAutoGenEstos marcos son populares porque proporcionan abstracciones de alto nivel para construir sistemas de IA. Sin embargo, muchos desarrolladores, entre los que me incluyo, han descubierto que estas herramientas hacen más mal que bien, ya que a menudo añaden complejidad y frustración innecesarias al proceso de desarrollo.
entrar enAgentes atómicos- Atomic Agents se basa en paradigmas de programación fiables, tales como Modelo Entrada-Proceso-Salida (IPO)responder cantandoatomicidadque da prioridad a la sencillez, la flexibilidad y el control por parte del desarrollador.
En este artículo, veremos más de cerca por qué se crearon los Agentes Atómicos, el paradigma de programación que utiliza y cómo destaca entre la multitud. Echa un vistazo a Atomic Agents con ejemplos de código y ejemplos del mundo real, y si alguna vez has pensado que LangChain era demasiado complicado, ¡aquí lo veremos juntos!
Problemas con los marcos de IA existentes
Cuando empecé a experimentar conCadena LangChainEn su momento, me interesó mucho porque simplificaba el desarrollo de agentes de IA. Sin embargo, en realidad no es tan sencillo.
Aparte de la complejidad de las clases y métodos, los desarrolladores de LangChain no parecen entender los retos prácticos del desarrollo de IA, quizás valorando más la elegancia teórica que la usabilidad en el mundo real. Una abstracción excesiva no sólo dificulta el desarrollo, sino que también lo hace opaco.
Ilusiones mágicas en CrewAI y AutoGen
Lo mismo digo.CrewAIresponder cantandoAutoGenEste tipo de marcos también intentan ofrecer soluciones "mágicas" mediante la automatización de tareas complejas. La idea de desplegar enjambres de agentes de IA que se encarguen de todo de forma autónoma es tentadora, pero en la práctica estas herramientas no suelen funcionar correctamente la mitad de las veces. En la práctica, prometen más de lo que prometen y ofrecen menos de lo que ofrecen, dejando a los desarrolladores abrumados por un comportamiento impredecible y la falta de control.
Estos marcos desdibujan los procesos subyacentes, lo que dificulta la depuración o la personalización de funcionalidades. El resultado es que estas herramientas son más una caja negra que un marco útil, lo que no es ideal cuando se desarrollan aplicaciones que requieren fiabilidad y facilidad de mantenimiento.
La función de sobrecompromiso: preguntas frecuentes
Un problema recurrente de estos marcos es la tendencia aFunción de sobrecompromiso. Algunas empresas y herramientas afirman ofrecer soluciones cercanas a la AGI (Inteligencia Artificial General), pero si has tenido una larga carrera relacionada con el campo de la IA, te darás cuenta de que aún no hemos llegado a ese punto. El bombo publicitario suele generar expectativas poco realistas, y cuando estas herramientas inevitablemente se quedan cortas, los desarrolladores tienen que afrontar las consecuencias.
Necesito una forma mejor
Después de luchar contra estos contratiempos, nos quedó claro que necesitábamos un marco de este tipo:Eliminación de la complejidad innecesariay capas de abstracción:
- Eliminación de la complejidad innecesariay capas de abstracción.
- Control total para los desarrolladoressin ocultar funciones clave tras interfaces opacas.
- Seguir paradigmas de programación fiables y probados a lo largo del tiempomejorando el mantenimiento y la escalabilidad.
- Creado por desarrolladores, para desarrolladoresComprender los retos prácticos a los que se enfrenta el desarrollo de la IA.
Esta comprensión ha llevado aAgentes atómicosEl nacimiento de.
Introducción a los agentes atómicos

Logotipo de Agentes Atómicos
Agentes atómicoses un framework de código abierto diseñado para ser lo más ligero, modular y componible posible. Sigue el modeloModelo de entrada-procesamiento-salida (IPO)responder cantandoatomicidadgarantizando que cada componente sea polivalente, reutilizable e intercambiable.
¿Por qué existen los Agentes Atómicos?
Agentes atómicos se creó para colmar las lagunas de los marcos existentes. Su objetivo es
- Proporcionando componentes claros y manejables.Simplificar el desarrollo de la inteligencia artificial.
- Elimine la complejidad redundante que afecta a otros marcos.y abstracciones innecesarias.
- Fomentar la flexibilidad y la coherenciapermitiendo a los desarrolladores centrarse en crear aplicaciones de IA eficaces en lugar de enredarse con el propio framework.
- Fomentar las buenas prácticasSe anima a los desarrolladores a adoptar una estructura de código modular y mantenible.
Al adherirse a estos principios, Atomic Agents permite a los desarrolladores crear agentes y aplicaciones de IA potentes y fáciles de gestionar.
El paradigma de programación de los agentes atómicos
Modelo Entrada-Proceso-Salida (IPO)
En el corazón de los Agentes Atómicos está elModelo Entrada-Proceso-Salida (IPO)que es un paradigma básico de programación que divide la estructura de un programa en tres fases distintas:
- Entrada: Recibe datos de usuarios u otros sistemas.
- ProcesoTratamiento o conversión de datos.
- SalidaResultados: los datos procesados se presentan como resultados.
Este modelo es claro y conciso y facilita la comprensión y gestión del flujo de datos en una aplicación.
En Agentes Atómicos esto se traduce en
- Esquemas de entrada: Utilice Pydantic para definir la estructura de los datos de entrada y las reglas de validación.
- Componentes de procesamiento: Agentes y herramientas que realizan operaciones con los datos.
- Esquemas de salida: Asegúrese de que los resultados están estructurados y validados antes de ser devueltos.
Atomicidad: componentes funcionales
atomicidadEl concepto consiste en descomponer un sistema complejo en sus partes funcionales más pequeñas o "átomos". Cada átomo
- Tener una única responsabilidadEsto facilita su comprensión y mantenimiento.
- ReutilizableEsto permite utilizar los componentes en distintas partes de la aplicación o incluso en proyectos diferentes.
- Puede combinarse con otros componentes atómicos para construir funciones más complejas.
Al centrarse en componentes atómicos, los Agentes Atómicos facilitan una arquitectura modular para una mayor flexibilidad y escalabilidad.
Cómo funcionan los agentes atómicos
ingrediente
En Atomic Agents, el agente de IA consta de varios componentes clave:
- alerta del sistema: Definir el comportamiento y la finalidad del agente.
- modo de entradaEspecifica la estructura esperada de los datos de entrada.
- modo de salidaDefine la estructura de los datos de salida.
- memoria de acceso aleatorio (RAM): Almacena el historial de diálogo o la información de estado.
- programación sensible al contextoInyecta un contexto dinámico en el prompt del sistema en tiempo de ejecución.
- artefactoFunciones externas o interfaces de aplicación disponibles para el agente.
Cada componente está diseñado para ser modular e intercambiable y sigue los principios de separación de intereses y responsabilidad única.
Modularidad y componibilidad
La modularidad está en el corazón de los Agentes Atómicos. Al diseñar componentes autónomos y centrados en una única tarea, los desarrolladores pueden
- Cambio de herramientas o agentessin afectar al resto del sistema.
- Ajuste de componentes individualescomo los avisos o modos del sistema, sin crear efectos secundarios no deseados.
- Ajustando los modos de entrada y salida, elAgentes y herramientasEncadenados sin fisuras.
Este enfoque modular no sólo hace que el desarrollo sea más manejable, sino que también mejora el mantenimiento y la escalabilidad de las aplicaciones de IA.
Proporcionar contexto: aumentar la flexibilidad
programación sensible al contextoPermita a los agentes incluir datos dinámicos en las solicitudes del sistema y mejore las respuestas basándose en la información más reciente.
Ejemplo:
from atomic_agents.lib.components.system_prompt_generator import SystemPromptContextProviderBase class SearchResultsProvider(SystemPromptContextProviderBase): def __init__(self, title: str, search_results: List[str]): super().__init__(title=title) self.search_results = search_results def get_info(self) -> str: return "n".join(self.search_results) # 向代理注册上下文提供程序 agent.register_context_provider("search_results", search_results_provider)
Al inyectar datos en tiempo real en el contexto del agente, se pueden crear aplicaciones de IA más dinámicas y con mayor capacidad de respuesta.
Encadenamiento de patrones y agentes
Atomic Agents simplifica el proceso de encadenamiento de agentes y herramientas ajustando los modos de entrada y salida.
Ejemplo: Supongamos que tiene un agente de generación de consultas y una herramienta de búsqueda web. Configurando el patrón de salida del agente de consultas para que coincida con el patrón de entrada de la herramienta de búsqueda, puedes encadenarlos directamente.
from web_search_agent.tools.searxng_search import SearxNGSearchTool # Initialize the query agent query_agent = BaseAgent( BaseAgentConfig( # ... other configurations ... output_schema=SearxNGSearchTool.input_schema, # Align output schema ) )
Este diseño mejora la reutilización y la flexibilidad, lo que permite sustituir fácilmente los componentes o ampliar la funcionalidad.
Razones por las que los Agentes Atómicos son mejores que otros productos
Eliminación de la complejidad innecesaria
A diferencia de los frameworks que introducen múltiples capas de abstracción, Atomic Agents lo mantiene simple y directo. Cada componente tiene un propósito claro y no hay magia oculta que descifrar.
- arquitectura transparente: Puede comprender perfectamente cómo fluyen los datos a través de su aplicación.
- Depuración más sencilla: Identificar y solucionar problemas es más fácil gracias a la reducción de la complejidad.
- Reducción de la curva de aprendizajeLos desarrolladores pueden empezar a trabajar rápidamente sin tener que entender conceptos abstractos complejos.
Creado por desarrolladores, para desarrolladores
Atomic Agents se ha diseñado teniendo en cuenta los retos de desarrollo del mundo real. Utiliza paradigmas de programación de eficacia probada y da prioridad a la experiencia del desarrollador.
- Sólidos fundamentos de programaciónEl marco fomenta las buenas prácticas al seguir el modelo de la OPI y la atomicidad.
- Flexibilidad y controlLos desarrolladores pueden personalizar y ampliar los componentes según sus necesidades.
- impulsado por la comunidad: Como proyecto de código abierto, invita a la contribución y colaboración de la comunidad de desarrolladores.
Componentes independientes y reutilizables
Cada parte de los Agentes Atómicos puede ejecutarse de forma independiente, lo que favorece la reutilización y la modularidad.
- Puede probarse de forma aisladaLos componentes pueden probarse individualmente para garantizar su fiabilidad antes de la integración.
- Reutilizable en todos los proyectosLos componentes atómicos pueden utilizarse en distintas aplicaciones, lo que ahorra tiempo de desarrollo.
- Mantenimiento más fácilLa función de aislamiento reduce el impacto de los cambios y simplifica las actualizaciones.
Creación de un agente de IA sencillo
Construiremos un agente de IA que responda a las consultas de los usuarios y les haga preguntas de seguimiento.
Paso 1: Definir modos de entrada y salida personalizados
from pydantic import BaseModel, Field from typing import List from atomic_agents.agents.base_agent import BaseIOSchema class CustomInputSchema(BaseIOSchema): chat_message: str = Field(..., description="The user's input message.") class CustomOutputSchema(BaseIOSchema): chat_message: str = Field(..., description="The agent's response message.") suggested_questions: List[str] = Field(..., description="Suggested follow-up questions.")
Paso 2: Configurar las alertas del sistema
from atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator system_prompt_generator = SystemPromptGenerator( background=[ "You are a knowledgeable assistant that provides helpful information and suggests follow-up questions." ], steps=[ "Analyze the user's input to understand the context and intent.", "Provide a relevant and informative response.", "Generate 3 suggested follow-up questions." ], output_instructions=[ "Ensure clarity and conciseness in your response.", "Conclude with 3 relevant suggested questions." ] )
Paso 3: Inicializar el agente
from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig import instructor import openai # Initialize the agent agent = BaseAgent( config=BaseAgentConfig( client=instructor.from_openai(openai.OpenAI(api_key='YOUR_OPENAI_API_KEY')), model="gpt-4", system_prompt_generator=system_prompt_generator, input_schema=CustomInputSchema, output_schema=CustomOutputSchema ) )
Paso 4: Utilizar proxies
user_input = "Can you explain the benefits of using Atomic Agents?" input_data = CustomInputSchema(chat_message=user_input) response = agent.run(input_data) print(f"Agent: {response.chat_message}") print("Suggested questions:") for question in response.suggested_questions: print(f"- {question}")
Resultados previstos:
Agent: Atomic Agents simplifies AI development by providing modular, reusable components based on solid programming paradigms like the IPO model and atomicity.
Suggested questions:
- How does Atomic Agents compare to other AI frameworks?
- Can you provide an example of building an agent with Atomic Agents?
- What are the key features of Atomic Agents that enhance productivity?
Herramientas de integración y proveedores de contexto
Supongamos que queremos que el agente realice una búsqueda web basada en una consulta del usuario.
Paso 1: Descargar e instalar SearxNGSearchTool
utilizar Ensamblador atómico CLIPodemos descargar la herramienta de búsqueda:
atomic
Seleccione SearxNGSearchTool en el menú y siga las instrucciones para instalar las dependencias.
Paso 2: Integración de herramientas de búsqueda
from web_search_agent.tools.searxng_search import SearxNGSearchTool, SearxNGSearchToolConfig # 初始化搜索工具 search_tool = SearxNGSearchTool(config=SearxNGSearchToolConfig(base_url="http://localhost:8080"))
Paso 3: Actualizar el agente para utilizar la herramienta
Podemos modificar el agente para que decida cuándo utilizar la herramienta de búsqueda en función de la entrada del usuario.
from typing import Union class OrchestratorOutputSchema(BaseModel): tool: str = Field(..., description="The tool to use: 'search' or 'chat'") parameters: Union[SearxNGSearchTool.input_schema, CustomInputSchema] = Field(..., description="Parameters for the selected tool.") # 修改代理逻辑以输出 OrchestratorOutputSchema # ... # 执行选定的工具 if response.tool == "search": search_results = search_tool.run(response.parameters) # 处理检索结果 else: # 使用之前的聊天代理 pass
Paso 4: Utilizar un proveedor contextual con los resultados de búsqueda
class SearchResultsProvider(SystemPromptContextProviderBase): def __init__(self, search_results): super().__init__(title="Search Results") self.search_results = search_results def get_info(self) -> str: return "n".join(self.search_results) # After obtaining search results context_provider = SearchResultsProvider(search_results) agent.register_context_provider("search_results", context_provider)
Con esta integración, los agentes pueden ofrecer respuestas basadas en datos de búsqueda en la web en tiempo real.
Atomic Assembler CLI: herramientas de gestión sencillas
Una característica distintiva de los Agentes Atómicos esEnsamblador atómico CLISe trata de una herramienta de línea de comandos que simplifica la gestión de herramientas y agentes.
Inspirado en algunas bibliotecas modernas de Tailwind como shadcn, donde en lugar de instalar componentes como dependencias, tomas posesión de ellos en tu propio código fuente.
Esto significa que en lugar de instalar la herramienta como una dependencia usando pip, la copiaremos en nuestro proyecto. Hay dos maneras de hacer esto:
- Descargue la herramienta manualmente, o copie/pegue el código fuente del repositorio GitHub de Atomic Agents y colóquelo en la carpeta
atomic-forge
carpeta. - Utilizaremos la CLI de Atomic Assembler para descargar la herramienta.

Agentes atómicos
Características principales
- Herramientas de descarga y gestión: Añada fácilmente nuevas herramientas a los proyectos sin tener que copiar o resolver manualmente las dependencias.
- Evitar el desorden de las dependenciasMantén tu proyecto aligerado instalando sólo las herramientas que necesitas.
- Herramienta de fácil modificaciónCada herramienta es independiente, con sus propias pruebas y documentación.
- Herramientas de acceso directo: Si lo desea, puede gestionar manualmente las herramientas accediendo a la carpeta Herramientas.


escribir al final
Atomic Agents supone un cambio muy necesario en el campo del desarrollo de la IA al dar prioridad a la simplicidad, la modularidad y el control por parte del desarrollador. Al adoptar paradigmas de programación fiables como el modelo de entrada-proceso-salida y la atomicidad, resuelve muchos de los problemas a los que se enfrentan los desarrolladores cuando utilizan LangChain, CrewAI y AutoGen Las frustraciones encontradas en los marcos existentes, como la
Con los Agentes Atómicos, puede
- Eliminación de la complejidad innecesariaque se centra en la creación de aplicaciones de IA eficaces.
- Control totalcada componente del sistema.
- Sustituya o modifique fácilmente los componentessin interrumpir toda la aplicación.
- Aprovechar la modularidad y la reutilizaciónMejorar la eficacia y la capacidad de mantenimiento.
Si está cansado de luchar con frameworks excesivamente complejos que prometen más de la cuenta y no cumplen lo prometido, es hora de que pruebe Atomic Agents.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...