smolagents 소개

smolagents 소개

smolagents는 Hugging Face가 만든 오픈소스 파이썬 라이브러리로, 몇 줄의 코드만으로 에이전트를 만들고 실행할 수 있게 해주는 도구예요. 이름처럼 '작은(small) 에이전트'에 초점을 맞춰, 에이전트를 구동하는 로직이 대략 수천 줄 안에 들어가도록 추상화를 최소한으로 유지했어요.

smolagents의 핵심 특징

  • 간단함(Simplicity) — 에이전트 로직이 수천 줄 안에 담겨요. 원시 코드 위에 얇은 추상화만 얹어두어 구조를 파악하기 쉬워요.
  • 코드 에이전트(CodeAgent) 일급 지원CodeAgent는 도구를 호출하거나 계산을 수행할 때 JSON 대신 파이썬 코드로 액션을 직접 작성해요. 함수 중첩, 반복문, 조건문 같은 자연스러운 합성이 가능하죠. 보안을 위해 Modal, Blaxel, E2B, Docker 등의 샌드박스 환경에서 실행할 수도 있어요.
  • ToolCallingAgent 지원 — JSON/텍스트 기반의 일반적인 툴 콜 패러다임을 선호하는 시나리오에서 ToolCallingAgent를 쓸 수 있어요.
  • 허브 통합 — 에이전트와 도구를 Gradio Space로 허브에 공유하고 불러올 수 있어요.
  • 모델에 구애받지 않음(Model-agnostic) — Inference Providers, OpenAI, Anthropic 같은 API, LiteLLM 통합, 로컬 Transformers나 Ollama까지 원하는 LLM을 손쉽게 연결할 수 있어요.
  • 모달리티에 구애받지 않음 — 텍스트를 넘어 비전, 비디오, 오디오 입력도 처리할 수 있어요.
  • 도구에 구애받지 않음 — MCP 서버, LangChain, 허브 Space까지 다양한 소스에서 도구를 가져올 수 있어요.
  • CLI 도구smolagent, webagent 같은 커맨드라인 유틸리티를 제공해 보일러플레이트 코드 없이 에이전트를 바로 실행할 수 있어요.

퀵스타트

에이전트를 만들어 직접 돌려보면서 흐름을 익혀볼게요.

설치

기본 도구(웹 검색 등)를 포함하려면 toolkit 엑스트라로 설치해요.

pip install 'smolagents[toolkit]'  # 웹 검색 같은 기본 도구 포함

첫 에이전트 만들기

아래가 에이전트를 만들고 실행하는 최소한의 예시예요.

from smolagents import CodeAgent, InferenceClientModel

# 모델 초기화 (Hugging Face Inference API 사용, 기본 모델 사용)
model = InferenceClientModel()

# 도구 없이 에이전트 생성
agent = CodeAgent(tools=[], model=model)

# 작업을 주고 실행
result = agent.run("Calculate the sum of numbers from 1 to 10")
print(result)

이걸로 끝이에요. 에이전트는 파이썬 코드를 이용해 작업을 풀고 결과를 돌려줘요.

도구 추가하기

도구를 하나 더하면 에이전트가 할 수 있는 일이 늘어나요.

from smolagents import CodeAgent, InferenceClientModel, DuckDuckGoSearchTool

model = InferenceClientModel()
agent = CodeAgent(
    tools=[DuckDuckGoSearchTool()],
    model=model,
)

# 이제 웹 검색도 가능해요
result = agent.run("What is the current weather in Paris?")
print(result)

다른 모델 사용하기

에이전트에 다양한 모델을 연결할 수 있어요.

# Hugging Face 특정 모델 사용
model = InferenceClientModel(model_id="meta-llama/Llama-2-70b-chat-hf")

# OpenAI/Anthropic 사용 ('smolagents[litellm]' 필요)
from smolagents import LiteLLMModel
model = LiteLLMModel(model_id="gpt-4")

# 로컬 모델 사용 ('smolagents[transformers]' 필요)
from smolagents import TransformersModel
model = TransformersModel(model_id="meta-llama/Llama-2-7b-chat-hf")

다음 단계

출처 인용

더 알아보기