
กรอบงาน Atomic Agents ได้รับการออกแบบให้เป็นโมดูลาร์ ขยายได้ และใช้งานง่าย เป้าหมายหลักคือการกำจัดความซับซ้อนที่ซ้ำซ้อน นามธรรมที่ไม่จำเป็น และสมมติฐานที่ซ่อนอยู่ ในขณะที่ยังคงมอบแพลตฟอร์มที่ยืดหยุ่นและทรงพลังสำหรับการสร้างแอปพลิเคชัน AI ผ่านอะตอมมิกซิตี เฟรมเวิร์กมีชุดเครื่องมือและเอเจนต์ที่สามารถนำมารวมกันเพื่อสร้างแอปพลิเคชันที่มีประสิทธิภาพ มันถูกสร้างขึ้นบน Instructor และใช้ประโยชน์จากพลังของ Pydantic สำหรับการตรวจสอบความถูกต้องของข้อมูลและสคีมาและการทำให้เป็นอนุกรม

แม้ว่าเฟรมเวิร์กที่มีอยู่สำหรับ AI แบบเอเจนต์จะมุ่งเน้นไปที่การสร้างระบบหลายเอเจนต์อัตโนมัติ แต่ก็มักจะขาดการควบคุมและความสามารถในการคาดการณ์ที่จำเป็นสำหรับแอปพลิเคชันในโลกแห่งความเป็นจริง ธุรกิจต่างๆ ต้องการระบบ AI ที่สร้างผลลัพธ์ที่สม่ำเสมอและเชื่อถือได้ ซึ่งสอดคล้องกับแบรนด์และวัตถุประสงค์ของตน
Atomic Agents ตอบสนองความต้องการนี้ด้วยการจัดเตรียม:
ความเป็นโมดูล: สร้างแอปพลิเคชัน AI โดยรวมส่วนประกอบขนาดเล็กที่นำกลับมาใช้ใหม่ได้
ความสามารถในการคาดการณ์: กำหนดสคีมาอินพุตและเอาต์พุตที่ชัดเจนเพื่อให้แน่ใจว่ามีพฤติกรรมที่สอดคล้องกัน
ความสามารถในการขยาย: สลับส่วนประกอบหรือรวมส่วนประกอบใหม่ได้อย่างง่ายดายโดยไม่กระทบต่อทั้งระบบ
การควบคุม: ปรับแต่งแต่ละส่วนของระบบอย่างละเอียด ตั้งแต่ข้อความแจ้งของระบบไปจนถึงการรวมเครื่องมือ
ใน Atomic Agents สารประกอบด้วยองค์ประกอบสำคัญหลายประการ:
พร้อมท์ของระบบ: กำหนดพฤติกรรมและวัตถุประสงค์ของตัวแทน
สคีมาอินพุต: ระบุโครงสร้างและกฎการตรวจสอบสำหรับการป้อนข้อมูลของตัวแทน
สคีมาเอาต์พุต: ระบุโครงสร้างและกฎการตรวจสอบสำหรับเอาต์พุตของเอเจนต์
หน่วยความจำ: เก็บประวัติการสนทนาหรือข้อมูลอื่นๆ ที่เกี่ยวข้อง
ผู้ให้บริการบริบท: แทรกบริบทแบบไดนามิกลงในพรอมต์ระบบของเอเจนต์ขณะรันไทม์
นี่คือไดอะแกรมสถาปัตยกรรมระดับสูง:


ในการติดตั้ง Atomic Agents คุณสามารถใช้ pip:
pip ติดตั้ง atomic-agents
ตรวจสอบให้แน่ใจว่าคุณติดตั้งผู้ให้บริการที่คุณต้องการใช้ด้วย ตัวอย่างเช่น หากต้องการใช้ OpenAI และ Groq คุณสามารถติดตั้งแพ็คเกจ openai และ groq ได้:
pip ติดตั้ง openai groq
นอกจากนี้ยังติดตั้ง CLI Atomic Assembler ซึ่งสามารถใช้เพื่อดาวน์โหลดเครื่องมือ (และเร็ว ๆ นี้รวมถึง Agent และ Pipelines)
สำหรับการพัฒนาแบบโลคัล คุณสามารถติดตั้งได้จากพื้นที่เก็บข้อมูล:
git clone https://github.com/BrainBlend-AI/atomic-agents.gitcd อะตอมมิกเอเจนต์ ติดตั้งบทกวี
Atomic Agents ใช้โครงสร้าง monorepo โดยมีส่วนประกอบหลักดังต่อไปนี้:
atomic-agents/ : ไลบรารี Atomic Agents หลัก
atomic-assembler/ : เครื่องมือ CLI สำหรับจัดการส่วนประกอบ Atomic Agents
atomic-examples/ : ตัวอย่างโครงการที่แสดงการใช้งาน Atomic Agents
atomic-forge/ : ชุดเครื่องมือที่สามารถใช้กับ Atomic Agents
รายการตัวอย่างทั้งหมดสามารถพบได้ในไดเร็กทอรีตัวอย่าง
เรามุ่งมั่นที่จะจัดทำเอกสารแต่ละตัวอย่างอย่างละเอียด แต่หากมีสิ่งใดไม่ชัดเจน โปรดอย่าลังเลที่จะเปิดประเด็นหรือดึงคำขอเพื่อปรับปรุงเอกสาร
ต่อไปนี้เป็นตัวอย่างสั้นๆ ที่แสดงให้เห็นว่าการสร้างตัวแทนอันทรงพลังด้วย Atomic Agent นั้นง่ายดายเพียงใด:
# กำหนดคลาสสกีมาเอาต์พุตแบบกำหนดเอง CustomOutputSchema(BaseIOSchema):""" docstring สำหรับสกีมาเอาต์พุตแบบกำหนดเอง """chat_message: str = Field(..., description="ข้อความแชทจากตัวแทน")suggested_questions: List[str ] = Field(..., description="คำถามติดตามผลที่แนะนำ")# ตั้งค่าระบบ promptsystem_prompt_generator = SystemPromptGenerator(พื้นหลัง=["ผู้ช่วยนี้มีความรู้ เป็นประโยชน์ และแนะนำคำถามติดตามผล"],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("คำถามที่แนะนำ:")สำหรับคำถามใน response.suggested_questions:print(f"- {question}") ตัวอย่างนี้แสดงวิธีสร้างตัวแทนที่ปรับแต่งได้ซึ่งตอบสนองต่อคำถามของผู้ใช้และแนะนำคำถามติดตามผล สำหรับตัวอย่างที่สมบูรณ์และรันได้ โปรดดูไฟล์ต่อไปนี้ในไดเร็กทอรี atomic-examples/quickstart/quickstart/ :
Chatbot ขั้นพื้นฐาน ตัวอย่าง Chatbot ขั้นต่ำเพื่อให้คุณเริ่มต้นได้
Custom Chatbot ตัวอย่างขั้นสูงพร้อมพรอมต์ระบบที่กำหนดเอง
Chatbot แบบกำหนดเองพร้อมสคีมา ตัวอย่างขั้นสูงที่มีสคีมาเอาต์พุตแบบกำหนดเอง
Chatbot ที่มีผู้ให้บริการหลายราย สาธิตวิธีการใช้ผู้ให้บริการที่แตกต่างกัน เช่น Ollama หรือ Groq
นอกจากตัวอย่างการเริ่มต้นอย่างรวดเร็วแล้ว เรายังมีตัวอย่างที่ซับซ้อนมากขึ้นที่แสดงให้เห็นถึงพลังของตัวแทนอะตอม:
Web Search Agent: ตัวแทนอัจฉริยะที่ทำการค้นหาเว็บและตอบคำถามตามผลลัพธ์
YouTube Summarizer: ตัวแทนที่ดึงและสรุปความรู้จากวิดีโอ YouTube
สำหรับรายการตัวอย่างทั้งหมด โปรดดูไดเร็กทอรีตัวอย่าง
ตัวอย่างเหล่านี้เป็นจุดเริ่มต้นที่ดีในการทำความเข้าใจและใช้งาน Atomic Agent
Atomic Agents ช่วยให้คุณสามารถปรับปรุงเอเจนต์ของคุณด้วยบริบทแบบไดนามิกโดยใช้ Context Providers ผู้ให้บริการบริบทช่วยให้คุณสามารถแทรกข้อมูลเพิ่มเติมลงในพร้อมต์ระบบของตัวแทนขณะรันไทม์ ทำให้ตัวแทนของคุณมีความยืดหยุ่นและรับรู้บริบทมากขึ้น
หากต้องการใช้ Context Provider ให้สร้างคลาสที่สืบทอดมาจาก SystemPromptContextProviderBase และใช้เมธอด get_info() ซึ่งจะส่งคืนสตริงบริบทที่จะเพิ่มลงในพรอมต์ของระบบ
นี่เป็นตัวอย่างง่ายๆ:
จาก atomic_agents.lib.components.system_prompt_generator นำเข้า 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)
จากนั้น คุณสามารถลงทะเบียน Context Provider กับตัวแทนได้:
# เริ่มต้นผู้ให้บริการบริบทของคุณด้วยไดนามิก datasearch_results_provider = SearchResultsProvider(title="Search Results",search_results=["Result 1", "Result 2", "Result 3"]
)# ลงทะเบียนผู้ให้บริการบริบทด้วย agentagent.register_context_provider("search_results", search_results_provider)ซึ่งช่วยให้ตัวแทนของคุณสามารถรวมผลการค้นหา (หรือบริบทอื่นใด) ไว้ในพร้อมท์ของระบบ ช่วยเพิ่มการตอบสนองตามข้อมูลล่าสุด
Atomic Agents ทำให้ง่ายต่อการเชื่อมโยงตัวแทนและเครื่องมือเข้าด้วยกันโดยการจัดแนวแผนผังอินพุตและเอาท์พุต การออกแบบนี้ช่วยให้คุณสามารถสลับส่วนประกอบได้อย่างง่ายดาย ส่งเสริมความเป็นโมดูลาร์และการนำกลับมาใช้ใหม่ในแอปพลิเคชัน AI ของคุณ
สมมติว่าคุณมีตัวแทนที่สร้างคำค้นหาและคุณต้องการใช้คำค้นหาเหล่านี้กับเครื่องมือค้นหาที่แตกต่างกัน ด้วยการจัดแนวสคีมาเอาท์พุทของเอเจนต์กับสคีมาอินพุตของเครื่องมือค้นหา คุณสามารถเชื่อมโยงเข้าด้วยกันหรือสลับระหว่างผู้ให้บริการการค้นหาต่างๆ ได้อย่างง่ายดาย
นี่คือวิธีที่คุณสามารถบรรลุเป้าหมายนี้:
นำเข้าผู้สอนนำเข้า openaifrom pydantic นำเข้า Fieldfrom atomic_agents.agents.base_agent นำเข้า BaseIOSchema, BaseAgent, BaseAgentConfigfrom atomic_agents.lib.components.system_prompt_generator นำเข้า SystemPromptGenerator# นำเข้าเครื่องมือค้นหาที่คุณต้องการใช้จาก web_search_agent.tools.searxng_search นำเข้า SearxNGSearchTool# กำหนดสคีมาอินพุตสำหรับแบบสอบถาม agentclass QueryAgentInputSchema(BaseIOSchema):"""อินพุตสคีมาสำหรับ QueryAgent"""คำแนะนำ: 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(พื้นหลัง=["คุณเป็นผู้เชี่ยวชาญด้านการสร้างคิวรีที่ชาญฉลาด","งานของคุณคือ สร้างการสืบค้นที่หลากหลายและมีความเกี่ยวข้องสูงตามจำนวนที่ระบุตามคำสั่งที่กำหนด"],steps=["รับคำสั่งและจำนวนการสืบค้นที่จะสร้าง","สร้างการสืบค้นใน รูปแบบ JSON"],output_instructions=["ตรวจสอบให้แน่ใจว่าแต่ละข้อความค้นหาไม่ซ้ำกันและมีความเกี่ยวข้อง","ระบุข้อความค้นหาในสคีมาที่คาดหวัง"],
),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # จัดแนวสคีมาเอาต์พุต)
-ในตัวอย่างนี้:
Modularity : โดยการตั้งค่า output_schema ของ query_agent ให้ตรงกับ input_schema ของ SearxNGSearchTool คุณสามารถใช้เอาต์พุตของเอเจนต์เป็นอินพุตไปยังเครื่องมือได้โดยตรง
ความสามารถในการสลับได้ : หากคุณตัดสินใจเปลี่ยนไปใช้ผู้ให้บริการค้นหารายอื่น คุณสามารถนำเข้าเครื่องมือค้นหาอื่นและอัปเดต output_schema ตามลำดับได้
ตัวอย่างเช่น หากต้องการเปลี่ยนไปใช้บริการค้นหาอื่น:
# นำเข้าเครื่องมือค้นหาอื่นจาก web_search_agent.tools.another_search นำเข้า AnotherSearchTool# อัปเดตเอาต์พุต schemaquery_agent.config.output_schema = AnotherSearchTool.input_schema
รูปแบบการออกแบบนี้ทำให้กระบวนการเชื่อมโยงตัวแทนและเครื่องมือง่ายขึ้น ทำให้แอปพลิเคชัน AI ของคุณสามารถปรับเปลี่ยนและบำรุงรักษาได้ง่ายขึ้น
หากต้องการรัน CLI เพียงรันคำสั่งต่อไปนี้:
อะตอม
หรือหากคุณติดตั้ง Atomic Agents with Poetry ตัวอย่างเช่น:
บทกวีวิ่งอะตอม
หรือถ้าคุณติดตั้ง Atomic Agents ด้วย uv:
ยูวีรันอะตอม
หลังจากรันคำสั่งนี้แล้ว คุณจะพบเมนูที่ให้คุณดาวน์โหลดเครื่องมือได้
เครื่องมือแต่ละอย่างมีของตัวเอง:
สคีมาอินพุต
สคีมาเอาท์พุท
ตัวอย่างการใช้งาน
การพึ่งพาอาศัยกัน
คำแนะนำในการติดตั้ง

CLI atomic-assembler ช่วยให้คุณควบคุมเครื่องมือได้อย่างสมบูรณ์ โดยหลีกเลี่ยงการยุ่งวุ่นวายกับการขึ้นต่อกันที่ไม่จำเป็น มันทำให้การปรับเปลี่ยนเครื่องมือตรงไปตรงมา นอกจากนี้ แต่ละเครื่องมือยังมาพร้อมกับชุดการทดสอบความน่าเชื่อถือของตัวเอง
แต่คุณไม่ได้ถูกจำกัดอยู่แค่ CLI! หากต้องการ คุณสามารถเข้าถึงโฟลเดอร์เครื่องมือได้โดยตรงและจัดการด้วยตนเองโดยเพียงแค่คัดลอกและวางตามต้องการ

Atomic Agent ขึ้นอยู่กับแพ็คเกจผู้สอน ซึ่งหมายความว่าในทุกตัวอย่างที่ใช้ OpenAI API อื่นๆ ที่ผู้สอนสนับสนุนก็สามารถใช้ได้ เช่น Ollama, Groq, Mistral, Cohere, Anthropic, Gemini และอื่นๆ อีกมากมาย สำหรับรายการทั้งหมด โปรดดูเอกสารประกอบของผู้สอนในหน้า GitHub
สามารถดูเอกสาร API ได้ที่นี่
Atomic Forge คือชุดเครื่องมือที่สามารถใช้กับ Atomic Agent เพื่อขยายฟังก์ชันการทำงานได้ เครื่องมือในปัจจุบันได้แก่:
เครื่องคิดเลข
ค้นหา SearxNG
เครื่องมือขูดการถอดเสียงของ YouTube
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้และการสร้างเครื่องมือ โปรดดูที่ Atomic Forge README
เรายินดีรับการมีส่วนร่วม! โปรดดูคู่มือนักพัฒนาสำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีการมีส่วนร่วมกับ Atomic Agent ต่อไปนี้เป็นขั้นตอนง่ายๆ:
แยกพื้นที่เก็บข้อมูล
สร้างสาขาใหม่ ( 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 โปรดดูรายละเอียดในไฟล์ใบอนุญาต