ArtificialAnalysis/Stirrup

The lightweight framework for building agents

Stirrup – AI 에이전트 구축을 위한 경량 기반

정의 – Stirrup는 LLM 기반 에이전트를 생성하기 위한 최소한의 확장 가능한 스캐폴드(scaffold)를 제공하는 Python 라이브러리입니다. 언어 모델의 방해를 받지 않도록 설계되어, 모델이 작업 해결 방법을 결정하도록 하면서 모델이 호출할 수 있는 일련의 준비된 "도구"(코드 실행, 웹 검색, 파일 I/O 등)를 제공합니다.

핵심 아이디어

  • 모델 우선(Model-first) – 엄격한 계획-실행 루프를 강제하는 많은 프레임워크와 달리, Stirrup는 모델에 유연한 도구 상자를 제공하여 모델이 최적의 작업 시퀀스를 선택할 수 있게 합니다.
  • 모범 사례 기본값 – 기본 도구 세트는 주요 에이전트(Claude Code, Codex)에서 관찰된 기능을 반영하며, 컨텍스트 요약, 임시 디렉토리 및 도구 라이프사이클을 자동으로 처리합니다.
  • 플러그 앤 플레이(Plug-and-play) – 게시된 stirrup 패키지를 직접 사용하거나, 저장소를 클론하여 완전히 커스텀한 에이전트 스택을 구축하기 위한 템플릿으로 사용할 수 있습니다.

핵심 기능 (README 목록 기준)

기능 제공 내용
코드 실행 로컬, Docker 내부 또는 E2B 샌드박스에서 임의의 코드 실행.
온라인 검색 / 웹 브라우징 웹 검색(Brave API를 통해) 및 모델이 읽을 수 있도록 페이지 가져오기.
MCP 클라이언트 지원 MCP 서버에 연결하여 외부 도구/리소스 재사용.
문서 I/O 파일을 에이전트 컨텍스트로 가져오거나 출력 파일 쓰기.
기술(Skills) 시스템 – 도메인 특화된 지침 세트를 재사용 가능한 "기술"로 묶음.
유연한 도구 인터페이스 Pydantic 타입 파라미터를 가진 단순한 Tool 클래스를 상속하여 새로운 도구 정의.
Human-in-the-loop – 내장된 사용자 입력 도구를 통해 모델이 사람에게 설명을 요청 가능.
컨텍스트 관리 – 토큰 윈도우가 한계에 가까워지면 대화 기록을 자동으로 요약.
프로바이더 불가지론적 LLM 클라이언트 – OpenAI 호환 API, LiteLLM 또는 직접 작성한 커스텀 클라이언트를 위한 사전 구축된 클라이언트.
멀티모달 지원 – 이미지, 비디오, 오디오를 모델이 소비할 수 있는 형식으로 변환하여 처리.

빠른 시작 예제 (README에서 발췌)

import asyncio
from stirrup import Agent
from stirrup.clients.chat_completions_client import ChatCompletionsClient

async def main():
    client = ChatCompletionsClient(
        base_url="https://openrouter.ai/api/v1",
        model="anthropic/claude-opus-5",
        max_tokens=8_192,
        context_window_tokens=1_000_000,
    )
    agent = Agent(client=client, name="agent", max_turns=15)
    async with agent.session(output_dir="./output/example") as session:
        finish, history, meta = await session.run(
            "What is the population of Australia over the last 3 years? "
            "Search the web and create a simple matplotlib chart."
        )
        print(finish, history, meta)

if __name__ == "__main__":
    asyncio.run(main())

이 스니펫은 다음을 보여줍니다:

  1. ChatCompletionsClient(예시에서는 OpenRouter) 생성.
  2. 기본 도구(웹 검색 + 로컬 코드 실행)를 갖춘 Agent 인스턴스화.
  3. 도구 라이프사이클, 로깅 및 파일 출력을 자동으로 처리하는 세션 실행.

Stirrup 확장하기

  • 사전 구축된 도구 추가 – 예: stirrup.toolsCALCULATOR_TOOL을 기본 도구와 혼합하여 사용 가능.
  • 자신만의 도구 정의 – 파라미터를 위한 Pydantic 모델, ToolResult를 반환하는 함수를 작성하고 이를 Tool 객체로 래핑합니다.
  • 커스텀 프로바이더 – 도구에 설정/해제(예: 지속적인 DB 연결)가 필요한 경우 ToolProvider를 구현합니다.
  • LLM 백엔드 교체 – Anthropic, Google 등을 위해 LiteLLMClient를 사용하거나, ChatCompletionsClient를 모든 OpenAI 호환 엔드포인트(Deepseek, Ollama 등)로 지정합니다.

설치

# 코어 패키지
pip install stirrup          # 또는: uv add stirrup

# 모든 옵션 확장 (Docker, E2B sandbox, browser, LiteLLM, MCP, etc.)
pip install 'tirrup[all]'

개별 확장은 별도로 설치할 수 있습니다 (stirrup[docker], stirrup[browser], …).


언제 Stirrup를 사용하나요?

  • 새로운 에이전트 프로토타이핑 – 기본 도구와 단일 LLM 호출로 시작하여 반복적으로 개선합니다.
  • 도메인 특화 어시스턴트 구축 – 실행 루프를 다시 작성할 필요 없이 커스텀 기술(예: 금융 계산기, 의료 조회)을 추가합니다.
  • 도구 사용 패턴 연구 – 프레임워크가 도구 호출을 로깅하고 컨텍스트를 자동으로 요약하므로, 모델이 외부 리소스와 어떻게 상호작용하는지 연구하기 쉽습니다.
  • 멀티 프로바이더 배포 – 클라이언트 설정을 교체하여 Claude, Deepseek, Anthropic 등을 전환할 수 있습니다.

문서 및 커뮤니티

  • 전체 문서: https://stirrup.artificialanalysis.ai
  • 시작 가이드, 핵심 개념, 예제 및 도구 생성 튜토리얼은 모두 동일한 사이트에서 호스팅됩니다.
  • 개발 워크플로우는 uv, ruff, pytest를 사용하며, 저장소는 MIT 라이선스입니다.

요약

Stirrup는 유연한 도구 사용, 컨텍스트 관리 및 쉬운 LLM 프로바이더 교체가 필요한 LLM 기반 에이전트를 구축하기 위한 실제 프로덕션 환경에 적합한 Python 프레임워크입니다. 가볍게 유지하면서도 커스텀 에이전트 프로젝트를 위한 깔끔한 시작점 역할을 할 수 있는 합리적인 기본값을 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트