
LLM의 새로운 릴리스: 추론 흔적(reasoning traces), OpenAI Responses, 서버 측 도구 및 더 스마트한 로깅 지원
요약
LLM CLI 0.32 버전이 출시되어 추론 흔적(reasoning traces) 확인, 서버 측 도구 활용, SQLite 로그 개선 등의 기능을 제공합니다. GPT-5.6 Luna 모델 지원과 함께 Anthropic, Gemini 등 주요 플러그인도 업데이트되었습니다.
핵심 포인트
- 추론 모델의 사고 과정을 stderr로 분리하여 확인 가능
- OpenAI의 CodeInterpreter 및 WebSearch 서버 측 도구 지원
- GPT-5.6 Luna 모델을 기본 모델로 즉시 지원
- Anthropic MCP 및 다양한 플러그인 기능 강화
LLM의 새로운 릴리스: 추론 흔적(reasoning traces), OpenAI Responses, 서버 측 도구 및 더 스마트한 로깅 지원 추가
2026년 8월 4일
오늘 아침, 프로젝트의 초기 출시 이후 LLM의 가장 중요한 새 버전인 LLM 0.32를 출시했습니다. 새 버전에는 가시적인 추론 흔적(reasoning traces), 서버 측 제공자 도구(server-side provider tools), 재설계된 콘텐츠 주소 지정 가능(content-addressable) SQLite 로그, 새로운 모델, 그리고 OpenAI Responses API에 의해 활성화된 새로운 기능들이 포함되어 있습니다. 또한 각각 상당한 업데이트가 포함된 llm-anthropic, llm-gemini, 그리고 llm-openrouter 플러그인의 새 버전도 출시했습니다.
LLM CLI 사용자들을 위한 주요 기능
추론 모델(reasoning models)을 대상으로 LLM을 실행하면 이제 추론 흔적(reasoning traces)을 표준 에러(standard error)로 표시하므로, 해당 정보가 다른 도구로 파이프(pipe)할 수 있는 표준 출력(standard output)에 포함되지 않고도 모델이 무엇을 "생각"하고 있는지 확인할 수 있습니다. 이를 끄려면 -R/--hide-reasoning을 추가하세요.

LLM은 GPT-5.6 모델 제품군을 즉시 지원하며, 이제 llm "prompt"와 함께 사용되는 새로운 기본 모델은 저렴하면서도 유능한 GPT-5.6 Luna입니다.
이제 LLM 호출 시 다양한 제공자의 **서버 측 도구(server-side tools)**를 사용할 수 있습니다. OpenAI는 서버 측 도구로서 코드 실행 환경을 제공합니다. LLM은 이제 다음과 같이 해당 기능을 활용하는 프롬프트를 실행할 수 있습니다:
llm --tool CodeInterpreter 'Show current python and SQLite versions'
OpenAI는 또한 WebSearch 도구도 제공합니다.
llm-anthropic 플러그인은 WebSearch, WebFetch, CodeExecution, 그리고 AnthropicMCP를 추가하며, 형태는 다음과 같습니다:
llm -m claude-sonnet-5 -T 'AnthropicMCP("https://datasette.simonwillison.net/-/mcp")' \
'how many rows in the blog_blogmark table?'
이는 Anthropic이 그들의 API와 단일 요청/응답 상호작용의 일부로서 나의 새로운 datasette-mcp 플러그스에 대해 MCP 호출을 실행하도록 합니다.
새로운 llm openai endpoint 명령은 어떠한 OpenAI 호환 엔드포인트에 대해서도 한 줄의 명령어로 프롬프트를 실행할 수 있는 도구를 제공합니다. 이 명령은 로그가 남지 않으므로, LLM API 세계의 공용어(lingua franca)를 사용하는 대상에 대해 일회성 프롬프트를 실행할 때 유용한 도구가 됩니다.
다음은 제가 uvx를 통해 로컬 호스트의 LM Studio API에서 실행 중인 Gemma 4 12B를 대상으로 프롬프트를 실행하고, 여기에 llm-tools-quickjs 도구 플러그인을 섞어서 사용하는 방법입니다.
(LLM 설치가 필요하지 않음)
uvx --with llm-tools-quickjs \
llm openai endpoint http://localhost:1234/v1 -m google/gemma-4-12b \
-T QuickJS 'Use QuickJS to multiply 3434 * 2434' --td

Python API의 새로운 기능
기존의 LLM Python API는 대화(conversation)를 생성한 다음 메시지를 하나씩 보내야 했습니다. 이는 각 요청이 이전 메시지들의 전체 이력을 포함하는 LLM의 실제 특성을 추상화한 것이었습니다. 이러한 추상화는 일부 더 고급 사례에서 방해가 되기 시작했고, 이에 따라 이번 새 릴리스에서는 다음과 같이 사용할 수 있는 model.prompt(messages=[]) 파라미터를 도입했습니다.
import llm
from llm import user, assistant, system
model = llm.get_model("gpt-5.6-luna")
response = model.prompt(messages=[
system("You are a helpful pirate."),
user("What is the capital of France?"),
assistant("Paris, matey."),
user("And Germany?"),
])
print(response.text())
이전의 LLM은 각 프롬프트에 대해 문자열의 반복 가능한 시퀀스(iterable sequence)를 반환했습니다. 이는 모델이 문자열 응답을 반환할 때는 잘 작동했지만, 모델이 진화함에 따라 나타날 기묘한 형태를 예측하는 데는 실패했습니다. 오늘날 많은 모델은 추론 텍스트(reasoning text), 출력 문자열, 도구 호출(tool calls), 그리고 이미지 첨부 파일까지 혼합된 형태를 반환합니다. LLM 0.32에서는 대신 다음과 같이 수행할 수 있습니다.
for event in model.prompt("Explain cats").stream_events():
if event.type == "reasoning":
print(f"[thinking] {event.chunk}", end="", flush=True)
elif event.type == "text":
print(event.chunk, end="", flush=True)
else:
print(f"Other event: {event}")
이러한 기능들을 결합함으로써, 우리는 마침내 준표준(semi-standard) OpenAI chat completions API의 견고한 구현을 제공할 수 있게 되었으며, 이를 llm-chat-completions-server 플러그인으로 출시했습니다:
llm install llm-chat-completions-server
llm chat-completions-server --port 9000
# Server is now running on http://127.0.0.1:9000/v1
이제 새로운 llm openai endpoint 명령어를 사용하여 해당 서버를 통해 LLM에 프롬프트를 실행할 수 있습니다!
llm openai endpoint http://127.0.0.1:9000/v1 'hello' -m gpt-5.4-mini
이러한 종류의 API에서 더 큰 과제는 로깅 (logging)과 관련이 있습니다. 매 요청마다 메시지 시퀀스가 추가되는 패턴을 지원하려면, 이상적으로는 매 턴마다 발생하는 중복된 JSON을 모두 로깅하는 것을 피할 수 있어야 합니다.
그 해결책은 Git을 모델로 한 새로운 콘텐츠 주소 지정 가능 메시지 저장소 (content-addressable message store)입니다. 문서에서 해당 새로운 스키마를 확인할 수 있지만, llm logs 및 llm logs --json 명령어는 모두 해당 형식을 소비하기 쉬운 형태로 다시 변환하도록 업그레이드되었습니다.
그리고 나머지 사항들
이번 릴리스에는 훨씬 더 많은 내용이 포함되어 있습니다. 0.32 릴리스 노트는 매우 포괄적이며, 0.32rc2, 0.32rc, 0.32a3, 0.32a2, 그리고 0.32a0에 대한 노트가 부족한 부분을 채워줄 것입니다.
기존 LLM 플러그인들은 모두 계속 작동하겠지만, 추가 모델을 제공하는 플러그인들은 새로운 스트리밍 이벤트 (streaming events) 시스템에 완전히 참여하기 위해 0.32 버전으로 업그레이드해야 합니다. 문서에는 구조화된 메시지 (Structured messages) 및 스트리밍 이벤트 (streaming events)를 사용하여 플러그인을 구현하는 가이드가 있습니다.
제가 직접 만든 일부 플러그인들도 업데이트했습니다:
llm-anthropic0.26은 Claude 5 모델 제품군에 대한 지원과 더불어, 서버 측 도구인WebSearch,WebFetch,CodeExecution, 그리고AnthropicMCP를 추가했습니다.llm-gemini,llm-openrouter,llm-mistral은 거의 완료되었으며, 곧 출시될 예정입니다.
이제 LLM은 에이전트 프레임워크 (agent framework)라고 할 수 있겠네요
이번 릴리스의 하위 수준 도구(lower-level tools) 변경 사항 중 꽤 많은 부분이 Datasette Agent의 요구 사항에 의해 추진되었습니다. 제가 LLM 작업을 시작했을 때, "에이전트(agent)"라는 용어는 정의가 너무 모호해서 사용하기를 거부했습니다. 2025년 9월이 되어서야 "LLM 에이전트는 목표를 달성하기 위해 루프(loop) 내에서 도구를 실행한다"라는 개념이 충분히 확립되어, 더 이상 이 용어를 완전히 피하지 않아도 되겠다고 생각하게 되었습니다.
이제 도구 체인(Tool chains)은 인간의 승인을 위해 일시 중지할 수 있으며, 저장된 메시지 기록(message history)으로부터 재개할 수 있습니다. 이 두 가지 기능은 모두 Datasette Agent에 필요한 기능입니다.
오늘날의 LLM을 살펴보면, 저에게는 매우 에이전트다운 형태(agent-shaped)로 보이기 시작했습니다. 서로 다른 소스의 다양한 도구들을 서로 다른 모델과 함께 단 한 줄의 명령(one-liner)으로 조합하여 사용할 수 있는 CLI 유틸리티를 갖는다는 것은 멋진 일이며, 여기에는 Datasette Agent나 llm-coding-agent와 같은 시스템을 구축할 수 있을 만큼 강력한 Python 라이브러리도 포함됩니다.
어쩌면 LLM의 다음 버전은 "에이전트"라는 개념을 핵심 라이브러리(core library)에 내장하게 될지도 모릅니다. 그것이 어떤 모습일지는 여전히 고민 중입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 RSS: Simon Willison's Weblog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기