2P by GN⁺ 8일전 | ★ favorite | 댓글 1개
  • LLM 0.26에서는 다양한 툴 실행 기능이 추가되어, OpenAI, Anthropic, Gemini, Ollama 등 여러 LLM 모델이 Python 함수나 플러그인으로 구현된 도구를 활용할 수 있음
  • 명령줄이나 Python API에서 툴을 직접 설치하거나 함수로 전달할 수 있어 확장성과 유연성이 크게 향상됨
  • 툴 플러그인으로 수학 계산, JavaScript 실행, SQL 질의, 외부 서비스 연동 등 다양한 기능이 모델에 손쉽게 추가 가능함
  • 모든 주요 LLM 벤더 및 로컬 모델에서 툴 호출 패턴이 보편화되고, LLM 0.26도 표준화된 방식으로 통합함
  • 향후 계획 및 발전 방향으로는 MCP 표준 지원, 플러그인 개발 생태계 확장, 툴 실행 로그 개선 등이 논의됨

LLM 0.26: 터미널에서 대형언어모델로 툴 실행 지원

2025년 5월 27일 기준으로 LLM 0.26 버전이 출시됨. 이 버전은 LLM 프로젝트 시작 이래 최대 규모의 변화로, 도구(tool) 지원이 추가됨. 이제 OpenAI, Anthropic, Gemini, Ollama 등 다양한 LLM 모델을 LLM의 CLI 도구 및 Python 라이브러리와 연동하여, Python 함수로 표현 가능한 어떠한 툴에도 접근할 수 있음.

주요 기능 및 변화

  • 플러그인에서 툴 설치 및 불러오기: --tool/-T 옵션으로 설치된 플러그인을 통해 툴을 등록하고 사용할 수 있음
  • 명령줄 Python 코드 전달: --functions 옵션으로 직접 Python 함수 코드를 넘겨주어 툴 활용 가능
  • Python API에서도 툴 지원: .chain 메서드에 tools=[함수명] 전달로 손쉽게 툴 연결
  • 동기 및 비동기 컨텍스트 지원: sync/async 상황 모두에서 툴 호출 가능

툴 사용 예시

사용 준비

  1. 최신 LLM 설치 또는 업그레이드 필요

  2. OpenAI 등 API 키 등록:

    llm keys set openai
    # API 키 입력
    
  3. 첫 번째 툴 실행 예시:

    llm --tool llm_version "What version?" --td
    
    • llm_version은 기본 제공되는 간단한 데모 툴임
    • --td툴 디버그 출력 옵션으로, 툴 호출 과정 및 응답 내용 확인 가능
  4. 모델 변경:

    llm models default gpt-4.1-mini
    
    • 옵션으로 다양한 모델 지원 가능 (-m o4-mini 등)
  5. 내장 시간 툴 호출:

    llm --tool llm_time "What time is it?" --td -m o4-mini
    
    • 시간 및 타임존 정보를 상세히 출력함

다양한 모델 및 플러그인 지원

  • Anthropic Claude 4, Google Gemini 2.5 Flash, Ollama Qwen3:4b 등 여러 LLM 모델 환경에서 동일한 툴 인터페이스로 동작함
  • 예시 명령어:
    llm install llm-anthropic -U
    llm keys set anthropic
    llm --tool llm_version "What version?" --td -m claude-4-sonnet
    

수학 연산 및 코드 실행

  • 수학에 약한 LLM 한계를 Python 툴로 극복 가능
  • llm-tools-simpleeval 플러그인을 통한 안전한 산술 연산 지원
    llm install llm-tools-simpleeval
    llm -T simpleeval
    llm -T simple_eval 'Calculate 1234 * 4346 / 32414 and square root it' --td
    
    • sqrt() 지원이 없을 경우 ** 0.5로 대체하는 식으로, 코드 실행 유연성 확보

도구 플러그인 소개

  • [llm-tools-simpleeval]: 산술 및 간단한 식 계산
  • [llm-tools-quickjs]: QuickJS 자바스크립트 샌드박스 해석기 툴
  • [llm-tools-sqlite]: 로컬 SQLite 데이터베이스 읽기 전용 SQL 질의
  • [llm-tools-datasette]: 원격 Datasette 인스턴스에 SQL 쿼리 실행 지원

예시:

llm install llm-tools-datasette
llm -T 'Datasette("https://datasette.io/content";)' --td "What has the most stars?"
  • 툴박스 형태 플러그인이라 URL 등 인자를 통해 설정 가능
  • 잘못된 컬럼 명시 시 툴 에러 감지 및 재시도 → 스키마 조회 → 올바른 쿼리 생성 방식으로, LLM의 어댑티브 능력 입증

직접 Python 코드로 툴 정의

  • 명령줄에서 --functions 옵션으로 임의의 Python 함수를 전달, 즉시 툴화
  • 예시:
    llm --functions '
    import httpx
    
    def search_blog(q):
        "Search Simon Willison blog"
        return httpx.get("https://simonwillison.net/search/";, params={"q": q}).content
    ' --td 'Three features of sqlite-utils' -s 'use Simon search'
    
    • 간단한 웹 검색 도구 구현 가능
    • System prompt를 통해 모델에 툴 활용 방향성 설정이 중요함

Python 라이브러리로의 통합 활용

  • LLM은 CLI와 Python API 모두 지원
  • .chain() 메서드로 툴 호출 요청 감지 → 실행 → 결과 반영까지 일련 과정을 자동화
  • 예시:
    import llm
    
    def count_char_in_text(char: str, text: str) -> int:
        "How many times does char appear in text?"
        return text.count(char)
    
    model = llm.get_model("gpt-4.1-mini")
    chain_response = model.chain(
        "Rs in strawberry?",
        tools=[count_char_in_text],
        after_call=print
    )
    for chunk in chain_response:
        print(chunk, end="", flush=True)
    
  • 비동기 함수(async def)도 지원되어 동시 실행 가능
  • 툴박스 플러그인도 tools=[Datasette(...)] 형태로 그대로 연결

도구 패러다임의 발전 과정

  • 툴 호출 패턴은 2022년 ReAcT 논문 등에서 소개된 후, 모든 주요 LLM 벤더와 로컬 모델이 도입
  • API마다 "Function calling" 또는 "툴 사용" 등 다양한 명칭으로 통일된 형태 채택
  • Ollama, llama.cpp 등도 이미 툴 지원 추가 및 기능 확장

개발 및 운영 뒷이야기

  • LLM이 오랫동안 툴 연동 지원이 필요함을 인지했으나, 다양한 모델 간 추상화 계층 설계가 어려움
  • 벤더 간 툴 패턴 표준화가 진행됨에 따라 LLM 0.26에서 통합 구현이 가능해짐
  • PyCon US 2025 워크숍에서 실무 활용 사례로 시연

“에이전트”와의 관계

  • "에이전트"란 용어는 아직 논란이나, 현재 LLM 생태계에서 "툴 인 더 루프" 형태로 표준화됨
  • LLM 0.26은 에이전트 개발에도 적합한 구현임
  • 향후 플러그인 제작을 위한 템플릿, 개선 이슈, 고급 플러그인 문서화 등이 활발히 진행 중

Model Context Protocol (MCP) 지원 예정

  • MCP는 LLM이 툴에 접근하는 새로운 표준 프로토콜로 급부상
  • 지난 8일 내에 OpenAI, Anthropic, Mistral 등 대형 벤더 API에도 빠르게 도입되고 있음
  • 향후 LLM을 MCP 클라이언트로 만들어 다양한 MCP 서버에 쉽게 연동 계획

커뮤니티 및 확장

  • LLM 프로젝트 플러그인, 툴 개발 논의 및 생태계 확장을 위해 Discord 커뮤니티 운영
  • 오픈소스 생태계에서 툴 기반 LLM 활용의 가능성은 사실상 무한함을 강조

이상의 방식으로 LLM 0.26은 모든 주요 LLM 모델과 연동되는, 범용적이며 확장 가능한 툴 연동 플랫폼으로 거듭나고 있음. 툴을 통해 언어모델의 활용 범위가 폭넓게 확장된다는 점에서, 개발자 및 IT 실무자에게 매우 의미 있는 도구임.

Hacker News 의견
  • 내가 이 도구를 위해 직접 만든 스트리밍 마크다운 렌더러가 있음
    자세한 내용은 Streamdown에서 확인 가능
    또 참고할 만한 것이 여기에 있고
    llmehelp라는 tmux 도구도 직접 만들었는데 Simon의 llm 위에 올려져 있음
    매일 사용하는 필수 도구가 된 상황

    • 이 라이브러리 정말 멋지게 보임
      플러그인들이 내용 표시 부분을 직접 제어하도록 할 수 있는 훅이 있었으면 좋겠다는 생각
      이에 대해 이슈를 여기에 올림
      몇 가지 디자인 옵션을 포함했지만 아직 100% 확신되는 느낌은 아님
      피드백을 꼭 받고 싶음

    • 또 하나 빼먹었던 게 있음
      이번엔 llm 기반으로 만든 ZSH 플러그인임
      zle을 사용해 영어를 한 번에 셸 명령어로 번역하는 데 사용
      Zummoner가 그 주인공
      내 생활을 완전히 바꿔준 도구임
      예를 들어 오늘 직접 만든 명령어

        $ git find out if abcdefg is a descendent of hijklmnop 
      

      실제로 이 댓글 중 하나에서 사용한 명령문

        $ for i in $(seq 1 6); do 
         printf "%${i}sh${i}\n\n-----\n" | tr " " "#"; 
        done | pv -bqL 30 
      

      원래는

        $ for i in $(seq 1 6); do 
         printf "(# $i times)\n\n-----\n"
        done | pv (30 bps and quietly)
      

      내 신뢰하는 ctrl-x x 조합으로 버퍼를 openrouter에 보내고 1초 안에 올바른 문법으로 돌아옴

    • 멋짐
      나도 스트리밍 LLM 출력을 빠르게 표시하려고 여러 언어로 스트리밍 마크다운 렌더러를 만들어본 경험 있음
      나만 그런 줄 알았는데 반가운 감정

    • 흥미로움, 꼭 시도해볼 생각
      나는 llm을 bat과 함께 문법 강조로 사용 중

    • 이런 기능 정말 원했었음
      고마움

  • 이런 식의 도구는 footgun(스스로 위험을 초래할 수 있음) 위험성이 상당히 높아짐
    문서에서 prompt injection(프롬프트 주입)에 대한 주의가 있긴 하지만 실제로는 셀프 실수로 인한 피해가 더 흔할 것 같음
    예시로, 툴에 브로커리지 계정 접근 권한을 주면 트레이딩 자동화가 가능함
    프롬프트 주입이 없어도, 봇이 바보 같은 거래를 해도 막을 방법이 없음
    참고 문서

    • 이런 식의 사고 사고 위험성 정말 큼
      LLM에 툴들을 연결하면 인증된 호출로 내 대신 뭔가 행동할 수 있는 경우 너무 많은 예기치 못한 상황이 벌어질 수 있음
      최근 GitHub MCP 사례 등에서 이런 현상을 볼 수 있음 관련 기사
      문서에도 위험 경고를 크게 표시했고, 실제로 손해를 줄 수 있는 초기 툴 플러그인은 아예 공개하지 않았음
      그래서 내 QuickJS 샌드박스나 SQLite 플러그인은 오로지 읽기 전용임
      그렇지만 이 분야 자체는 매우 재미있고 신기한 스펙트럼임

    • 만약 llm을 브로커리지 계정에 연결하는 사람 있다면, 그건 봇이 아니라 사람이 멍청한 것에 가까운 상황

    • 어떤 도구든 오용될 위험성 존재

  • llm 사용 중인 분들께 Gtk-llm-chat을 추천
    엄청나게 많은 노력을 들여 만든 바탕
    llm 명령줄 툴과 데스크톱 통합, 트레이 아이콘, 깔끔한 챗창 제공
    3대 주요 데스크톱 OS용 패키지로 최근 3.0.0 버전 출시

    • 흥미로움
      평범한 채팅 외에 다른 용도로 어떻게 쓰는지 궁금한 상황
  • 이건 정말 최고의 타이밍임
    최근 터미널(Warp)에서 이런 저런 실험 중인데 agent 도입 아이디어는 맘에 들지만 Cursor 같은 "우리 프롬프트/LLM 콜에 믿고 맡겨주세요(그리고 비용 부과)" 방식은 뭔가 꺼려짐
    그래서 그냥 내가 부족한 셸 실력을 메우기 위한 간단한 CLI 기반 터미널 에이전트가 필요했음
    이런 툴은 footgun 위험이 크다는 건 너무 잘 인지함
    하지만 터미널 툴 + llm 조합이 정말 가볍게 이상적인 조합이라 기대 중
    다른 일부 "에이전트" 제품들처럼, llm이 rm -rf ./* 같은 툴 호출 시 "Y를 눌러 승인" 식으로 매번 허락을 받아내는 방식 지원 여부가 궁금함
    이 방식이 되면 LLM이 내 터미널을 마음대로 조작하는 걸 막을 수 있고, 어느 정도 보호장치 마련이 가능할 것 같음

    • Codex CLI 기본 모드가 아마 그런 방식일 것
      --full-auto 플래그 없이 실행하면 매번 승인 묻는 형태
  • 나는 LLM CLI 탭 완성용 zsh/omz 플러그인을 열심히 관리하고 있는데, 새로운 기능 릴리스 속도가 너무 빨라 따라잡기가 쉽지 않은 상황
    다행히 아래 명령이 90%까지는 자동으로 구현해줌

    llm -f README.md -f llm.plugin.zsh -f completions/_llm -f https://simonwillison.net/2025/May/27/llm-tools/ "implement tab completions for the new tool plugins feature"
    

    내 플러그인 저장소는 여기
    다양한 옵션들을 최대한 다뤄보고 싶어서 구조가 다소 복잡함
    피드백 받을 수 있으면 정말 고마운 상황

    • 진짜 SF가 아니라 현실이 이런 수준인 게 신기한 상황
      미래 세대는 우리가 어떻게 뭐 하나 만들었는지 신기해할 듯
      우리가 어셈블리 프로그래머들 어떻게 일했는지 상상 못하는 것과 똑같은 느낌
  • GPT-4.1은 구조화된 출력부터 툴 호출까지 정말 강력한 모델임
    지난 2년간 내 일상적인 반복 작업은 거의 LLM이 다 처리
    저렴하면서도 성능 좋은 모델 조합이라 항상 이걸 기본 사용 모델로 선택

    • 솔직히 GPT-4.1 mini에 정말 놀람
      모든 걸 API에서 만져본 결과, 터무니없이 저렴하면서도 진짜 대부분을 잘 처리
      코딩할 때는 o4-mini로, 그 외에는 4.1-mini가 보통 충분
      오늘 재미로 쓴 케이스
      llm -f https://raw.githubusercontent.com/BenjaminAster/CSS-Minecraft/… \
        -s 'explain all the tricks used by this CSS'
      
      주석 하나 없는 훌륭한 CSS Minecraft 데모 코드를 GPT-4.1 mini에게 해설하도록 파이프
      관련 데모 소스
      GPT-4.1 mini가 답변한 내용이 정말 훌륭함
      "이 CSS는 최첨단 CSS 기술로 3D 인터랙티브 복셀 스타일 UI를 최소한의 자바스크립트로 구현한다" 등 어려운 트릭까지 정확히 지적
      설명 전체
      입력 토큰 3,813, 출력 토큰 1,291
      계산 결과 약 0.3591센트로 1센트의 1/3 비용에 불과한 수준
  • Simon의 도구 정말 대단함
    매일 사용 중
    파이프 조합과 모델 손쉬운 전환(ollama 등의 로컬, 원격 모두 지원) 덕분에 작업이 매우 쉬워짐

  • 정말 멋진 내용임
    내가 아는 바로는 llama.cpp도 툴을 지원하지만, llm에서 연동하는 방법을 아직 못 찾았음
    extra-openai-models.yaml에 뭔가 추가해서 해결 가능한지 궁금한 상황

    • 이건 아마 llm-ggufllm-llama-server에 변경이 필요할 듯
      ... 실험해보니 두 번째 방법이 통함
      brew install llama.cpp
      llama-server --jinja -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL
      
      그리고 별도 창에서
      llm install llm-llama-server
      llm -m llama-server-tools -T llm_time 'what time is it?' --td
      
      정리 내용은 여기에 정리
  • 이번 릴리즈에 정말 감사한 분위기
    이 라이브러리가 기존 클라이언트들의 한계와 제약을 벗어난 LLM의 가능성을 완전히 여는 핵심 구성요소라 생각
    0.26 alpha 버전 출시 이후 MCP 서버와 상호작용하는 플러그인을 만들려 했는데 좀 어렵게 느껴지는 상황
    일단 연결해 툴을 동적으로 가져와 사용할 수 있게는 만들었지만, 아직 파라미터 전달까지는 해결하지 못한 상태

    • 나 역시 오늘 아침 MCP 실험을 약간 해 봄
      간단한 플러그인 데모를 최대한 시도해봤는데 쉽지는 않은 경험
      공식 mcp Python 라이브러리는 asyncio 실행, 서버 연결, 사용가능 툴 인트로스펙트 등을 요구하는 형태임
  • 기다려온 오랜 숙원이던 기능
    mcp, openapi 기반 구현일 거라 예상했으나 지금 방식이 훨씬 단순하고 유연할지도 모름
    플러그인으로 구현하는 것도 어렵지 않을 듯한 생각