Le framework Atomic Agents est conçu pour être modulaire, extensible et facile à utiliser. Son objectif principal est d’éliminer la complexité redondante, les abstractions inutiles et les hypothèses cachées tout en fournissant une plate-forme flexible et puissante pour créer des applications d’IA grâce à l’atomicité. Le framework fournit un ensemble d'outils et d'agents qui peuvent être combinés pour créer des applications puissantes. Il est construit sur Instructor et exploite la puissance de Pydantic pour la validation et la sérialisation des données et des schémas.
Bien que les cadres existants pour l’IA agentique se concentrent sur la création de systèmes multi-agents autonomes, ils manquent souvent du contrôle et de la prévisibilité requis pour les applications du monde réel. Les entreprises ont besoin de systèmes d’IA capables de produire des résultats cohérents et fiables, alignés sur leur marque et leurs objectifs.
Atomic Agents répond à ce besoin en fournissant :
Modularité : créez des applications d'IA en combinant de petits composants réutilisables.
Prévisibilité : définissez des schémas d'entrée et de sortie clairs pour garantir un comportement cohérent.
Extensibilité : échangez facilement des composants ou intégrez-en de nouveaux sans perturber l'ensemble du système.
Contrôle : affinez chaque partie du système individuellement, des invites du système aux intégrations d'outils.
Dans Atomic Agents, un agent est composé de plusieurs composants clés :
Invite système : définit le comportement et le but de l'agent.
Schéma d'entrée : spécifie la structure et les règles de validation pour l'entrée de l'agent.
Schéma de sortie : spécifie la structure et les règles de validation pour la sortie de l'agent.
Mémoire : stocke l'historique des conversations ou d'autres données pertinentes.
Fournisseurs de contexte : injectez un contexte dynamique dans l'invite système de l'agent au moment de l'exécution.
Voici un schéma d'architecture de haut niveau :
Pour installer Atomic Agents, vous pouvez utiliser pip :
pip installer des agents atomiques
Assurez-vous également d'installer le fournisseur que vous souhaitez utiliser. Par exemple, pour utiliser OpenAI et Groq, vous pouvez installer les packages openai
et groq
:
pip installer openai groq
Cela installe également le CLI Atomic Assembler , qui peut être utilisé pour télécharger des outils (et bientôt également des agents et des pipelines).
Pour le développement local, vous pouvez installer depuis le référentiel :
clone git https://github.com/BrainBlend-AI/atomic-agents.gitcd atomic-agents installation de poésie
Atomic Agents utilise une structure monorepo avec les composants principaux suivants :
atomic-agents/
: La bibliothèque principale d'Atomic Agents
atomic-assembler/
: L'outil CLI pour gérer les composants Atomic Agents
atomic-examples/
: Exemples de projets illustrant l'utilisation des agents atomiques
atomic-forge/
: Une collection d'outils pouvant être utilisés avec les agents atomiques
Une liste complète des exemples peut être trouvée dans le répertoire des exemples.
Nous nous efforçons de documenter minutieusement chaque exemple, mais si quelque chose n'est pas clair, n'hésitez pas à ouvrir un ticket ou une pull request pour améliorer la documentation.
Voici un extrait rapide démontrant à quel point il est facile de créer un agent puissant avec Atomic Agents :
# Définir une classe de schéma de sortie personnalisée CustomOutputSchema(BaseIOSchema):""" docstring pour le schéma de sortie personnalisé """chat_message: str = Field(..., description="Le message de discussion de l'agent.")suggested_questions: List[str ] = Field(..., description="Questions de suivi suggérées.")# Configurer le système promptsystem_prompt_generator = SystemPromptGenerator(background=["Cet assistant est compétent, utile et suggère des questions de suivi."],étapes =["Analyser les commentaires de l'utilisateur pour comprendre le contexte et l'intention.","Formuler une réponse pertinente et informative.","Générer 3 suggestions de questions de suivi pour l'utilisateur."],output_instructions=["Fournir des informations claires et concises. en réponse aux requêtes des utilisateurs. "," Concluez chaque réponse avec 3 suggestions de questions pertinentes pour l'utilisateur. "] )# Initialisez l'agentagent = BaseAgent(config=BaseAgentConfig(client=your_openai_client, # Remplacez par votre clientmodel="gpt-4o-mini",system_prompt_generator=system_prompt_generator,memory=AgentMemory(),output_schema=CustomOutputSchema) )# Utilisez agentresponse = agent.run(user_input)print(f"Agent : {response.chat_message}")print("Questions suggérées :")pour la question dans réponse.suggested_questions:print(f"- {question}")
Cet extrait montre comment créer un agent personnalisable qui répond aux requêtes des utilisateurs et suggère des questions de suivi. Pour des exemples complets et exécutables, veuillez vous référer aux fichiers suivants dans le répertoire atomic-examples/quickstart/quickstart/
:
Chatbot de base Un exemple minimal de chatbot pour vous aider à démarrer.
Chatbot personnalisé Un exemple plus avancé avec une invite système personnalisée.
Chatbot personnalisé avec schéma Un exemple avancé présentant un schéma de sortie personnalisé.
Chatbot multi-fournisseurs Montre comment utiliser différents fournisseurs tels que Ollama ou Groq.
En plus des exemples de démarrage rapide, nous avons des exemples plus complexes démontrant la puissance des agents atomiques :
Agent de recherche Web : un agent intelligent qui effectue des recherches sur le Web et répond aux questions en fonction des résultats.
YouTube Summarizer : un agent qui extrait et résume les connaissances des vidéos YouTube.
Pour une liste complète des exemples, consultez le répertoire des exemples.
Ces exemples constituent un excellent point de départ pour comprendre et utiliser les agents atomiques.
Atomic Agents vous permet d'améliorer vos agents avec un contexte dynamique à l'aide de fournisseurs de contexte . Les fournisseurs de contexte vous permettent d'injecter des informations supplémentaires dans l'invite système de l'agent au moment de l'exécution, rendant ainsi vos agents plus flexibles et plus sensibles au contexte.
Pour utiliser un fournisseur de contexte, créez une classe qui hérite de SystemPromptContextProviderBase
et implémente la méthode get_info()
, qui renvoie la chaîne de contexte à ajouter à l'invite système.
Voici un exemple simple :
à partir 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)
Vous pouvez ensuite enregistrer votre fournisseur de contexte auprès de l'agent :
# Initialisez votre fournisseur de contexte avec datasearch_results_provider = SearchResultsProvider(title="Search Results",search_results=["Result 1", "Result 2", "Result 3"] )# Enregistrez le fournisseur de contexte avec agentagent.register_context_provider("search_results", search_results_provider)
Cela permet à votre agent d'inclure les résultats de la recherche (ou tout autre contexte) dans son invite système, améliorant ainsi ses réponses en fonction des dernières informations.
Atomic Agents facilite l'enchaînement d'agents et d'outils en alignant leurs schémas d'entrée et de sortie. Cette conception vous permet d'échanger des composants sans effort, favorisant ainsi la modularité et la réutilisabilité de vos applications d'IA.
Supposons que vous disposiez d’un agent qui génère des requêtes de recherche et que vous souhaitiez utiliser ces requêtes avec différents outils de recherche. En alignant le schéma de sortie de l'agent avec le schéma d'entrée de l'outil de recherche, vous pouvez facilement les enchaîner ou basculer entre différents fournisseurs de recherche.
Voici comment y parvenir :
import instructorimport openaifrom pydantic import Fieldfrom atomic_agents.agents.base_agent import BaseIOSchema, BaseAgent, BaseAgentConfigfrom atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator# Importez l'outil de recherche que vous souhaitez utiliserfrom web_search_agent.tools.searxng_search import SearxNGSearchTool# Définir le schéma d'entrée pour la requête agentclass QueryAgentInputSchema(BaseIOSchema):"""Schéma d'entrée pour le QueryAgent."""instruction : str = Field(..., description="Instruction pour générer des requêtes de recherche pour.")num_queries : int = Field(..., description="Nombre de requêtes à générer.")# Initialiser la requête agentquery_agent = BaseAgent(BaseAgentConfig(client=instructor.from_openai(openai.OpenAI()),model="gpt-4o-mini",system_prompt_generator=SystemPromptGenerator(background= ["Vous êtes un expert en génération de requêtes intelligentes.","Votre tâche consiste à générer un nombre spécifié de requêtes diverses et très pertinentes basées sur une instruction donnée."],steps=["Recevoir l'instruction et le nombre de requêtes à générer .","Générer les requêtes au format JSON."],output_instructions=["Assurer que chaque requête est unique et pertinente.","Fournir les requêtes dans le schéma attendu."], ),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # Aligner le schéma de sortie) )
Dans cet exemple :
Modularité : en définissant le output_schema
du query_agent
pour qu'il corresponde au input_schema
de SearxNGSearchTool
, vous pouvez directement utiliser la sortie de l'agent comme entrée de l'outil.
Échangeabilité : si vous décidez de passer à un autre moteur de recherche, vous pouvez importer un autre outil de recherche et mettre à jour le output_schema
en conséquence.
Par exemple, pour passer à un autre service de recherche :
# Importer un outil de recherche différent depuis web_search_agent.tools.another_search import AnotherSearchTool# Mettre à jour la sortie schemaquery_agent.config.output_schema = AnotherSearchTool.input_schema
Ce modèle de conception simplifie le processus de chaînage des agents et des outils, rendant vos applications d'IA plus adaptables et plus faciles à maintenir.
Pour exécuter la CLI, exécutez simplement la commande suivante :
atomique
Ou si vous avez installé Atomic Agents with Poetry, par exemple :
la poésie est atomique
Ou si vous avez installé Atomic Agents avec uv :
uv run atomique
Après avoir exécuté cette commande, un menu vous permettant de télécharger des outils vous sera présenté.
Chaque outil a son propre :
Schéma d'entrée
Schéma de sortie
Exemple d'utilisation
Dépendances
Instructions d'installation
La CLI atomic-assembler
vous donne un contrôle total sur vos outils, évitant ainsi l'encombrement de dépendances inutiles. Cela simplifie la modification des outils et chaque outil est livré avec son propre ensemble de tests de fiabilité.
Mais vous n'êtes pas limité à la CLI ! Si vous préférez, vous pouvez accéder directement aux dossiers d'outils et les gérer manuellement en les copiant et en les collant simplement selon vos besoins.
Atomic Agents dépend du package Instructor. Cela signifie que dans tous les exemples où OpenAI est utilisé, toute autre API prise en charge par Instructor peut également être utilisée, comme Ollama, Groq, Mistral, Cohere, Anthropic, Gemini, etc. Pour une liste complète, veuillez vous référer à la documentation de l'instructeur sur sa page GitHub.
La documentation de l'API peut être trouvée ici.
Atomic Forge est une collection d'outils qui peuvent être utilisés avec Atomic Agents pour étendre ses fonctionnalités. Les outils actuels incluent :
Calculatrice
Recherche SearxNG
Grattoir de transcription YouTube
Pour plus d’informations sur l’utilisation et la création d’outils, consultez le fichier README d’Atomic Forge.
Nous apprécions les contributions ! Veuillez consulter le Guide du développeur pour des informations détaillées sur la façon de contribuer à Atomic Agents. Voici quelques étapes rapides :
Forker le référentiel
Créer une nouvelle branche ( git checkout -b feature-branch
)
Apportez vos modifications
Exécuter des tests ( pytest --cov atomic_agents
)
Formatez votre code ( black atomic_agents atomic_assembler
)
Lint votre code ( flake8 atomic_agents atomic_assembler
)
Validez vos modifications ( git commit -m 'Add some feature'
)
Pousser vers la branche ( git push origin feature-branch
)
Ouvrir une pull request
Pour connaître la configuration complète et les directives de développement, veuillez vous référer au Guide du développeur.
Ce projet est sous licence MIT – voir le fichier LICENSE pour plus de détails.