안녕 랭체인! 아토믹 에이전트가 불타고 있습니다!

AI 뉴스9개월 전 업데이트 AI 공유 서클
9K 00

닮은LangChainCrewAI노래로 응답자동 생성이러한 프레임워크는 AI 시스템 구축을 위한 높은 수준의 추상화를 제공한다는 점에서 인기가 있습니다. 하지만 저를 포함한 많은 개발자들은 이러한 도구가 득보다 실이 많으며 개발 프로세스에 불필요한 복잡성과 좌절감을 가중시킨다는 사실을 발견했습니다.

로 이동원자 에이전트- 기존 AI 개발 도구와 관련된 번거로움을 없애도록 설계된 모듈식 간소화된 프레임워크 - Atomic Agents는 다음과 같은 신뢰할 수 있는 프로그래밍 패러다임을 기반으로 합니다. 입력-프로세스-출력(IPO) 모델노래로 응답원자성개념을 도입하여 단순성, 유연성 및 개발자 제어를 우선시하는 새로운 접근 방식을 제공합니다.

이 글에서는 아토믹 에이전트가 만들어진 이유, 아토믹 에이전트가 사용하는 프로그래밍 패러다임, 그리고 아토믹 에이전트가 어떻게 차별화되는지 자세히 살펴볼 것입니다. 코드 샘플과 실제 예시를 통해 아토믹 에이전트를 살펴보고, 랭체인이 너무 복잡하다고 생각하신 적이 있으시다면 함께 살펴보세요!

기존 AI 프레임워크의 문제점

처음 실험을 시작했을 때LangChain당시에는 AI 에이전트 개발을 간소화한다는 점에 큰 관심을 가졌습니다. 하지만 실제로는 그렇게 간단하지 않았습니다.

클래스와 메서드의 복잡성 외에도, LangChain의 개발자들은 실제 사용성보다 이론적 우아함을 더 중요하게 생각하여 AI 개발의 실질적인 어려움을 이해하지 못하는 것 같습니다. 과도한 추상화는 개발을 더 어렵게 만들 뿐만 아니라 불투명하게 만들기도 합니다.

CrewAI 및 AutoGen의 매직 일루전

마찬가지로.CrewAI노래로 응답자동 생성이러한 프레임워크는 복잡한 작업을 자동화하여 '마법 같은' 솔루션을 제공하려고 시도하기도 합니다. 모든 것을 자율적으로 처리하기 위해 AI 에이전트 무리를 배치한다는 아이디어는 매력적이지만 실제로 이러한 도구는 절반만 제대로 작동하지 않는 경우가 많습니다. 실제로는 과대 약속과 과소 제공으로 인해 개발자는 예측할 수 없는 행동과 통제력 부족에 시달리게 됩니다.

이러한 프레임워크는 기본 프로세스를 모호하게 만들어 기능을 디버깅하거나 사용자 지정하기 어렵게 만듭니다. 그 결과 이러한 도구는 유용한 프레임워크라기보다는 블랙박스에 가깝기 때문에 안정성과 유지 관리가 필요한 애플리케이션을 개발할 때 적합하지 않습니다.

초과 약정 기능: 자주 묻는 질문

이러한 프레임워크의 반복되는 문제는 다음과 같은 경향이 있다는 것입니다.초과 약정 기능. 일부 회사와 도구는 AGI(인공 일반 지능)에 가까운 솔루션을 제공한다고 주장하지만, AI 분야에서 오랜 경력을 쌓은 사람이라면 아직 거기에 미치지 못한다는 것을 알 수 있습니다. 과대 광고는 종종 비현실적인 기대치로 이어지며, 이러한 도구가 불가피하게 부족할 경우 개발자는 그 결과를 감당해야 합니다.

더 나은 방법 필요

이러한 좌절과 씨름한 끝에 우리는 이러한 프레임워크가 필요하다는 것을 깨달았습니다:불필요한 복잡성 제거및 추상화 레이어:

  • 불필요한 복잡성 제거및 추상화 레이어.
  • 개발자에게 완전한 제어 권한 제공를 사용하여 불투명한 인터페이스 뒤에 주요 기능을 숨기지 않습니다.
  • 신뢰할 수 있고 오랜 시간 검증된 프로그래밍 패러다임 따르기유지 관리 및 확장성을 개선합니다.
  • 개발자를 위한, 개발자에 의한, 개발자를 위한 구축를 통해 AI 개발에서 직면한 실질적인 과제를 이해합니다.

이러한 이해는 다음과 같은 결과로 이어졌습니다.원자 에이전트의 탄생.

원자 에이전트 소개

再见 LangChain!Atomic Agents火了!

원자 에이전트 로고

원자 에이전트는 최대한 가볍고 모듈화되어 있으며 구성이 가능하도록 설계된 오픈 소스 프레임워크입니다. 이 프레임워크는입력-처리-출력(IPO) 모델노래로 응답원자성원칙을 준수하여 각 구성 요소가 단일 용도로 재사용 및 상호 교환이 가능하도록 보장합니다.

원자 에이전트는 왜 존재하나요?

원자 에이전트 는 기존 프레임워크의 공백을 메우기 위해 만들어졌습니다. 목표는 다음과 같습니다.

  • 명확하고 관리하기 쉬운 구성 요소를 제공합니다.인공 지능 개발 간소화.
  • 다른 프레임워크를 괴롭히는 중복 복잡성 제거불필요한 추상화를 제거합니다.
  • 유연성 및 일관성 증진를 통해 개발자는 프레임워크 자체에 얽매이지 않고 효과적인 AI 애플리케이션을 구축하는 데 집중할 수 있습니다.
  • 모범 사례 장려개발자는 유지 관리가 가능한 모듈식 코드 구조를 채택하는 것이 좋습니다.

이러한 원칙을 준수함으로써 개발자는 Atomic 에이전트를 통해 강력하면서도 관리하기 쉬운 AI 에이전트와 애플리케이션을 구축할 수 있습니다.

원자 에이전트의 프로그래밍 패러다임

입력-프로세스-출력(IPO) 모델

원자 에이전트의 핵심은 다음과 같습니다.입력-프로세스-출력(IPO) 모델는 프로그램의 구조를 세 가지 단계로 구분하는 기본 프로그래밍 패러다임입니다:

  1. 입력사용자 또는 다른 시스템으로부터 데이터를 수신합니다.
  2. 프로세스데이터 처리 또는 변환.
  3. 출력처리된 데이터가 결과로 표시됩니다.

이 모델은 명확하고 간결하며 애플리케이션의 데이터 흐름을 더 쉽게 이해하고 관리할 수 있습니다.

원자 에이전트에서 이는 다음과 같이 해석됩니다.

  • 입력 스키마Pydantic을 사용하여 입력 데이터의 구조와 유효성 검사 규칙을 정의합니다.
  • 처리 구성 요소데이터에 대한 작업을 수행하는 에이전트 및 도구.
  • 출력 스키마결과를 반환하기 전에 결과가 구조화되고 유효성이 검사되었는지 확인합니다.

원자성: 기능적 빌딩 블록

원자성이 개념은 복잡한 시스템을 가장 작은 기능적 부분, 즉 '원자'로 분해하는 것입니다. 각 원자

  • 단일 책임이렇게 하면 이해하고 유지 관리하기가 더 쉬워집니다.
  • 재사용 가능이를 통해 애플리케이션의 다른 부분이나 심지어 다른 프로젝트에서도 컴포넌트를 사용할 수 있습니다.
  • 다른 원자 구성 요소와 결합하여 더 복잡한 함수를 만들 수 있습니다.

원자 구성 요소에 집중함으로써 Atomic Agents는 유연성과 확장성을 높이기 위한 모듈식 아키텍처를 촉진합니다.

원자 에이전트의 작동 방식

성분

Atomic 에이전트에서 AI 에이전트는 몇 가지 주요 구성 요소로 이루어져 있습니다:

  • 시스템 경고상담원의 행동과 목적을 정의합니다.
  • 입력 모드: 입력 데이터의 예상 구조를 지정합니다.
  • 출력 모드: 출력 데이터의 구조를 정의합니다.
  • RAM(랜덤 액세스 메모리)대화 기록 또는 상태 정보를 저장합니다.
  • 상황에 맞는 프로그래밍: 런타임에 시스템 프롬프트에 동적 컨텍스트를 삽입합니다.
  • 인공물상담원이 사용할 수 있는 외부 기능 또는 애플리케이션 인터페이스입니다.

각 구성 요소는 모듈식 및 상호 교환이 가능하도록 설계되었으며, 우려 사항 분리 및 단일 책임 원칙을 따릅니다.

모듈성 및 구성 가능성

모듈성은 아토믹 에이전트의 핵심입니다. 개발자는 컴포넌트를 독립적이고 단일 작업에 집중할 수 있도록 설계함으로써 다음을 수행할 수 있습니다.

  • 도구 또는 에이전트 변경를 사용하여 나머지 시스템에 영향을 미치지 않습니다.
  • 개별 구성 요소 미세 조정를 사용하여 의도하지 않은 부작용을 일으키지 않고 시스템 프롬프트나 모드와 같은 기능을 사용할 수 있습니다.
  • 입력 및 출력 모드를 조정하여상담원 및 도구매끄럽게 연결됩니다.

이러한 모듈식 접근 방식은 개발을 더 쉽게 관리할 수 있을 뿐만 아니라 AI 애플리케이션의 유지보수 및 확장성을 향상시킵니다.

컨텍스트 제공: 유연성 향상

상황에 맞는 프로그래밍상담원이 시스템 프롬프트에 동적 데이터를 포함하고 최신 정보를 기반으로 응답을 개선할 수 있습니다.

예시:

from atomic_agents.lib.components.system_prompt_generator import SystemPromptContextProviderBase

class SearchResultsProvider(SystemPromptContextProviderBase):
def __init__(self, title: str, search_results: List[str]):
super().__init__(title=title)
self.search_results = search_results
def get_info(self) -> str:
return "n".join(self.search_results)
# 向代理注册上下文提供程序
agent.register_context_provider("search_results", search_results_provider)

상담원의 컨텍스트에 실시간 데이터를 주입하면 더욱 역동적이고 반응성이 뛰어난 AI 애플리케이션을 만들 수 있습니다.

패턴 및 에이전트 연결

원자 에이전트는 입력 및 출력 모드를 조정하여 에이전트와 툴을 연결하는 프로세스를 간소화합니다.

예시: 쿼리 생성 에이전트와 웹 검색 도구가 있다고 가정해 보겠습니다. 쿼리 에이전트의 출력 패턴을 검색 도구의 입력 패턴과 일치하도록 설정하면 두 도구를 직접 연결할 수 있습니다.

from web_search_agent.tools.searxng_search import SearxNGSearchTool

# Initialize the query agent
query_agent = BaseAgent(
BaseAgentConfig(
# ... other configurations ...
output_schema=SearxNGSearchTool.input_schema,  # Align output schema
)
)

이 설계는 재사용성과 유연성을 향상시켜 구성 요소를 쉽게 교체하거나 기능을 확장할 수 있습니다.

원자 에이전트가 다른 제품보다 나은 이유

불필요한 복잡성 제거

여러 계층의 추상화를 도입하는 프레임워크와 달리 Atomic Agents는 단순하고 직관적으로 유지합니다. 각 구성 요소에는 명확한 목적이 있으며 숨겨진 마법을 풀어야 할 필요가 없습니다.

  • 투명한 아키텍처애플리케이션을 통해 데이터가 어떻게 흐르는지 완전히 이해할 수 있습니다.
  • 더 쉬운 디버깅복잡성 감소로 문제 식별 및 해결이 더 쉬워집니다.
  • 학습 곡선 감소개발자는 복잡하고 추상적인 개념을 이해하지 않고도 빠르게 시작할 수 있습니다.

개발자를 위한, 개발자에 의한, 개발자를 위한 구축

Atomic Agents는 실제 개발 과제를 염두에 두고 설계되었습니다. 검증된 프로그래밍 패러다임을 사용하며 개발자 경험을 우선시합니다.

  • 탄탄한 프로그래밍 기반IPO 모델과 원자성을 따름으로써 이 프레임워크는 모범 사례를 장려합니다.
  • 유연성 및 제어개발자는 필요에 따라 자유롭게 구성 요소를 사용자 지정하고 확장할 수 있습니다.
  • 커뮤니티 중심오픈 소스 프로젝트로서 개발자 커뮤니티의 기여와 협업을 환영합니다.

독립형 및 재사용 가능한 구성 요소

아토믹 에이전트의 각 부분은 독립적으로 실행할 수 있으므로 재사용성과 모듈성을 촉진합니다.

  • 단독으로 테스트 가능구성 요소를 개별적으로 테스트하여 통합 전에 안정성을 보장할 수 있습니다.
  • 여러 프로젝트에서 재사용 가능원자 구성 요소를 다양한 애플리케이션에 사용할 수 있어 개발 시간을 절약할 수 있습니다.
  • 손쉬운 유지 관리격리 기능은 변경 사항의 영향을 줄이고 업데이트를 간소화합니다.

간단한 AI 에이전트 구축

사용자 질의에 응답하고 후속 질문을 하는 AI 에이전트를 구축할 예정입니다.

1단계: 사용자 지정 입력 및 출력 모드 정의하기

from pydantic import BaseModel, Field from typing import List from atomic_agents.agents.base_agent import BaseIOSchema

class CustomInputSchema(BaseIOSchema):
chat_message: str = Field(..., description="The user's input message.")

class CustomOutputSchema(BaseIOSchema):
chat_message: str = Field(..., description="The agent's response message.")
suggested_questions: List[str] = Field(..., description="Suggested follow-up questions.")

2단계: 시스템 알림 설정

from atomic_agents.lib.components.system_prompt_generator import SystemPromptGenerator

system_prompt_generator = SystemPromptGenerator(
background=[
"You are a knowledgeable assistant that provides helpful information and suggests follow-up questions."
],
steps=[
"Analyze the user's input to understand the context and intent.",
"Provide a relevant and informative response.",
"Generate 3 suggested follow-up questions."
],
output_instructions=[
"Ensure clarity and conciseness in your response.",
"Conclude with 3 relevant suggested questions."
]
)

3단계: 상담원 초기화하기

from atomic_agents.agents.base_agent import BaseAgent, BaseAgentConfig
import instructor
import openai

# Initialize the agent
agent = BaseAgent(
config=BaseAgentConfig(
client=instructor.from_openai(openai.OpenAI(api_key='YOUR_OPENAI_API_KEY')),
model="gpt-4",
system_prompt_generator=system_prompt_generator,
input_schema=CustomInputSchema,
output_schema=CustomOutputSchema
)
)

4단계: 프록시 사용

user_input = "Can you explain the benefits of using Atomic Agents?" input_data = CustomInputSchema(chat_message=user_input) response = agent.run(input_data)

print(f"Agent: {response.chat_message}")
print("Suggested questions:")
for question in response.suggested_questions:
print(f"- {question}")

예상 출력:

Agent: Atomic Agents simplifies AI development by providing modular, reusable components based on solid programming paradigms like the IPO model and atomicity.
Suggested questions:
- How does Atomic Agents compare to other AI frameworks?
- Can you provide an example of building an agent with Atomic Agents?
- What are the key features of Atomic Agents that enhance productivity?

통합 도구 및 컨텍스트 제공자

에이전트가 사용자 쿼리를 기반으로 웹 검색을 수행한다고 가정해 보겠습니다.

1단계: SearxNGSearchTool 다운로드 및 설정

활용 아토믹 어셈블러 CLI검색 도구를 다운로드할 수 있습니다:

atomic

메뉴에서 SearxNGSearchTool을 선택하고 지침에 따라 종속 요소를 설치합니다.

2단계: 검색 도구 통합

from web_search_agent.tools.searxng_search import SearxNGSearchTool, SearxNGSearchToolConfig

# 初始化搜索工具
search_tool = SearxNGSearchTool(config=SearxNGSearchToolConfig(base_url="http://localhost:8080"))

3단계: 도구를 사용하도록 상담원 업데이트하기

사용자 입력에 따라 검색 도구를 사용할 시기를 결정하도록 에이전트를 수정할 수 있습니다.

from typing import Union

class OrchestratorOutputSchema(BaseModel):
tool: str = Field(..., description="The tool to use: 'search' or 'chat'")
parameters: Union[SearxNGSearchTool.input_schema, CustomInputSchema] = Field(..., description="Parameters for the selected tool.")
# 修改代理逻辑以输出 OrchestratorOutputSchema
# ...
# 执行选定的工具
if response.tool == "search":
search_results = search_tool.run(response.parameters)
# 处理检索结果
else:
# 使用之前的聊天代理
pass

4단계: 검색 결과에 문맥 제공자 사용

class SearchResultsProvider(SystemPromptContextProviderBase):
    def __init__(self, search_results):
        super().__init__(title="Search Results")
        self.search_results = search_results
def get_info(self) -> str:
return "n".join(self.search_results)
# After obtaining search results
context_provider = SearchResultsProvider(search_results)
agent.register_context_provider("search_results", context_provider)

이 통합을 통해 상담원은 실시간 웹 검색 데이터를 기반으로 응답을 제공할 수 있습니다.

Atomic Assembler CLI: 간편한 관리 도구

원자 에이전트의 특징은 다음과 같습니다.아토믹 어셈블러 CLI도구 및 상담원 관리를 간소화하는 명령줄 도구입니다.

컴포넌트를 종속성으로 설치하는 대신 자체 소스 코드에서 소유권을 갖는 shadcn과 같은 일부 최신 Tailwind 라이브러리에서 영감을 얻었습니다.

즉, pip를 사용하여 종속성으로 도구를 설치하는 대신 프로젝트에 복사합니다. 이를 수행하는 방법에는 두 가지가 있습니다:

  1. 도구를 수동으로 다운로드하거나 Atomic Agents GitHub 리포지토리에서 소스 코드를 복사/붙여넣기하여 atomic-forge 폴더로 이동합니다.
  2. Atomic Assembler CLI를 사용하여 도구를 다운로드합니다.
再见 LangChain!Atomic Agents火了!

원자 에이전트

주요 기능

  • 다운로드 및 관리 도구종속성을 수동으로 복사하거나 해결할 필요 없이 프로젝트에 새 도구를 쉽게 추가할 수 있습니다.
  • 종속성 혼란 방지필요한 도구만 설치하여 프로젝트를 간결하게 유지하세요.
  • 간편한 수정 도구각 도구는 자체 테스트와 문서가 있는 독립적인 도구입니다.
  • 직접 액세스 도구원하는 경우 도구 폴더에 액세스하여 도구를 수동으로 관리할 수 있습니다.
再见 LangChain!Atomic Agents火了!再见 LangChain!Atomic Agents火了!

마지막에 쓰기

아토믹 에이전트는 단순성, 모듈성 및 개발자 제어를 우선시함으로써 AI 개발 분야에 절실히 필요한 변화를 가져옵니다. 입력-프로세스-출력 모델 및 원자성과 같은 신뢰할 수 있는 프로그래밍 패러다임을 채택함으로써 개발자가 LangChain, CrewAI, 그리고 다음을 사용할 때 직면하는 많은 문제를 해결합니다. 자동 생성 다음과 같은 기존 프레임워크에서 발생하는 좌절감은

원자 에이전트를 사용하면 다음을 수행할 수 있습니다.

  • 불필요한 복잡성 제거효과적인 AI 애플리케이션을 구축하는 데 중점을 두고 있습니다.
  • 종합적인 제어시스템의 각 구성 요소입니다.
  • 구성 요소의 손쉬운 교체 또는 수정전체 애플리케이션을 중단하지 않고도
  • 모듈성 및 재사용성 활용하기효율성과 유지보수성을 개선하세요.

지나치게 복잡한 프레임워크와 씨름하며 지나치게 많은 것을 약속하고 제대로 제공하지 못하는 것에 지쳤다면, 이제 Atomic 에이전트를 사용해 보세요.

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...