Atomic Agents 框架被設計為模組化、可擴展且易於使用。其主要目標是消除冗餘的複雜性、不必要的抽象和隱藏的假設,同時仍為透過原子性建立人工智慧應用程式提供靈活且強大的平台。該框架提供了一組工具和代理,可以組合起來創建強大的應用程式。它建構在 Instructor 之上,並利用 Pydantic 的強大功能進行資料和模式驗證及序列化。
雖然現有的代理人工智慧框架專注於建立自主多代理系統,但它們通常缺乏現實應用程式所需的控制和可預測性。企業需要人工智慧系統能夠產生與其品牌和目標相符的一致、可靠的輸出。
原子代理透過提供以下功能來滿足這一需求:
模組化:透過組合小型、可重複使用的元件來建立人工智慧應用程式。
可預測性:定義清晰的輸入和輸出模式以確保一致的行為。
可擴充性:輕鬆更換組件或整合新組件,而無需中斷整個系統。
控制:單獨微調系統的每個部分,從系統提示到工具整合。
在原子代理中,代理由幾個關鍵組件組成:
系統提示:定義代理人的行為和目的。
輸入架構:指定代理輸入的結構和驗證規則。
輸出架構:指定代理輸出的結構和驗證規則。
記憶體:儲存對話歷史記錄或其他相關資料。
上下文提供者:在執行時將動態上下文注入代理程式的系統提示中。
這是一個高階架構圖:
要安裝原子代理,您可以使用 pip:
pip 安裝原子代理
確保您也安裝了要使用的提供者。例如,要使用 OpenAI 和 Groq,您可以安裝openai
和groq
軟體包:
pip 安裝 openai groq
這也會安裝 CLI Atomic Assembler ,它可用於下載工具(很快還可以下載代理和管道)。
對於本機開發,您可以從儲存庫安裝:
git 克隆 https://github.com/BrainBlend-AI/atomic-agents.gitcd 原子代理 詩歌裝置
Atomic Agents 使用 monorepo 結構,具有以下主要元件:
atomic-agents/
:核心原子代理庫
atomic-assembler/
:用於管理 Atomic Agents 元件的 CLI 工具
atomic-examples/
:展示原子代理用法的範例項目
atomic-forge/
:可與原子代理人一起使用的工具集合
完整的範例清單可以在範例目錄中找到。
我們努力徹底記錄每個範例,但如果有任何不清楚的地方,請隨時提出問題或拉取請求以改進文件。
下面是一個快速片段,展示了使用原子代理創建強大的代理是多麼容易:
# 定義自訂輸出模式class CustomOutputSchema(BaseIOSchema):""" 自訂輸出模式的文件字串"""chat_message: str = Field(..., description="來自代理程式的聊天訊息。")suggested_questions: List [str ] = Field(..., description="建議的後續問題。")# 設定係統提示system_prompt_generator = SystemPromptGenerator(background=["這位助手知識淵博,樂於助人,並建議後續問題。"],steps =["分析使用者的輸入以了解上下文和意圖。","制定相關且內容豐富的回應。","為使用者產生3 個建議的後續問題。"],output_instructions=["提供清晰簡潔的資訊回應使用者查詢。 )# 初始化代理agent = BaseAgent(config=BaseAgentConfig(client=your_openai_client, # 替換為您實際的clientmodel="gpt-4o-mini",system_prompt_generator=system_prompt_generator,memory=OutgentMemory( )# 使用agentresponse = agent.run(user_input)print(f"Agent: {response.chat_message}")print("建議問題:")for Question in response.suggested_questions:print(f"- {question}")
此程式碼片段展示瞭如何建立可自訂的代理程式來回應使用者查詢並建議後續問題。有關完整的、可運行的範例,請參閱atomic-examples/quickstart/quickstart/
目錄中的以下文件:
基本聊天機器人 一個幫助您入門的最小聊天機器人範例。
自訂聊天機器人帶有自訂系統提示的更高級範例。
具有架構的自訂聊天機器人 具有自訂輸出架構的高級範例。
多提供者聊天機器人 示範如何使用不同的供應商,例如 Ollama 或 Groq。
除了快速入門範例之外,我們還有更複雜的範例來展示原子代理的強大功能:
Web 搜尋代理:執行 Web 搜尋並根據結果回答問題的智慧型代理程式。
YouTube Summarizer:從 YouTube 影片中提取和總結知識的代理商。
有關範例的完整列表,請參閱範例目錄。
這些範例為理解和使用原子代理提供了一個很好的起點。
原子代理可讓您使用上下文提供者透過動態上下文增強代理程式。上下文提供者使您能夠在運行時將附加資訊注入代理的系統提示中,從而使您的代理更加靈活和上下文感知。
要使用上下文提供程序,請建立繼承自SystemPromptContextProviderBase
的類別並實作get_info()
方法,該方法傳回要新增至系統提示字元的上下文字串。
這是一個簡單的例子:
fromatomic_agents.lib.components.system_prompt_generator 導入 SystemPromptContextProviderBaseclass SearchResultsProvider(SystemPromptContextProviderBase):def __init__(self, title: strance. def get_info(self ) -> str:return "n".join(self.search_results)
然後,您可以向代理註冊您的上下文提供者:
# 使用動態 datasearch_results_provider = SearchResultsProvider(title="Search Results",search_results=["Result 1", "Result 2", "Result 3"] 初始化上下文提供者 )# 向agent註冊上下文提供者agent.register_context_provider("search_results", search_results_provider)
這允許您的代理將搜尋結果(或任何其他上下文)包含在其係統提示中,從而根據最新資訊增強其回應。
原子代理透過調整代理和工具的輸入和輸出模式,可以輕鬆地將代理和工具連結在一起。這種設計使您可以輕鬆更換組件,從而促進人工智慧應用程式的模組化和可重複使用性。
假設您有一個產生搜尋查詢的代理,並且您希望透過不同的搜尋工具使用這些查詢。透過將代理程式的輸出模式與搜尋工具的輸入模式對齊,您可以輕鬆地將它們連結在一起或在不同的搜尋提供者之間切換。
以下是實現這一目標的方法:
import coachimport openaifrom pydantic import Fieldfromatomic_agents.agents.base_agent import BaseIOSchema, BaseAgent, BaseAgentConfigfromatomic_agents.lib.components.system_prompt_generatorator 樣本要使用Gen. port SearxNGSearchTool# 定義查詢的輸入架構agentclass QueryAgentInputSchema(BaseIOSchema) :"""QueryAgent 的輸入架構。"""指令:str = Field(..., description="產生搜尋查詢的指令。")num_queries: int = Field(..., description="要產生的查詢數。查詢產生專家。 。 ),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # 對齊輸出架構) )
在這個例子中:
模組化:透過將query_agent
的output_schema
設定為與SearxNGSearchTool
的input_schema
匹配,您可以直接使用代理程式的輸出作為工具的輸入。
可互換性:如果您決定切換到不同的搜尋提供程序,您可以匯入不同的搜尋工具並相應地更新output_schema
。
例如,要切換到另一個搜尋服務:
# 匯入不同的搜尋工具 from web_search_agent.tools.another_search import AnotherSearchTool# 更新輸出 schemaquery_agent.config.output_schema = AnotherSearchTool.input_schema
這種設計模式簡化了連結代理和工具的過程,使您的 AI 應用程式更具適應性且更易於維護。
要執行 CLI,只需執行以下命令:
原子
或者,如果您使用 Poetry 安裝了 Atomic Agents,例如:
詩歌運行原子
或者,如果您使用 uv 安裝了 Atomic Agents:
紫外線運行原子
執行此命令後,您將看到一個選單,讓您下載工具。
每個工具都有自己的:
輸入模式
輸出模式
使用範例
依賴關係
安裝說明
atomic-assembler
CLI 使您可以完全控制您的工具,避免不必要的依賴項造成的混亂。此外,它還使修改工具變得簡單,每個工具都有自己的一套可靠性測試。
但您不僅限於 CLI!如果您願意,您可以直接存取工具資料夾並透過簡單地根據需要複製和貼上來手動管理它們。
原子代理取決於講師包。這意味著在使用 OpenAI 的所有範例中,也可以使用 Instructor 支援的任何其他 API,例如 Ollama、Groq、Mistral、Cohere、Anthropic、Gemini 等。有關完整列表,請參閱 GitHub 頁面上的講師文件。
API 文件可以在這裡找到。
Atomic Forge 是一個工具集合,可與 Atomic Agent 一起使用來擴展其功能。目前的工具包括:
計算機
SearchxNG 搜尋
YouTube 腳本抓取工具
有關使用和創建工具的更多信息,請參閱 Atomic Forge 自述文件。
我們歡迎貢獻!有關如何為原子代理做出貢獻的詳細信息,請參閱開發人員指南。以下是一些快速步驟:
分叉儲存庫
建立一個新分支( 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 許可證的許可 - 有關詳細信息,請參閱許可證文件。