ähnelnLangChainundCrewAIim Gesang antwortenAutoGenSolche Frameworks sind beliebt, da sie hochgradige Abstraktionen für den Aufbau von KI-Systemen bieten. Viele Entwickler, darunter auch ich, haben jedoch festgestellt, dass diese Tools mehr schaden als nützen und den Entwicklungsprozess oft unnötig kompliziert und frustrierend machen.
gehen inAtomare Wirkstoffe- Atomic Agents ist ein modulares, schlankes Framework, das die Probleme im Zusammenhang mit bestehenden KI-Entwicklungstools beseitigt. Atomic Agents basiert auf zuverlässigen Programmierparadigmen wie Input-Prozess-Output-Modell (IPO)im Gesang antwortenAtomaritätKonzept und bietet einen neuen Ansatz, bei dem Einfachheit, Flexibilität und Kontrolle durch den Entwickler im Vordergrund stehen.
In diesem Artikel werfen wir einen genaueren Blick darauf, warum Atomic Agents entwickelt wurde, welches Programmierparadigma es verwendet und wie es sich von der Masse abhebt. Werfen Sie einen Blick auf Atomic Agents mit Code-Beispielen und Beispielen aus der Praxis. Und wenn Sie schon immer dachten, dass LangChain zu kompliziert ist, dann schauen Sie es sich hier gemeinsam an!
Probleme mit bestehenden KI-Rahmenwerken
Als ich anfing, mit folgenden Themen zu experimentierenLangChainDamals war ich sehr daran interessiert, dass es die Entwicklung von KI-Agenten vereinfacht. Aber so einfach ist es eigentlich nicht.
Abgesehen von der Komplexität der Klassen und Methoden scheinen die Entwickler von LangChain die praktischen Herausforderungen der KI-Entwicklung nicht zu verstehen, vielleicht schätzen sie die theoretische Eleganz mehr als die praktische Nutzbarkeit. Übermäßige Abstraktion macht die Entwicklung nicht nur schwieriger, sondern auch undurchsichtig.
Magische Illusionen in CrewAI und AutoGen
Gleichermaßen.CrewAIim Gesang antwortenAutoGenRahmenwerke wie diese versuchen auch, "magische" Lösungen durch die Automatisierung komplexer Aufgaben zu bieten. Die Idee, Schwärme von KI-Agenten einzusetzen, die alles autonom erledigen, ist verlockend, aber in der Praxis funktionieren diese Tools oft nicht einmal die Hälfte der Zeit richtig. Sie versprechen zu viel und halten in der Praxis zu wenig, so dass die Entwickler mit unvorhersehbarem Verhalten und mangelnder Kontrolle überfordert sind.
Diese Frameworks verwischen die zugrundeliegenden Prozesse und erschweren das Debuggen oder Anpassen von Funktionen. Das Ergebnis ist, dass diese Tools eher eine Blackbox als ein nützliches Framework sind - nicht ideal für die Entwicklung von Anwendungen, die Zuverlässigkeit und Wartbarkeit erfordern.
Die Funktion der Überverpflichtung: Häufig gestellte Fragen
Ein immer wiederkehrendes Problem bei diesen Rahmenwerken ist die Tendenz, dassFunktion der Überverpflichtung. Einige Unternehmen und Tools behaupten, Lösungen anzubieten, die nahe an AGI (Artificial General Intelligence) heranreichen, aber wenn Sie eine lange Karriere im Bereich der KI hinter sich haben, werden Sie feststellen, dass wir noch nicht so weit sind. Der Hype führt oft zu unrealistischen Erwartungen, und wenn diese Tools unweigerlich versagen, müssen die Entwickler die Konsequenzen tragen.
Wir brauchen einen besseren Weg
Nachdem wir mit diesen Rückschlägen gerungen hatten, wurde uns klar, dass wir einen solchen Rahmen brauchen:Beseitigung von unnötiger Komplexitätund Abstraktionsebenen:
- Beseitigung von unnötiger Komplexitätund Abstraktionsebenen.
- Volle Kontrolle für Entwicklerohne die wichtigsten Funktionen hinter undurchsichtigen Schnittstellen zu verstecken.
- Befolgen Sie zuverlässige, bewährte Programmierparadigmenzur Verbesserung der Wartbarkeit und Skalierbarkeit.
- Von Entwicklern für Entwickler entwickeltdie praktischen Herausforderungen bei der KI-Entwicklung zu verstehen.
Dieses Verständnis hat dazu geführt, dassAtomare WirkstoffeDie Geburt von.
Einführung in atomare Wirkstoffe

Atomic Agents Logo
Atomare Wirkstoffeist ein Open-Source-Framework, das so leichtgewichtig, modular und komponierbar wie möglich sein soll. Es folgt demInput-Processing-Output-Modell (IPO)im Gesang antwortenAtomaritätPrinzipien, die sicherstellen, dass jede Komponente für einen einzigen Zweck geeignet, wiederverwendbar und austauschbar ist.
Warum gibt es Atomare Agenten?
Atomare Wirkstoffe wurde geschaffen, um die Lücken der bestehenden Rahmenwerke zu schließen. Er zielt darauf ab
- Durch die Bereitstellung klarer, überschaubarer Komponenten.Vereinfachung der Entwicklung künstlicher Intelligenz.
- Beseitigung der überflüssigen Komplexität, die andere Frameworks plagtund unnötige Abstraktionen.
- Förderung von Flexibilität und KohärenzDadurch können sich Entwickler auf die Entwicklung effektiver KI-Anwendungen konzentrieren, anstatt sich mit dem Framework selbst zu beschäftigen.
- Förderung bewährter PraktikenDie Entwickler werden dazu angehalten, eine modulare und wartbare Codestruktur zu verwenden.
Durch die Einhaltung dieser Prinzipien ermöglicht Atomic Agents Entwicklern, KI-Agenten und -Anwendungen zu erstellen, die sowohl leistungsstark als auch einfach zu verwalten sind.
Das Programmierparadigma hinter atomaren Agenten
Input-Prozess-Output-Modell (IPO)
Das Herzstück von Atomic Agents ist dieInput-Prozess-Output-Modell (IPO)Es handelt sich um ein grundlegendes Programmierparadigma, das die Struktur eines Programms in drei verschiedene Phasen unterteilt:
- EingabeEmpfangen von Daten von Benutzern oder anderen Systemen.
- ProzessVerarbeitung oder Konvertierung von Daten.
- AusgabeDie verarbeiteten Daten werden als Ergebnisse dargestellt.
Dieses Modell ist klar und prägnant und erleichtert das Verständnis und die Verwaltung des Datenflusses in einer Anwendung.
In Atomic Agents bedeutet dies
- Eingabe-SchemataPydantic: Verwenden Sie Pydantic, um die Struktur der Eingabedaten und die Validierungsregeln zu definieren.
- Verarbeitung von KomponentenAgenten und Werkzeuge, die Datenoperationen durchführen.
- AusgabeschemataStrukturierung und Validierung der Ergebnisse vor der Rücksendung.
Atomarität: funktionelle Bausteine
AtomaritätDas Konzept besteht darin, ein komplexes System in seine kleinsten funktionalen Teile oder "Atome" zu zerlegen. Jedes Atom
- Eine einzige Verantwortung habenDas macht sie leichter verständlich und wartbar.
- WiederverwendbarDadurch können die Komponenten in verschiedenen Teilen der Anwendung oder sogar in verschiedenen Projekten verwendet werden.
- Kann mit anderen atomaren Komponenten kombiniert werden, um komplexere Funktionen aufzubauen.
Durch die Konzentration auf atomare Komponenten ermöglichen Atomic Agents eine modulare Architektur für mehr Flexibilität und Skalierbarkeit.
Die Funktionsweise atomarer Wirkstoffe
Inhaltsstoff
In Atomic Agents besteht der KI-Agent aus mehreren Schlüsselkomponenten:
- SystemwarnungDefinieren Sie das Verhalten und den Zweck des Agenten.
- EingabemodusStruktur: Gibt die erwartete Struktur der Eingabedaten an.
- AusgabemodusStruktur der Ausgabedaten: Definiert die Struktur der Ausgabedaten.
- Direktzugriffsspeicher (RAM)Speichert den Dialogverlauf oder Statusinformationen.
- kontextabhängige ProgrammierungInjektion eines dynamischen Kontexts in die System-Eingabeaufforderung während der Laufzeit.
- ArtefaktExterne Funktionen oder Anwendungsschnittstellen, die dem Agenten zur Verfügung stehen.
Jede Komponente ist modular aufgebaut und austauschbar und folgt den Grundsätzen der Trennung von Belangen und der Einzelverantwortung.
Modularität und Kompositionsfähigkeit
Modularität ist das Herzstück von Atomic Agents. Durch die Gestaltung von Komponenten, die in sich geschlossen sind und sich auf eine einzige Aufgabe konzentrieren, können Entwickler
- Wechsel der Werkzeuge oder Mittelohne den Rest des Systems zu beeinträchtigen.
- Feinabstimmung einzelner Komponentenwie z. B. Systemaufforderungen oder Modi, ohne unbeabsichtigte Nebeneffekte zu erzeugen.
- Durch die Anpassung der Eingangs- und Ausgangsmodi kann dieAgenten und WerkzeugeNahtlos aneinandergereiht.
Dieser modulare Ansatz macht nicht nur die Entwicklung überschaubarer, sondern verbessert auch die Wartbarkeit und Skalierbarkeit von KI-Anwendungen.
Kontext bieten: mehr Flexibilität
kontextabhängige ProgrammierungErmöglichen Sie es Agenten, dynamische Daten in Systemabfragen einzubeziehen und Antworten auf der Grundlage der neuesten Informationen zu verbessern.
Beispiel:
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)
Durch die Einbindung von Echtzeitdaten in den Kontext des Agenten können Sie dynamischere und reaktionsfähigere KI-Anwendungen erstellen.
Verkettung von Mustern und Belastungen
Atomic Agents vereinfacht den Prozess der Verkettung von Agenten und Werkzeugen durch die Anpassung der Ein- und Ausgabemodi.
Beispiel: Angenommen, Sie haben einen Agenten zur Abfragegenerierung und ein Websuchwerkzeug. Indem Sie das Ausgabemuster des Abfrageagenten so einstellen, dass es mit dem Eingabemuster des Suchwerkzeugs übereinstimmt, können Sie beide direkt miteinander verketten.
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 ) )
Dieses Design verbessert die Wiederverwendbarkeit und Flexibilität und ermöglicht den einfachen Austausch von Komponenten oder die Erweiterung der Funktionalität.
Gründe, warum Atomic Agents besser sind als andere Produkte
Beseitigung von unnötiger Komplexität
Im Gegensatz zu Frameworks, die mehrere Abstraktionsebenen einführen, ist Atomic Agents einfach und geradlinig. Jede Komponente hat einen klaren Zweck und es gibt keine versteckte Magie, die geknackt werden muss.
- transparente ArchitekturSie können vollständig nachvollziehen, wie Daten durch Ihre Anwendung fließen.
- Leichtere FehlersucheIdentifizierung und Behebung von Problemen wird durch die geringere Komplexität erleichtert.
- Geringere LernkurveEntwickler können schnell loslegen, ohne komplexe abstrakte Konzepte verstehen zu müssen.
Von Entwicklern für Entwickler entwickelt
Atomic Agents wurde mit Blick auf reale Entwicklungsherausforderungen konzipiert. Es verwendet bewährte und getestete Programmierparadigmen und stellt die Erfahrung der Entwickler in den Vordergrund.
- Solide ProgrammierkenntnisseDurch das IPO-Modell und die Atomisierung fördert der Rahmen die besten Praktiken.
- Flexibilität und KontrolleEntwickler können die Komponenten nach Belieben anpassen und erweitern.
- von der Gemeinschaft gesteuertAls Open-Source-Projekt lädt es zu Beiträgen und zur Zusammenarbeit mit der Entwicklergemeinschaft ein.
Eigenständige und wiederverwendbare Komponenten
Jeder Teil von Atomic Agents kann unabhängig laufen, was Wiederverwendbarkeit und Modularität fördert.
- Kann isoliert getestet werdenKomponenten können einzeln getestet werden, um die Zuverlässigkeit vor der Integration sicherzustellen.
- Projektübergreifend wiederverwendbarAtomare Komponenten können in verschiedenen Anwendungen eingesetzt werden und sparen so Entwicklungszeit.
- Leichtere WartungIsolation: Die Isolationsfunktion reduziert die Auswirkungen von Änderungen und vereinfacht die Aktualisierung.
Aufbau eines einfachen AI-Agenten
Wir werden einen KI-Agenten entwickeln, der auf Benutzeranfragen antwortet und Folgefragen stellt.
Schritt 1: Definieren von benutzerdefinierten Ein- und Ausgabemodi
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.")
Schritt 2: Einrichten von Systemwarnungen
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." ] )
Schritt 3: Initialisierung des Agenten
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 ) )
Schritt 4: Verwendung von Bevollmächtigten
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}")
Erwartetes Ergebnis:
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?
Integrationswerkzeuge und Kontextanbieter
Angenommen, der Agent soll auf der Grundlage einer Benutzeranfrage eine Websuche durchführen.
Schritt 1: SearxNGSearchTool herunterladen und einrichten
ausnutzen Atomic Assembler CLIWir können das Suchwerkzeug herunterladen:
atomic
Wählen Sie SearxNGSearchTool aus dem Menü und folgen Sie den Anweisungen, um die Abhängigkeiten zu installieren.
Schritt 2: Integration von Suchwerkzeugen
from web_search_agent.tools.searxng_search import SearxNGSearchTool, SearxNGSearchToolConfig # 初始化搜索工具 search_tool = SearxNGSearchTool(config=SearxNGSearchToolConfig(base_url="http://localhost:8080"))
Schritt 3: Aktualisieren des Agenten zur Verwendung des Tools
Wir können den Agenten so modifizieren, dass er auf der Grundlage von Benutzereingaben entscheidet, wann das Suchwerkzeug verwendet werden soll.
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
Schritt 4: Verwendung eines kontextbezogenen Anbieters mit Suchergebnissen
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)
Mit dieser Integration können Agenten Antworten auf der Grundlage von Websuchdaten in Echtzeit geben.
Atomic Assembler CLI: Einfache Verwaltungswerkzeuge
Ein charakteristisches Merkmal von Atomic Agents istAtomic Assembler CLIDies ist ein Befehlszeilentool, das die Verwaltung von Tools und Agenten vereinfacht.
Inspiriert von einigen modernen Tailwind-Bibliotheken wie shadcn, bei denen man die Komponenten nicht als Abhängigkeiten installiert, sondern sie in den eigenen Quellcode übernimmt.
Das bedeutet, dass wir das Tool nicht als Abhängigkeit mit pip installieren, sondern es in unser Projekt kopieren. Es gibt zwei Möglichkeiten, dies zu tun:
- Laden Sie das Tool manuell herunter, oder kopieren Sie den Quellcode aus dem Atomic Agents GitHub-Repository und fügen Sie ihn in die Datei
atomic-forge
Ordner. - Wir werden die Atomic Assembler CLI verwenden, um das Tool herunterzuladen.

Atomare Wirkstoffe
Schlüsselfunktion
- Download- und VerwaltungstoolsEinfaches Hinzufügen neuer Werkzeuge zu Projekten ohne manuelles Kopieren oder Auflösen von Abhängigkeiten.
- Vermeidung von Abhängigkeitsüberschneidungen: Halten Sie Ihr Projekt schlank, indem Sie nur die Werkzeuge installieren, die Sie benötigen.
- Einfaches ÄnderungswerkzeugJedes Tool ist unabhängig und verfügt über eigene Tests und eine eigene Dokumentation.
- Werkzeuge für den direkten ZugangWenn Sie möchten, können Sie die Werkzeuge manuell verwalten, indem Sie auf den Ordner Werkzeuge zugreifen.
am Ende schreiben
Atomic Agents bringt eine dringend benötigte Veränderung im Bereich der KI-Entwicklung, indem es Einfachheit, Modularität und Kontrolle durch den Entwickler in den Vordergrund stellt. Durch die Übernahme zuverlässiger Programmierparadigmen wie dem Input-Process-Output-Modell und der Atomarität löst es viele der Probleme, mit denen Entwickler bei der Verwendung von LangChain, CrewAI und AutoGen Die Frustrationen, die in bestehenden Rahmenwerken wie dem
Mit Atomic Agents können Sie
- Beseitigung von unnötiger Komplexitätdas sich auf die Entwicklung effektiver KI-Anwendungen konzentriert.
- Vollständige Kontrollejede Komponente des Systems.
- Einfacher Austausch oder Änderung von Komponentenohne die gesamte Anwendung zu unterbrechen.
- Nutzung von Modularität und WiederverwendbarkeitVerbesserung der Effizienz und Wartungsfreundlichkeit.
Wenn Sie es leid sind, sich mit übermäßig komplexen Frameworks herumzuschlagen, die zu viel versprechen und zu wenig halten, ist es an der Zeit, Atomic Agents auszuprobieren.