← Все статьи
2026-07-10 12:02 · 🤖 AI World

Пустые аргументы ломали tool calls — llm 0.31.1 это фиксит

Simon Willison выпустил патч 0.31.1 для CLI-инструмента llm: баг с пустыми аргументами в tool calls ронял JSON-парсинг у части провайдеров. Мелкий фикс, но он вскрывает неочевидную проблему всех agentic-пайплайнов.

Пустые аргументы ломали tool calls — llm 0.31.1 это фиксит

9 июля 2026 года Simon Willison выпустил версию 0.31.1 своего CLI-инструмента llm. Изменение одно: исправлен баг, при котором tool call с пустыми аргументами вызывал JSON-ошибку у ряда провайдеров, совместимых с OpenAI Chat Completion API. Баг всплыл при тестировании плагина llm-meta-ai — интеграции с Meta AI. Тихий фикс, который закрывает целый класс ошибок для всех, кто строит агентов поверх нескольких провайдеров.

Контекст

llm — open source CLI и Python-библиотека, которую Willison разрабатывает с 2023 года. Инструмент позволяет отправлять промпты к любой LLM из терминала или из кода, поддерживает плагины для Claude, GPT, Gemini, Ollama и десятков других провайдеров. Simon Willison — один из создателей Django и автор Datasette; его блог считается одним из наиболее достоверных технических дневников о реальном использовании LLM в продакшне.

Суть бага: когда модель возвращает вызов инструмента без аргументов — пустой объект или null вместо JSON — часть провайдеров это принимает молча, другая бросает исключение. Именно на Meta AI это и проявилось. Провайдер повёл себя иначе, чем OpenAI в том же edge case, и llm с этим не справился.

Плагинная архитектура llm — одновременно сила и уязвимость. Инструмент работает как универсальная обёртка над разными API, а это значит, что любые расхождения в поведении провайдеров неизбежно всплывают в виде подобных несовместимостей. Версия 0.31.1 — быстрый хотфикс, закрывающий конкретный gap до того, как он стал массовым.

Аналитика

Баг небольшой, но симптоматичный. Tool calling стал стандартом для agentic-систем: любой агент, который что-то делает — ищет информацию, пишет в базу, дёргает API — делает это через инструменты. При этом «OpenAI-совместимый» означает разные вещи для разных компаний. Meta AI, Mistral, self-hosted решения на базе vLLM или llama.cpp — каждый интерпретирует edge cases по-своему, и документация это редко фиксирует явно.

Для разработчиков agentic-пайплайнов это практически означает: если агент когда-либо вызывает инструмент без аргументов — например, инструмент «получить текущее время» или «проверить статус» — пайплайн может падать непредсказуемо в зависимости от провайдера. Особенно болезненно в мульти-провайдерных установках: в dev-среде стоит один провайдер, в проде — другой, и баг проявляется только у части пользователей.

По мере роста AI-экосистемы — новые провайдеры, local-first модели, edge-деплои — количество таких тихих несовместимостей будет расти. Библиотеки вроде llm берут на себя роль абстракционного слоя, и каждый такой патч — это фактически вклад в общую надёжность agentic-инфраструктуры. То, что Willison тестирует llm на Meta AI, Ollama, DeepSeek и других — а не только на OpenAI — и делает инструмент практически применимым в реальных проектах.

Кейсы применения в бизнесе

B2B-SaaS стартап с мульти-LLM архитектурой. Команда использует Claude в проде, тестирует с локальным Ollama, а enterprise-клиентам предлагает подключить собственный ключ. Баг с пустыми аргументами может проявляться только у части клиентов — в зависимости от провайдера. Действие: обновить до 0.31.1 и добавить в интеграционные тесты кейс с tool call без аргументов. Это 15 минут работы, которые страхуют от целого класса труднодиагностируемых ошибок.

Корпорация с legacy и внутренним AI-ассистентом. Корпоративные окружения нередко используют self-hosted модели через Azure OpenAI или собственные прокси. Такие прокси могут вести себя иначе, чем ожидает клиентская библиотека. Если внутренний агент автоматизирует операции с документами или запросами к базам, стоит целенаправленно проверить all tool calls на edge cases с пустыми аргументами — именно такие баги выходят наружу в самый неудачный момент.

SMB и локальный бизнес в КР/СНГ. Небольшие команды нередко комбинируют платный Claude или GPT для критических задач с бесплатными провайдерами для рутины. Именно здесь риск несовместимости максимален. Обновляться до последних версий обёрток — не опционально, а базовая гигиена. Потраченные 30 секунд на pip install -U llm могут сэкономить часы отладки.

Кейсы в личной жизни

Разработчик, который строит личного AI-агента. Если llm — основа для персонального агента: автоматизация задач, работа с файлами, запросы к API — обновитесь до 0.31.1. Особенно если есть инструменты без обязательных параметров. Добавьте тест: попросите модель вызвать такой инструмент и проверьте, что вернётся на разных провайдерах.

Контент-мейкер или фрилансер с AI-автоматизацией. Если вы добавили tool calling для интеграции с Notion, Airtable или Telegram в своём пайплайне — стоит убедиться, что всё устойчиво к пустым ответам от модели. Этот баг мог тихо ломать автоматизацию, не давая явных ошибок на поверхности.

Студент или исследователь, сравнивающий разные LLM. llm удобен именно тем, что позволяет быстро переключаться между провайдерами. Если вы исследуете, как разные модели используют инструменты — теперь результаты не будут искажены техническим багом на уровне библиотеки, а отразят реальное поведение моделей.

Как применить сегодня

  • Обновите llm: pip install -U llm — 30 секунд, получаете версию 0.31.1 с фиксом.
  • Проверьте все tool-определения: есть ли инструменты без обязательных параметров? Для них нужен тест с пустым вызовом.
  • Если используете несколько провайдеров — запустите один и тот же набор tool calls на каждом. Несовместимости обычно всплывают именно на edge cases.
  • Добавьте в CI тест: tool call с пустыми аргументами на каждом провайдере, который используете. 10 минут настройки — и целый класс провайдер-специфичных багов ловится автоматически.
  • Следите за блогом Willison: это практически единственный публичный дневник реального тестирования десятков LLM-провайдеров одновременно, включая edge cases, которые официальная документация не описывает.
← Все статьи