Eigenwise/atomic-agents
Building AI agents, atomically
Atomic Agents – 빠르고 전문 용어가 적은 개요
이것이 무엇인가 – 에이전틱 AI 애플리케이션을 작고 단일 목적의 구성 요소(에이전트, 도구, 컨텍스트 제공자) 집합으로 구축할 수 있는 Python 라이브러리입니다. 각 조각을 LEGO 블록으로 생각하세요. 작고 타입이 잘 정의된 클래스를 작성한 다음 다른 클래스와 결합하여 완전한 기능의 챗봇, RAG 시스템, 웹 검색 어시스턴트 등을 만듭니다.
왜 중요한가 – 기존 에이전트 프레임워크는 종종 많은 책임을 함께 묶어 동작을 예측하기 어렵게 만듭니다. Atomic Agents는 다음을 강제합니다:
- 원자성 – 각 구성 요소는 한 가지 작업을 수행하고 명확한 입출력 스키마(Pydantic을 통해)를 갖습니다.
- 재사용성 및 구성 가능성 – 전체 파이프라인을 다시 작성하지 않고도 도구를 교체하거나 프롬프트를 변경할 수 있습니다.
- 예측 가능성 – 엄격한 스키마는 구성 요소 간에 흐르는 데이터의 형태를 보장하여 프로덕션 등급의 신뢰성에 유용합니다.
핵심 아이디어
- 시스템 프롬프트 생성기 – LLM에 전송되는 프롬프트를 구축하며, 선택적으로 컨텍스트 제공자(예: 최근 검색 결과)로 강화됩니다.
- 입출력 스키마 – 에이전트가 수신하고 반환하는 내용을 검증하는 Pydantic 모델.
- 컨텍스트 제공자 – 런타임에 동적 정보를 프롬프트에 주입하는 플러그인형 클래스.
- 체이닝 – 스키마가 정렬되어 있으므로 한 에이전트의 출력을 다른 도구나 에이전트에 직접 공급할 수 있어 "쿼리 생성 → 웹 검색 실행 → 요약"과 같은 파이프라인이 가능합니다.
사용 방법 (README 예제에서)
from atomic_agents import AtomicAgent, AgentConfig, BasicChatInputSchema, BaseIOSchema
from atomic_agents.context import SystemPromptGenerator, ChatHistory
from pydantic import Field
class CustomOutputSchema(BaseIOSchema):
chat_message: str = Field(..., description="The reply")
suggested_questions: list[str] = Field(..., description="Follow‑up ideas")
prompt = SystemPromptGenerator(
background=["You are helpful and suggest follow‑ups."],
steps=["Understand user input.", "Reply concisely.", "Suggest 3 questions."],
output_instructions=["Return a clear answer and three questions."]
)
agent = AtomicAgent[BasicChatInputSchema, CustomOutputSchema](
config=AgentConfig(
client=instructor.from_openai(OpenAI()),
model="gpt-5-mini",
system_prompt_generator=prompt,
history=ChatHistory(),
)
)
resp = agent.run(BasicChatInputSchema(chat_message="Tell me about atomic agents"))
print(resp.chat_message, resp.suggested_questions)
이 라이브러리는 프롬프트 구성, 스키마 검증, 기록 관리를 처리합니다.
도구 생태계 – Atomic Forge – 번들된 CLI(atomic)를 사용하면 기성 도구(검색, 계산기, YouTube 트랜스크립트, PDF 리더 등)를 다운로드할 수 있습니다. 각 도구에는 자체 입출력 스키마가 포함되어 있어 에이전트와 즉시 체이닝할 수 있습니다.
설치 및 생태계
pip install atomic-agents(CLI 포함).- 선택적 제공자 확장(
instructor[groq],instructor[anthropic]등)을 통해 OpenAI 이외의 LLM에 액세스할 수 있습니다. - 문서, Discord, subreddit이 커뮤니티 지원을 제공합니다.
누가 고려해야 하는가 – LLM 기반 제품을 구축하는 Python 개발자로서 에이전트와 도구를 구성하는 깔끔하고 타입 안전한 방법을 원하며, 특히 예측 가능한 출력과 구성 요소의 쉬운 교체가 필요한 경우에 적합합니다.
위의 모든 세부 사항은 저장소의 README에서 직접 가져온 것이며, 추가 기능은 발명되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트