Atomic Agents フレームワークは、モジュール式で拡張可能で使いやすいように設計されています。その主な目標は、冗長な複雑さ、不必要な抽象化、隠れた前提を排除しながら、原子性を通じて AI アプリケーションを構築するための柔軟で強力なプラットフォームを提供することです。このフレームワークは、強力なアプリケーションを作成するために組み合わせられるツールとエージェントのセットを提供します。これは Instructor の上に構築されており、データとスキーマの検証とシリアル化に Pydantic の機能を活用しています。
エージェント AI の既存のフレームワークは、自律的なマルチエージェント システムの構築に重点を置いていますが、現実世界のアプリケーションに必要な制御や予測可能性が欠けていることがよくあります。企業は、自社のブランドと目的に沿った、一貫性のある信頼性の高い出力を生成する AI システムを必要としています。
Atomic Agent は、以下を提供することでこのニーズに対応します。
モジュール性:再利用可能な小さなコンポーネントを組み合わせて AI アプリケーションを構築します。
予測可能性:明確な入力スキーマと出力スキーマを定義して、一貫した動作を保証します。
拡張性:システム全体を中断することなく、コンポーネントを簡単に交換したり、新しいコンポーネントを統合したりできます。
制御:システム プロンプトからツールの統合まで、システムの各部分を個別に微調整します。
Atomic Agents では、エージェントはいくつかの主要なコンポーネントで構成されます。
システム プロンプト:エージェントの動作と目的を定義します。
入力スキーマ:エージェントの入力の構造と検証ルールを指定します。
出力スキーマ:エージェントの出力の構造と検証ルールを指定します。
メモリ:会話履歴やその他の関連データを保存します。
コンテキスト プロバイダー:実行時にエージェントのシステム プロンプトに動的コンテキストを挿入します。
高レベルのアーキテクチャ図は次のとおりです。
Atomic Agent をインストールするには、pip を使用できます。
pip インストール アトミック エージェント
使用するプロバイダーも必ずインストールしてください。たとえば、OpenAI と Groq を使用するには、 openai
およびgroq
パッケージをインストールします。
pip インストール openai grq
これにより、ツール (および近日中にエージェントとパイプラインも) をダウンロードするために使用できる CLI Atomic Assemblerもインストールされます。
ローカル開発の場合は、リポジトリからインストールできます。
git clone https://github.com/BrainBlend-AI/atomic-agents.gitcd atomic-agents 詩のインストール
Atomic Agents は、次の主要コンポーネントを含むモノリポジトリ構造を使用します。
atomic-agents/
: コアの Atomic Agents ライブラリ
atomic-assembler/
: Atomic Agents コンポーネントを管理するための CLI ツール
atomic-examples/
: アトミック エージェントの使用法を紹介するサンプル プロジェクト
atomic-forge/
: Atomic Agent で使用できるツールのコレクション
サンプルの完全なリストは、サンプル ディレクトリにあります。
私たちは各例を徹底的に文書化するよう努めていますが、不明な点がある場合は、ドキュメントを改善するために遠慮なくイシューをオープンするかプルリクエストを作成してください。
以下は、Atomic Agents を使用して強力なエージェントを作成することがいかに簡単かを示す簡単なスニペットです。
# カスタム出力スキーマクラスを定義します CustomOutputSchema(BaseIOSchema):""" カスタム出力スキーマの docstring """chat_message: str = Field(..., description="エージェントからのチャット メッセージ。")suggested_questions: List[str ] = Field(..., description="フォローアップの質問の提案。")# システムプロンプトをセットアップするsystem_prompt_generator = SystemPromptGenerator(background=["このアシスタントは知識が豊富で親切で、フォローアップの質問を提案します。"],steps=["ユーザーの入力を分析してコンテキストと意図を理解します。","関連性があり有益な応答を作成します。", "ユーザーに対してフォローアップの質問を 3 つ提案します。"],output_instructions=["ユーザーの質問に応じて明確で簡潔な情報を提供します。","それぞれの回答を締めくくりますユーザーに関連する 3 つの質問が提案されています。」] )# Agentagent を初期化します = BaseAgent(config=BaseAgentConfig(client=your_openai_client, # 実際の clientmodel="gpt-4o-mini",system_prompt_generator=system_prompt_generator,memory=AgentMemory(),output_schema=CustomOutputSchema) に置き換えます )# 応答内の質問には、agentresponse = Agent.run(user_input)print(f"Agent: {response.chat_message}")print("Suggestedquestions:") を使用します。suggested_questions:print(f"- {question}")
このスニペットは、ユーザーのクエリに応答し、フォローアップの質問を提案するカスタマイズ可能なエージェントを作成する方法を示しています。実行可能な完全な例については、 atomic-examples/quickstart/quickstart/
ディレクトリにある次のファイルを参照してください。
基本的なチャットボット 開始するための最小限のチャットボットの例。
カスタム チャットボット カスタム システム プロンプトを使用したより高度な例。
スキーマを使用したカスタム チャットボット カスタム出力スキーマを特徴とする高度な例。
マルチプロバイダー チャットボット Ollama や Groq などのさまざまなプロバイダーの使用方法を示します。
クイックスタートの例に加えて、Atomic Agent の能力を示すより複雑な例があります。
Web 検索エージェント: Web 検索を実行し、結果に基づいて質問に答えるインテリジェントなエージェント。
YouTube Summarizer: YouTube 動画から知識を抽出して要約するエージェント。
サンプルの完全なリストについては、サンプル ディレクトリを参照してください。
これらの例は、Atomic Agent を理解して使用するための優れた出発点となります。
Atomic Agents を使用すると、コンテキスト プロバイダーを使用して動的なコンテキストでエージェントを強化できます。コンテキスト プロバイダーを使用すると、実行時にエージェントのシステム プロンプトに追加情報を挿入できるため、エージェントがより柔軟でコンテキストを認識できるようになります。
コンテキスト プロバイダーを使用するには、 SystemPromptContextProviderBase
を継承し、システム プロンプトに追加するコンテキスト文字列を返すget_info()
メソッドを実装するクラスを作成します。
簡単な例を次に示します。
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)
次に、コンテキスト プロバイダーをエージェントに登録できます。
# 動的 datasearch_results_provider = SearchResultsProvider(title="検索結果",search_results=["結果 1", "結果 2", "結果 3"] を使用してコンテキスト プロバイダーを初期化します。 )# コンテキストプロバイダーをagentagent.register_context_provider("search_results", search_results_provider) に登録します。
これにより、エージェントはシステム プロンプトに検索結果 (またはその他のコンテキスト) を含めることができ、最新の情報に基づいて応答を強化できます。
Atomic Agents を使用すると、入力スキーマと出力スキーマを調整することで、エージェントとツールを簡単にチェーンできます。この設計により、コンポーネントを簡単に交換できるようになり、AI アプリケーションのモジュール性と再利用性が促進されます。
検索クエリを生成するエージェントがあり、これらのクエリをさまざまな検索ツールで使用したいとします。エージェントの出力スキーマを検索ツールの入力スキーマと一致させることで、それらを簡単にチェーンしたり、異なる検索プロバイダー間で切り替えたりすることができます。
これを実現する方法は次のとおりです。
importインストラクターimport openaifrom pydantic import Fieldfrom atomic_agents.agents.base_agent import BaseIOSchema、BaseAgent、BaseAgentConfigfrom atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator# 使用する検索ツールをインポートしますfrom web_search_agent.tools.searxng_search import SearxNGSearchTool# 入力を定義しますクエリ エージェントのスキーマclass QueryAgentInputSchema(BaseIOSchema):"""QueryAgent の入力スキーマ。"""instruction: str = Field(..., description="検索クエリを生成する命令。")num_queries: int = Field( ..., description="生成するクエリの数。")# クエリを初期化しますagentquery_agent = BaseAgent(BaseAgentConfig(client=instructor.from_openai(openai.OpenAI()),model="gpt-4o-mini",system_prompt_generator=SystemPromptGenerator(background=["あなたはインテリジェントなクエリ生成のエキスパートです。","あなたの仕事は次のとおりです。指定された指示に基づいて、指定された数の多様で関連性の高いクエリを生成します。"],steps=["指示とクエリの数を受け取ります。 generate.","クエリを JSON 形式で生成します。"],output_instructions=["各クエリが一意で関連性があることを確認してください。","クエリを予期されるスキーマで提供します。"], ),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # 出力スキーマの位置合わせ) )
この例では:
モジュール性: query_agent
のoutput_schema
SearxNGSearchTool
のinput_schema
と一致するように設定することで、エージェントの出力をツールへの入力として直接使用できます。
Swapability : 別の検索プロバイダーに切り替えることにした場合は、別の検索ツールをインポートし、それに応じてoutput_schema
更新できます。
たとえば、別の検索サービスに切り替えるには:
# 別の検索ツールをインポートしますfrom web_search_agent.tools.another_search import AnotherSearchTool# 出力を更新します schemaquery_agent.config.output_schema = AnotherSearchTool.input_schema
この設計パターンにより、エージェントとツールをチェーンするプロセスが簡素化され、AI アプリケーションの適応性が高まり、保守が容易になります。
CLI を実行するには、次のコマンドを実行するだけです。
原子
または、Atomic Agents を Poetry とともにインストールした場合は、たとえば次のようになります。
詩はアトミックに走る
または、UV を使用して Atomic Agent をインストールした場合:
UVランアトミック
このコマンドを実行すると、ツールをダウンロードできるメニューが表示されます。
各ツールには独自のものがあります。
入力スキーマ
出力スキーマ
使用例
依存関係
インストール手順
atomic-assembler
CLI を使用すると、ツールを完全に制御でき、不要な依存関係が乱雑になるのを回避できます。さらに、ツールの変更が簡単になり、各ツールには信頼性を高めるための独自のテスト セットが付属しています。
ただし、CLI に限定されるわけではありません。必要に応じて、ツール フォルダーに直接アクセスし、必要に応じてコピーして貼り付けるだけでツール フォルダーを手動で管理できます。
Atomic Agent は Instructor パッケージに依存します。これは、OpenAI が使用されるすべての例で、Instructor でサポートされる他の API (Ollama、Groq、Mistral、Cohere、Anthropic、Gemini など) も使用できることを意味します。完全なリストについては、GitHub ページにあるインストラクターのドキュメントを参照してください。
API ドキュメントはここにあります。
Atomic Forge は、Atomic Agent とともに使用して機能を拡張できるツールのコレクションです。現在のツールには次のものが含まれます。
電卓
検索NG検索
YouTube トランスクリプト スクレーパー
ツールの使用と作成の詳細については、Atomic Forge README を参照してください。
寄付を歓迎します! Atomic Agents に貢献する方法の詳細については、開発者ガイドを参照してください。以下にいくつかの簡単な手順を示します。
リポジトリをフォークする
新しいブランチを作成します ( git checkout -b feature-branch
)
変更を加える
テストを実行します ( pytest --cov atomic_agents
)
コードをフォーマットします ( black atomic_agents atomic_assembler
)
コードをリントします ( flake8 atomic_agents atomic_assembler
)
変更をコミットします ( git commit -m 'Add some feature'
)
ブランチにプッシュします ( git push origin feature-branch
)
プルリクエストを開く
完全な開発セットアップとガイドラインについては、開発者ガイドを参照してください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。