Иллюстрация Predictor: от сбора данных к готовому продукту

Predictor LLM

версия 0.14.1

Доступ к корпоративной языковой модели Predictor: OpenAI-совместимый API по ключам проектов, чат в личном кабинете и учёт потребления по пользователям и проектам.

Возможности

  • OpenAI-совместимый API: чат, стриминг, tools, эмбеддинги.
  • Ключи на проекты — выпуск, просмотр и отзыв в личном кабинете.
  • Чат с моделью: режим рассуждений Think, поиск в интернете Search, память диалога.
  • Учёт токенов и запросов по пользователям и проектам, журнал обращений.
  • Регистрация по почте с модерацией администратором.

Сведения

Версия
0.14.1 от 2026-09-25
Модель
Qwen/Qwen3.8-27B
Эмбеддер
Qwen/Qwen3-Embedding-0.6B
Поиск
SearXNG
API
http://localhost:10010/v1

История изменений

0.14.1 2026-09-25 текущая

Добавлено

  • deploy/deploy.sh — выкатка всего стека (vpn, postgres, searxng, api) на удалённую машину по SSH одной командой.

Исправлено

  • Замечания статического анализа SonarQube: регулярные выражения без экспоненциального перебора (проверка e-mail, шапка SKILL.md, Markdown в чате, разбор текстовых вызовов инструментов), остановка генерации корректно завершает задачу (CancelledError пробрасывается после сохранения ответа).
  • Доступность: подписи у полей загрузки файлов, уведомления и статус LLM — элементы <output>, столбцы графика потребления — кнопки с текстовой подписью.

Изменено

  • Крупные функции разбиты на части без изменения поведения: отправка сообщения в чате, генерация docx/xlsx/pptx, стрим OpenAI/Anthropic, отчёт по потреблению, анонимизатор, чтение документов, отрисовка ответа в чате.
  • Добавлен sonar-project.properties; сторонние навыки app/skill_packs/ в анализ не входят.
  • Статистика потребления в админке — четыре столбчатые диаграммы вместо таблицы: проекты и пользователи по токенам и по запросам (первые 8, полный список — в CSV). У каждого проекта и пользователя свой цвет, одинаковый на обеих диаграммах; палитра подобрана для светлой и тёмной темы.

Удалено

  • Вкладка «Журнал» (/admin/requests) в админке. Последние запросы проекта по-прежнему видны в ЛК на его странице.

0.14.0 2026-09-25

Добавлено

  • Anthropic-совместимый API: POST /v1/messages (обычный ответ и стрим) и POST /v1/messages/count_tokens — к шлюзу подключается Claude Code (ANTHROPIC_BASE_URL). Формат переводит vLLM, шлюз добавляет ключи, очередь, повторы и учёт (эндпоинт messages в отчётах).
  • Параметр thinking Anthropic (enabled / adaptive / disabled) и output_config.effort переводятся в think и reasoning_effort Qwen3.8; без них — DEFAULT_THINKING и рекомендованный сэмплинг.
  • Запросы на любые модели (например, «быструю» claude-haiku-…, на которую Claude Code шлёт фоновые задачи) уходят в LLM_MODEL.
  • Ключ принимается и в заголовке x-api-key, как у Anthropic API.

Изменено

  • Ошибки на /v1/messages* — в формате Anthropic ({"type": "error", "error": {...}}); остальные маршруты — по-прежнему в формате OpenAI.

0.13.0 2026-09-25

Добавлено

  • Навыки в формате [Agent Skills](https://agentskills.io/specification): SKILL.md с YAML-шапкой и файлы навыка (справочники, примеры, скрипты). Модель видит список файлов подключённого навыка и читает нужные сама (read_skill_file); скрипты не выполняются.
  • Импорт навыка в админке: .zip с папкой навыка или отдельный SKILL.md; импортируется выключенным, видны источник, лицензия, совместимость и файлы.
  • Навыки из [anthropics/skills](https://github.com/anthropics/skills) (Apache 2.0) — кнопкой в реестре: internal-comms (3P-апдейты, рассылка, FAQ), discernment-nudge, frontend-design, mcp-builder, webapp-testing. Файлы лежат в app/skill_packs/anthropic/ с лицензией и NOTICE.
  • 10 тем оформления из theme-factory для создаваемых файлов (theme у create_file): модель берёт их, только если пользователь просит другой стиль; по умолчанию — фирменный Predictor.

Изменено

  • Встроенные навыки, которые администратор не правил, при старте получают новые тексты инструкций из кода.
  • Модель создаёт файл, только когда его явно просят; на обычный вопрос отвечает в чате.
  • Код навыка — до 64 символов, описание — до 1024 (как в спецификации Agent Skills).

Исправлено

  • Нестабильный тест учёта по проектам чата: проверяется прирост записей по проектам, а не «последняя запись» (учёт пишется фоновой задачей).

0.12.0 2026-09-24

Добавлено

  • Автовыбор навыков: модель видит только названия и описания навыков-инструкций и сама подключает подходящий (use_skill); полные инструкции загружаются, лишь когда нужны. Под ответом видно, какой навык подключён.
  • Создание файлов в чате: модель делает документы Word, таблицы Excel (с формулами) и презентации PowerPoint в фирменном стиле Predictor — цвета, шрифты, логотип (create_file); файл скачивается из сообщения.
  • Стартовый набор навыков-инструкций кнопкой в админке: статус-отчёт, разбор инцидента, протокол встречи, деловое письмо, анонс для команды.
  • «Составить по описанию» на странице нового навыка: LLM готовит черновик — название, код, описание «Используй, когда…», инструкции с примерами.

Изменено

  • Описание навыка-инструкции теперь условие применения: по нему модель решает, подключать ли навык.

Безопасность

  • В создаваемых Excel-файлах формулы, способные обращаться к сети или запускать программы (HYPERLINK, WEBSERVICE, DDE и т. п.), записываются как текст.

0.11.0 2026-09-24

Добавлено

  • Поиск в интернете стал навыком-инструментом: модель сама решает, когда искать (function calling web_search), может поискать до 3 раз за ответ и знает сегодняшнюю дату. Правила «когда искать» администратор правит в навыке.
  • Анонимизатор — встроенный навык: перед отправкой в поисковик заменяет в запросе персональные данные и корпоративную тайну на выдуманные значения (словарь администратора, e-mail, телефоны, ИНН, СНИЛС, паспорта, карты, счета, IP, а также ФИО, компании, проекты и адреса через локальную LLM). Если проверить запрос не удалось, поиск отменяется.
  • В статусе поиска видно, что скрыл анонимизатор; на странице анонимизатора в админке его можно проверить на примере.
  • Раздел «Инструменты» во вкладке «Навыки».
  • Вызов инструмента, который vLLM вернул текстом (<tool_call>…), скрывается от пользователя и выполняется.

Изменено

  • Кнопка Search в поле ввода убрана: вместо неё пометка «Поиск · анонимно», когда навык включён.
  • Отдельный вызов LLM для переформулировки поискового запроса больше не нужен — запрос пишет сама модель.
  • Источники всех поисков ответа нумеруются сквозь и показываются одним списком.

0.10.0 2026-09-24

Добавлено

  • Вкладка «Навыки» в админке — реестр навыков чата: создание, правка, включение и выключение, удаление; видно, в скольких диалогах навык выбран.
  • Навыки-инструкции: пользователь выбирает навык для диалога на панели над чатом, его инструкции уходят модели системным сообщением.
  • Чтение документов в чате: Word (.docx), Excel и CSV, PowerPoint (.pptx), PDF с текстовым слоем и текстовые файлы — скрепкой, Ctrl+V или перетаскиванием, до 5 на сообщение. Модель отвечает по тексту документа, и документ остаётся в контексте следующих вопросов.
  • Плашка документа в сообщении открывает извлечённый из него текст — то, что увидела модель.
  • Встроенные навыки чтения документов в реестре: их можно выключить (формат перестаёт прикладываться) и поправить их инструкции.

0.9.0 2026-09-24

Добавлено

  • Проект у каждого чата: кнопка «Новый чат» открывает выбор проекта, в списке чатов проект виден цветным лейблом.
  • Проект открытого чата можно сменить на панели над чатом; следующие сообщения учитываются на новый проект.

Изменено

  • Потребление чата пишется на проект этого чата, а не на один общий проект из настроек; настройка теперь лишь подсказывает проект для нового чата (последний выбранный).
  • Старые чаты без проекта получают проект по умолчанию при следующем сообщении.

0.8.2 2026-09-24

Исправлено

  • Чат снова отправляет сообщения: в 0.8.1 при правке пропала функция сбора приложенных картинок, и отправка обрывалась ошибкой в браузере (поле очищалось, запрос в LLM не уходил).
  • Тест tests/test_static_js.py: проверяет, что все вызываемые в JS страниц функции объявлены.

0.8.1 2026-09-24

Изменено

  • Библиотека изображений перенесена в левую колонку чата, над кнопкой «Новый чат»; её можно свернуть.
  • Все добавленные в поле ввода картинки (скрепка, Ctrl+V, перетаскивание) сразу попадают в библиотеку, не дожидаясь отправки.

Исправлено

  • Картинка, вставленная из библиотеки, прикладывается без перекодирования — после отправки в библиотеке больше не появляется её копия.

0.8.0 2026-09-24

Добавлено

  • Библиотека изображений в чате ЛК: панель справа (кнопка «Библиотека» на панели чата или значок картинки в поле ввода); загрузка своих картинок, удаление.
  • Картинку из библиотеки можно вставить в сообщение кликом или перетаскиванием в поле ввода.
  • Отправленные в чат изображения сами попадают в библиотеку; одинаковые файлы хранятся один раз, до 300 изображений на пользователя.

Изменено

  • Чат занимает всю ширину окна.

0.7.0 2026-09-24

Добавлено

  • Картинки в чате ЛК: скрепка в поле ввода, вставка из буфера (Ctrl+V) и перетаскивание, превью перед отправкой; до 5 изображений (PNG, JPEG, WebP, GIF) по 10 МБ.
  • Картинки сохраняются в истории диалога и видны только владельцу.
  • Перед отправкой браузер уменьшает изображение до 1536 px по длинной стороне (JPEG) — меньше трафика и токенов.

Изменено

  • В модель уходят картинки только текущего сообщения; в истории на их месте — пометка, чтобы старые изображения не тратили токены при каждом ответе.
  • Тесты работают с файловой SQLite вместо :memory: — поведение как у рабочей БД (без общего соединения между сессиями).

Безопасность

  • Тип изображения определяется по сигнатуре файла, а не по заявленному; картинки отдаются с nosniff и запрещающей CSP.

0.6.0 2026-09-24

Добавлено

  • Раздел «О программе»: текущая версия, описание сервиса и история изменений; иллюстрация с мамонтом перенесена сюда из шапки.
  • Контроль версий: файл VERSION (SemVer) и этот changelog; версия видна в подвале страниц, в /health и в Swagger.
  • Проект переведён под git.

0.5.0 2026-09-24

Добавлено

  • Режим Search в чате: поиск в интернете через SearXNG, загрузка текста страниц, ответ со ссылками на источники [1], [2] и списком источников под ответом.
  • Переключатели Think и Search перенесены в поле ввода сообщения.
  • Журнал запросов в админке: каждое обращение к LLM отдельной строкой (пользователь, проект, ключ, модель, токены, статус, длительность), фильтры и выгрузка в CSV.
  • Последние запросы проекта на его странице в ЛК.
  • Проект «Чат» — проект по умолчанию для сообщений из чата, создаётся у каждого пользователя автоматически.

Изменено

  • Стрим учитывается по реально сгенерированным токенам (continuous_usage_stats): остановленный или оборванный ответ больше не записывается с нулём токенов.
  • Из шапки убрана надпись «LLM-шлюз».

Безопасность

  • Страницы из поисковой выдачи загружаются только с публичных адресов (в т.ч. при редиректах) — шлюз находится в сети VPN и видит внутреннюю сеть.

0.4.0 2026-09-24

Добавлено

  • Индикатор доступности LLM в чате.
  • Отдельный ключ по умолчанию «Чат в ЛК» для запросов из чата.
  • Кнопка показа пароля (глаз) во всех полях пароля.

Изменено

  • Ответ модели в чате генерируется на сервере и не прерывается при уходе со страницы или смене вкладки; при возврате страница подхватывает идущий ответ.
  • Понятное сообщение в чате, когда LLM недоступна.

Исправлено

  • VPN-туннель переподключается сам после обрыва (сторож в контейнере vpn, healthcheck).
  • Быстрое следующее сообщение могло уйти в LLM без предыдущего ответа модели.

0.3.0 2026-09-24

Добавлено

  • Чат с LLM в личном кабинете: диалоги, режим think, настраиваемая «память» диалога, выбор проекта для учёта.
  • Светлая и тёмная темы (сохраняются в профиле).
  • При создании проекта — подсказки из названий проектов других пользователей; сводная статистика по одноимённым проектам.

Изменено

  • Оформление в фирменном стиле Predictor.

0.2.0 2026-09-24

Добавлено

  • Регистрация по почте с подтверждением, вход, сброс пароля.
  • Модерация заявок администратором: одобрение, отказ с причиной, блокировка, назначение администраторов.
  • Проекты и API-ключи в личном кабинете: выпуск, повторный показ, отзыв, архив проекта.
  • Учёт каждого обращения к LLM (пользователь, проект, ключ, токены) и статистика с фильтрами и выгрузкой в CSV.
  • PostgreSQL в docker-compose.

Удалено

  • Статические ключи SERVICE_API_KEYS — доступ только по ключам проектов из ЛК.

0.1.0 2026-09-22

Добавлено

  • OpenAI-совместимый шлюз к Qwen3.8 (vLLM) через VPN: /v1/chat/completions (в т.ч. стриминг и tools), управление think, очередь и повторы запросов.
  • Эмбеддинги Qwen3-Embedding: /v1/embeddings.
  • Скрипты запуска vLLM на GPU-сервере и smoke-тест.