Atomic Agents 프레임워크는 모듈식으로 확장 가능하고 사용하기 쉽게 설계되었습니다. 주요 목표는 중복된 복잡성, 불필요한 추상화 및 숨겨진 가정을 제거하는 동시에 원자성을 통해 AI 애플리케이션을 구축하기 위한 유연하고 강력한 플랫폼을 제공하는 것입니다. 프레임워크는 결합하여 강력한 애플리케이션을 생성할 수 있는 도구 및 에이전트 세트를 제공합니다. Instructor를 기반으로 구축되었으며 데이터 및 스키마 검증 및 직렬화를 위해 Pydantic의 기능을 활용합니다.
에이전트 AI를 위한 기존 프레임워크는 자율적 다중 에이전트 시스템 구축에 중점을 두지만 실제 애플리케이션에 필요한 제어 및 예측 가능성이 부족한 경우가 많습니다. 기업에는 브랜드 및 목표에 부합하는 일관되고 안정적인 결과를 생성하는 AI 시스템이 필요합니다.
Atomic Agent는 다음을 제공하여 이러한 요구를 해결합니다.
모듈성: 작고 재사용 가능한 구성 요소를 결합하여 AI 애플리케이션을 구축합니다.
예측 가능성: 일관된 동작을 보장하기 위해 명확한 입력 및 출력 스키마를 정의합니다.
확장성: 전체 시스템을 중단하지 않고도 구성 요소를 쉽게 교체하거나 새 구성 요소를 통합할 수 있습니다.
제어: 시스템 프롬프트부터 도구 통합까지 시스템의 각 부분을 개별적으로 미세 조정합니다.
Atomic Agents에서 에이전트는 다음과 같은 몇 가지 주요 구성 요소로 구성됩니다.
시스템 프롬프트: 에이전트의 동작과 목적을 정의합니다.
입력 스키마: 에이전트 입력에 대한 구조 및 유효성 검사 규칙을 지정합니다.
출력 스키마: 에이전트 출력의 구조 및 유효성 검사 규칙을 지정합니다.
메모리: 대화 기록 또는 기타 관련 데이터를 저장합니다.
컨텍스트 제공자: 런타임 시 에이전트의 시스템 프롬프트에 동적 컨텍스트를 삽입합니다.
다음은 대략적인 아키텍처 다이어그램입니다.
Atomic Agent를 설치하려면 pip를 사용할 수 있습니다.
pip 설치 원자 에이전트
사용하려는 공급자도 설치했는지 확인하세요. 예를 들어 OpenAI 및 Groq를 사용하려면 openai
및 groq
패키지를 설치할 수 있습니다.
pip openai groq 설치
그러면 도구(곧 에이전트 및 파이프라인도 포함)를 다운로드하는 데 사용할 수 있는 CLI Atomic Assembler 도 설치됩니다.
로컬 개발의 경우 저장소에서 설치할 수 있습니다.
자식 클론 https://github.com/BrainBlend-AI/atomic-agents.gitcd 원자 에이전트 시 설치
Atomic Agents는 다음과 같은 주요 구성요소가 포함된 모노레포 구조를 사용합니다.
atomic-agents/
: 핵심 Atomic Agents 라이브러리
atomic-assembler/
: Atomic Agents 구성 요소를 관리하기 위한 CLI 도구
atomic-examples/
: Atomic Agent 사용을 보여주는 예제 프로젝트
atomic-forge/
: Atomic Agent와 함께 사용할 수 있는 도구 모음
예제의 전체 목록은 예제 디렉터리에서 찾을 수 있습니다.
우리는 각 예시를 철저하게 문서화하기 위해 노력하고 있지만, 뭔가 불분명한 경우에는 문서 개선을 위해 주저하지 말고 이슈를 공개하거나 끌어오기 요청을 해주시기 바랍니다.
다음은 Atomic Agent를 사용하여 강력한 에이전트를 생성하는 것이 얼마나 쉬운지 보여주는 간단한 스니펫입니다.
# 사용자 정의 출력 스키마 클래스 정의 CustomOutputSchema(BaseIOSchema):""" 사용자 정의 출력 스키마에 대한 docstring """chat_message: str = Field(..., 설명="에이전트의 채팅 메시지.")suggested_questions: List[str ] = Field(..., Description="추가 질문 제안.")# 시스템 설정 프롬프트system_prompt_generator = SystemPromptGenerator(배경=["이 보조자 지식이 풍부하고 도움이 되며 후속 질문을 제안합니다."],steps=["맥락과 의도를 이해하기 위해 사용자 입력을 분석합니다.","관련 있고 유익한 응답을 공식화합니다.","3개의 추천 후속 질문을 생성합니다. for the user."],output_instructions=["사용자 쿼리에 대한 응답으로 명확하고 간결한 정보를 제공하십시오.","사용자를 위한 3가지 관련 제안 질문으로 각 응답을 마무리하십시오."] )# 에이전트 초기화agent = BaseAgent(config=BaseAgentConfig(client=your_openai_client, # 실제 clientmodel="gpt-4o-mini",system_prompt_generator=system_prompt_generator,memory=AgentMemory(),output_schema=CustomOutputSchema로 교체) )# 에이전트를 사용하십시오response = agent.run(user_input)print(f"에이전트: {response.chat_message}")print("제안된 질문:")forquest in response.suggested_questions:print(f"- {question}")
이 스니펫은 사용자 쿼리에 응답하고 후속 질문을 제안하는 사용자 정의 가능한 에이전트를 만드는 방법을 보여줍니다. 실행 가능한 전체 예제를 보려면 atomic-examples/quickstart/quickstart/
디렉터리에 있는 다음 파일을 참조하세요.
기본 Chatbot 시작하기 위한 최소한의 Chatbot 예제입니다.
사용자 정의 Chatbot 사용자 정의 시스템 프롬프트를 사용한 고급 예입니다.
스키마가 포함된 사용자 정의 Chatbot 사용자 정의 출력 스키마를 갖춘 고급 예입니다.
다중 공급자 챗봇 Ollama 또는 Groq와 같은 다양한 공급자를 사용하는 방법을 보여줍니다.
빠른 시작 예제 외에도 Atomic Agent의 성능을 보여주는 더 복잡한 예제가 있습니다.
웹 검색 에이전트: 웹 검색을 수행하고 결과를 기반으로 질문에 답변하는 지능형 에이전트입니다.
YouTube Summarizer: YouTube 동영상에서 지식을 추출하고 요약하는 에이전트입니다.
예제의 전체 목록은 예제 디렉터리를 참조하세요.
이러한 예제는 Atomic Agent를 이해하고 사용하기 위한 훌륭한 출발점을 제공합니다.
Atomic Agents를 사용하면 컨텍스트 공급자를 사용하여 동적 컨텍스트로 에이전트를 향상할 수 있습니다. 컨텍스트 제공자를 사용하면 런타임 시 에이전트의 시스템 프롬프트에 추가 정보를 삽입하여 에이전트를 더욱 유연하게 만들고 컨텍스트를 인식할 수 있습니다.
컨텍스트 공급자를 사용하려면 SystemPromptContextProviderBase
에서 상속하고 시스템 프롬프트에 추가할 컨텍스트 문자열을 반환하는 get_info()
메서드를 구현하는 클래스를 만듭니다.
간단한 예는 다음과 같습니다.
fromomic_agents.lib.comComponents.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 ) -> 문자열:반환 "n".join(self.search_results)
그런 다음 에이전트에 컨텍스트 공급자를 등록할 수 있습니다.
# 동적 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 애플리케이션의 모듈성과 재사용성이 향상됩니다.
검색 쿼리를 생성하는 에이전트가 있고 이러한 쿼리를 다양한 검색 도구와 함께 사용하려고 한다고 가정해 보겠습니다. 에이전트의 출력 스키마를 검색 도구의 입력 스키마와 정렬하면 쉽게 서로 연결하거나 다른 검색 공급자 간에 전환할 수 있습니다.
이를 달성하는 방법은 다음과 같습니다.
import 강사import openaifrom pydantic import Fieldfromomic_agents.agents.base_agent import BaseIOSchema, BaseAgent, BaseAgentConfigfromomic_agents.lib.comComponents.system_prompt_generator import SystemPromptGenerator# 사용하려는 검색 도구 가져오기from web_search_agent.tools.searxng_search import SearxNGSearchTool# 쿼리에 대한 입력 스키마 정의 에이전트 클래스 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=["생성할 명령어와 쿼리 수를 받습니다.","생성합니다. JSON 형식의 쿼리입니다."],output_instructions=["각 쿼리가 고유하고 관련성이 있는지 확인하세요.","예상 스키마로 쿼리를 제공하세요."], ),input_schema=QueryAgentInputSchema,output_schema=SearxNGSearchTool.input_schema, # 출력 스키마 정렬) )
이 예에서는 다음과 같습니다.
모듈성 : SearxNGSearchTool
의 input_schema
와 query_agent
의 output_schema
스키마를 설정하여 에이전트의 출력을 도구에 대한 입력으로 직접 사용할 수 있습니다.
교환 가능성 : 다른 검색 공급자로 전환하기로 결정한 경우 다른 검색 도구를 가져오고 그에 따라 output_schema
업데이트할 수 있습니다.
예를 들어 다른 검색 서비스로 전환하려면 다음을 수행하세요.
# web_search_agent.tools.another_search에서 다른 검색 도구 가져오기 import AnotherSearchTool# 출력 스키마 업데이트 queryquery_agent.config.output_schema = AnotherSearchTool.input_schema
이 디자인 패턴은 에이전트와 도구를 연결하는 프로세스를 단순화하여 AI 애플리케이션의 적응력을 높이고 유지 관리를 더 쉽게 만듭니다.
CLI를 실행하려면 다음 명령을 실행하면 됩니다.
원자
또는 다음과 같이 Atomic Agents with Poetry를 설치한 경우:
시 실행 원자
또는 uv로 Atomic Agent를 설치한 경우:
자외선 실행 원자
이 명령을 실행하면 도구를 다운로드할 수 있는 메뉴가 표시됩니다.
각 도구에는 고유한 기능이 있습니다.
입력 스키마
출력 스키마
사용예
종속성
설치 지침
atomic-assembler
CLI를 사용하면 불필요한 종속성을 피하면서 도구를 완벽하게 제어할 수 있습니다. 또한 도구 수정이 간단해지며, 각 도구에는 자체 안정성 테스트 세트가 함께 제공됩니다.
하지만 CLI에만 국한되지는 않습니다! 원하는 경우 도구 폴더에 직접 액세스하고 필요에 따라 간단히 복사하고 붙여넣어 수동으로 관리할 수 있습니다.
Atomic Agent는 강사 패키지에 따라 다릅니다. 이는 OpenAI가 사용되는 모든 예에서 Ollama, Groq, Mistral, Cohere, Anthropic, Gemini 등과 같이 Instructor에서 지원하는 다른 API도 사용할 수 있음을 의미합니다. 전체 목록을 보려면 GitHub 페이지의 강사 설명서를 참조하세요.
API 문서는 여기에서 찾을 수 있습니다.
Atomic Forge는 Atomic Agent와 함께 기능을 확장하는 데 사용할 수 있는 도구 모음입니다. 현재 도구는 다음과 같습니다.
계산자
검색xNG 검색
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 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.