← На главную
Гайды· 05.08.2026· 5 мин чтения

LLM 0.32: как консольный инструмент Саймона Уиллисона превратился в агентный фреймворк

Simon Willison выпустил LLM 0.32 с reasoning traces, server-side тулами OpenAI и Anthropic, новым Python API и content-addressable логами. Как обновиться и что попробовать.

LLM 0.32: как консольный инструмент Саймона Уиллисона превратился в агентный фреймворк
Материал подготовлен с помощью ИИ и проверен редактором

Саймон Уиллисон выпустил LLM 0.32 — самое крупное обновление своей CLI-утилиты для работы с языковыми моделями с момента запуска проекта. Если вы гоняете промпты через llm в терминале или используете его как Python-библиотеку, в этом релизе появилось достаточно причин обновиться прямо сегодня: видимые reasoning traces, серверные тулы от OpenAI и Anthropic, новый способ работать с историей сообщений и полностью переработанное логирование.

Разберём, что конкретно изменилось и как этим пользоваться, без пересказа всего changelog.

Что видно сразу: reasoning traces в терминале

Когда вы запускаете llm против reasoning-модели (той, что умеет "думать" перед ответом), теперь весь процесс рассуждения выводится в stderr. Это удобно: вы видите, что модель "думает", но этот текст не попадает в stdout, который вы, возможно, пайпите дальше в другой инструмент.

Если reasoning trace мешает — например, при отладке пайплайна — отключить его можно флагом:

``bash llm "объясни теорему Байеса" -R ``

или через полную форму --hide-reasoning.

Заодно в LLM из коробки добавили поддержку семейства моделей GPT-5.6, и модель по умолчанию для llm "prompt" теперь — GPT-5.6 Luna, дешёвая, но достаточно способная модель.

Server-side тулы: код, поиск и MCP без своей инфраструктуры

Главная фича релиза — доступ к инструментам, которые выполняются на стороне провайдера, а не локально. OpenAI, например, даёт среду для выполнения кода прямо как server-side tool:

``bash llm --tool CodeInterpreter 'Show current python and SQLite versions' ``

Модель сама решает, когда вызвать интерпретатор, выполняет код на серверах OpenAI и возвращает результат — вам не нужно поднимать sandbox локально. У OpenAI также появился WebSearch-тул для запросов к актуальной информации в вебе.

Отдельно вышло обновление плагина llm-anthropic (версия 0.26) с поддержкой семейства моделей Claude 5 и четырёх server-side тулов: WebSearch, WebFetch, CodeExecution и AnthropicMCP. Последний особенно интересен — он позволяет Claude выполнять вызовы к произвольному MCP-серверу (Model Context Protocol) прямо внутри одного запроса к API:

``bash llm -m claude-sonnet-5 -T 'AnthropicMCP("https://datasette.simonwillison.net/-/mcp")' \ 'how many rows in the blog_blogmark table?' ``

Здесь Anthropic сам обращается к MCP-серверу автора (плагин datasette-mcp) и получает нужные данные без промежуточных шагов на вашей стороне.

Новая команда для любых OpenAI-совместимых эндпоинтов

В релизе появилась команда llm openai endpoint — одностроковый способ отправить промпт на любой сервер, который говорит на языке OpenAI API. Такие запросы не логируются, что делает команду удобной для разовых экспериментов.

Пример: прогнать промпт через локальную модель Gemma 4 12B в LM Studio, используя uvx (без установки LLM) и подключив тул-плагин llm-tools-quickjs:

``bash 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 ``

Это удобно проверять локальные модели или любые OpenAI-совместимые сервисы без постоянной установки LLM в проект.

Python API: сообщения списком и потоковые события

Раньше Python API LLM заставлял создавать conversation-объект и по одному отправлять в него сообщения — абстракция, которая скрывала реальную природу LLM: каждый запрос несёт полную историю переписки. В сложных сценариях это начало мешать.

В 0.32 появился параметр messages у model.prompt():

```python 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()) ```

Второе изменение важнее. Раньше prompt() возвращал просто поток строк — это работало, пока модели отвечали чистым текстом. Сегодня многие модели вперемешку отдают reasoning-текст, обычный текст, вызовы тулов и даже изображения. Для этого добавили stream_events():

``python 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}") ``

Такая структура событий легла в основу нового плагина llm-chat-completions-server, который реализует полноценный OpenAI chat completions API поверх LLM:

```bash llm install llm-chat-completions-server llm chat-completions-server --port 9000

Сервер поднимается на http://127.0.0.1:9000/v1

```

После этого можно слать запросы обратно через llm openai endpoint:

``bash llm openai endpoint http://127.0.0.1:9000/v1 'hello' -m gpt-5.4-mini ``

Логи по образцу Git

Паттерн, где каждый следующий запрос дописывает всю историю сообщений, создаёт проблему логирования: дублировать одинаковый JSON на каждом ходу — расточительно. Решение — content-addressable message store, устроенный по аналогии с Git: сообщения хранятся по хэшу содержимого, а не копируются заново.

Команды llm logs и llm logs --json умеют разворачивать эту структуру обратно в привычный, читаемый формат, так что для повседневного использования ничего не меняется — экономия происходит "под капотом".

Где ломается и на что обратить внимание

Существующие плагины продолжат работать без правок. Но если плагин добавляет собственные модели, его придётся обновить до версии, совместимой с 0.32, чтобы он участвовал в новой системе потоковых событий — иначе reasoning traces и структурированные ответы из таких моделей корректно не отобразятся.

Не все плагины успели обновиться одновременно с релизом ядра: llm-gemini, llm-openrouter и llm-mistral автор описывает как "почти готовые", релизы на подходе. Если вы завязаны на эти провайдеры, стоит проверить версии перед апгрейдом продакшен-пайплайнов.

Что попробовать дальше

Начните с малого: обновите LLM, запустите любимый промпт с -R и без него, чтобы увидеть разницу в reasoning traces. Затем попробуйте --tool CodeInterpreter на задаче, где раньше приходилось поднимать локальный sandbox. Если работаете с Python API — перепишите один существующий скрипт на stream_events(), это откроет доступ к структурированным ответам моделей, которые раньше приходилось парсить руками.

Автор прямо признаёт: LLM постепенно превращается в агентный фреймворк. Многие низкоуровневые изменения в этом релизе продиктованы нуждами его же проекта Datasette Agent — цепочки тулов теперь умеют приостанавливаться для одобрения человеком и возобновляться из сохранённой истории сообщений. Если вы собираете собственных агентов поверх LLM, это тот релиз, который стоит изучить внимательно.

Источники

Материал подготовил PLai AI — редакционный ИИ PLai.

Он же отбирает источники, пишет тексты и модерирует комментарии. Работает на PLGames AI — собственном шлюзе к языковым моделям.

Читайте также

Комментарии

Пока никто не написал. Будьте первым.

Комментарии проверяет AI-модератор PLai. По существу — публикуется сразу.

LLM 0.32: reasoning traces, тулы и агенты в CLI — PLai