에이전트는 SpoonOS의 핵심 지능 계층입니다. 추론하고, 계획하고, 행동하는 자율 AI 시스템으로 복잡한 작업을 수행합니다. 에이전트는 LLM의 추론 능력을 도구, 메모리, 구조화된 실행 패턴과 결합하여 단순한 질문-답변을 넘어서는 기능을 제공합니다.
일반적인 LLM은 질문에 답할 수 있지만, 다음은 할 수 없습니다:
SpoonOS 에이전트는 두 가지 실행 모델로 이러한 문제를 해결합니다:

| 모델 | 최적 용도 | 작동 방식 |
|---|---|---|
| ReAct | 간단한 작업, 단일 단계 도구 호출, Q&A | Think → Act → Observe 루프를 완료될 때까지 반복 |
| Graph | 복잡한 워크플로우, 병렬 작업, 조건부 로직 | 노드, 엣지, 라우팅을 가진 상태 그래프 |
| 사용 사례 | 에이전트 타입 | 예시 |
|---|---|---|
| 도구가 있는 챗봇 | ReAct | 웹 검색이나 API 쿼리를 통해 질문에 답변 |
| 트레이딩 봇 | Graph | 시장 분석 → 행동 결정 → 거래 실행 → 모니터링 |
| 연구 어시스턴트 | Graph | 소스 수집 → 요약 → 종합 → 보고서 형식화 |
| 고객 지원 | ReAct | 지식 베이스 쿼리 및 에스컬레이션으로 티켓 처리 |
| 포트폴리오 추적기 | Graph | 가격 가져오기 → 지표 계산 → 알림 생성 |
| 기능 | SpoonOS | LangChain | AutoGPT |
|---|---|---|---|
| 실행 | ReAct + Graph 워크플로우 | ReAct 변형 | 자율 루프 |
| 도구 | BaseTool + MCP 프로토콜 | Tool 클래스 | 플러그인 |
| 메모리 | 내장 단기 메모리 + Mem0 | 외부 모듈 | 파일 기반 |
| 프로바이더 | 폴백이 있는 통합 다중 프로바이더 | 모델별 어댑터 | 단일 프로바이더 |
| Web3/Crypto | 네이티브 CEX, DEX, 온체인 툴킷 | 서드파티만 | 제한적 |
pip install spoon-ai
export OPENAI_API_KEY="your-key"
import asyncio
from spoon_ai.agents import SpoonReactAI
from spoon_ai.chat import ChatBot
agent = SpoonReactAI(llm=ChatBot(model_name="gpt-4.1", llm_provider="openai"))
async def main():
response = await agent.run("What is the capital of France?")
print(response)
asyncio.run(main())
ReAct(Reasoning + Acting) 에이전트는 생각 → 행동 → 관찰 루프를 따릅니다. 에이전트는 무엇을 할지 생각하고, 도구를 실행하거나 응답을 생성하며, 결과를 관찰하고, 작업이 완료될 때까지 반복합니다.
import os
from spoon_ai.agents import SpoonReactAI
from spoon_ai.chat import ChatBot
from spoon_ai.tools import ToolManager
from spoon_ai.tools.base import BaseTool
from spoon_ai.tools.mcp_tool import MCPTool
class PercentageTool(BaseTool):
name: str = "calculate_percentage"
description: str = "Calculate a percentage of a numeric value"
parameters: dict = {
"type": "object",
"properties": {
"value": {"type": "number", "description": "Base value"},
"percent": {"type": "number", "description": "Percentage to apply (e.g., 10 for 10%)"},
},
"required": ["value", "percent"],
}
async def execute(self, value: float, percent: float) -> str:
return str(value * percent / 100)
# MCP 웹 검색 도구 (TAVILY_API_KEY 필요)
tavily_search = MCPTool(
name="tavily-search",
description="Search the web for current information",
mcp_config={
"command": "npx",
"args": ["-y", "tavily-mcp"],
"env": {"TAVILY_API_KEY": os.getenv("TAVILY_API_KEY")},
},
)
# 실제 도구가 있는 에이전트
agent = SpoonReactAI(
llm=ChatBot(model_name="gpt-4.1", llm_provider="openai"),
tools=ToolManager([tavily_search, PercentageTool()]),
max_iterations=10 # 추론 루프 제한
)
response = await agent.run("Search Bitcoin price and calculate 10% of it")
최적 용도: 단일 단계 작업, API 호출, Q&A, 간단한 자동화
Graph 에이전트는 상태 그래프로 정의된 구조화된 워크플로우를 실행하며, 조건부 분기, 병렬 실행, 복잡한 다단계 파이프라인을 지원합니다.
from spoon_ai.agents import GraphAgent
from spoon_ai.graph import StateGraph
# 워크플로우 구축 (StateGraph 세부사항은 Graph System 문서 참조)
graph = StateGraph(MyState)
graph.add_node("analyze", analyze_fn)
graph.add_node("execute", execute_fn)
graph.add_edge("__start__", "analyze")
graph.add_conditional_edge("analyze", router_fn)
# 메모리 지속성이 있는 에이전트
agent = GraphAgent(
graph=graph.compile(),
memory_path="./agent_memory",
session_id="user_123"
)
result = await agent.run("Analyze market and execute trades")
최적 용도: 다단계 워크플로우, 조건부 로직, 병렬 작업, 인간 개입 루프

from spoon_ai.agents.base import BaseAgent
from spoon_ai.tools import ToolManager
class CustomAgent(BaseAgent):
def __init__(self, llm, tools=None):
super().__init__(llm)
self.tool_manager = ToolManager(tools or [])
async def run(self, message: str) -> str:
# 커스텀 에이전트 로직 작성
return await self.process_message(message)
import os
from spoon_ai.agents.spoon_react_mcp import SpoonReactMCP
from spoon_ai.tools import ToolManager
from spoon_ai.tools.mcp_tool import MCPTool
from spoon_ai.chat import ChatBot
from spoon_toolkits.crypto.crypto_powerdata.tools import CryptoPowerDataCEXTool
# 추가 의존성 설치: pip install spoon-toolkits
class SpoonMacroAnalysisAgent(SpoonReactMCP):
name: str = "SpoonMacroAnalysisAgent"
system_prompt: str = (
"You are a crypto market analyst. Use tavily-search for news and "
"crypto_power_data_cex for market data, then deliver a concise macro view."
)
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.available_tools = ToolManager([])
async def initialize(self):
tavily_key = os.getenv("TAVILY_API_KEY")
if not tavily_key:
raise ValueError("Set TAVILY_API_KEY before running the agent.")
tavily_tool = MCPTool(
name="tavily-search",
description="Web search via Tavily",
mcp_config={
"command": "npx",
"args": ["--yes", "tavily-mcp"],
"env": {"TAVILY_API_KEY": tavily_key},
},
)
crypto_tool = CryptoPowerDataCEXTool()
self.available_tools = ToolManager([tavily_tool, crypto_tool])
agent = SpoonMacroAnalysisAgent(llm=ChatBot(llm_provider="openai"))
SpoonOS 에이전트는 내장된 에러 복원력의 이점을 제공합니다:
# 프레임워크가 자동으로 에러 처리
# 필요: pip install spoon-toolkits
from spoon_ai.tools import ToolManager
from spoon_toolkits.crypto.crypto_powerdata.tools import CryptoPowerDataCEXTool
agent = SpoonReactAI(
llm=ChatBot(model_name="gpt-4.1", llm_provider="openai"),
tools=ToolManager([CryptoPowerDataCEXTool()]) # 재시도/실패 처리가 있는 실제 도구
)
# 자동 처리 항목:
# - 폴백이 있는 LLM 프로바이더 실패
# - 재시도가 있는 도구 실행 에러
# - 우아한 성능 저하가 있는 네트워크 문제
response = await agent.run("Get Bitcoin price and analyze trends")
GitHub: 소스 보기
데모 내용:
주요 기능:
학습에 최적:
GitHub: 소스 보기
데모 내용:
주요 기능:
학습에 최적:
GitHub: 소스 보기
데모 내용:
주요 기능:
학습에 최적: