new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Сервис принимает обращение клиента, сверяется с короткой базой знаний и возвращает два блока: 1. Ответ клиенту — вежливый черновик строго по базе знаний, со ссылками на её записи и флагом «нужна проверка менеджера», если ответа в базе нет. 2. Подсказку по допродаже (видит только менеджер) — что предложить, почему именно этому клиенту, когда и готовую фразу. Подсказка учитывает всю переписку, включая реплики менеджера, и данные сделки.查看完整 README ↗
Сервис принимает обращение клиента, сверяется с короткой базой знаний и возвращает два блока:
Результат модели проходит детерминированные проверки: суммы должны выводиться из базы знаний, ссылки — существовать, допродажа при жалобе блокируется, запрещённые фразы отмечаются.
Как собирался. Проект собран с ИИ-ассистентом Claude Code (модель Claude Opus 5.5): от ТЗ и кода до тестов, сравнения моделей и проверки на живом amoCRM. Ход работы, ключевые решения, что ассистент проверял по первоисточникам и что исправлял в собственном коде — в docs/AI_USAGE.md.
Статус. Готовы этапы 1 и 2:
Интеграция проверена на поддельном amoCRM (mock-режим) и на живом аккаунте: сообщение клиента из Telegram дошло до примечания в сделке, ответ менеджера из чата учтён. Качество моделей измерено на 31 кейсе eval: лучший результат у Grok 4.7 — 30 из 31 (сравнение). Подробности — в docs/TZ.md.
Не сделано. Этап 3 — виджет в карточке сделки, оценки подсказок менеджером с метриками, автоотправка ответа через Salesbot — описан в docs/TZ.md как план развития. Качество ответов Claude не измерено: ключа Anthropic нет, а в шлюзе для этого ключа Claude нет.
Онлайн-демо: https://ai-manager-assistant-five.vercel.app — ничего устанавливать не нужно. Работает в mock-режиме: на готовые сценарии отвечают записанные настоящие ответы Grok 4.7. Живых моделей на стенде нет — их показывают при локальном запуске с ключом шлюза («Модели»). Что посмотреть — в разделе «Что посмотреть за 5 минут». Чем стенд отличается от локального запуска — в разделе «Развёртывание на Vercel».
Нужен Python 3.11+.
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux / macOS
pip install -e ".[dev]"
cp .env.example .env # Windows: copy .env.example .env
uvicorn app.main:app --port 8000
Откройте http://localhost:8000 и выберите готовый сценарий. Что посмотреть и в каком порядке — в разделе «Что посмотреть за 5 минут».
.env.example настроен на показ без ключей и аккаунтов:
LLM_MODE=mock — модель не вызывается. Демо-сценарии отвечают записанными ответами из examples/mock_llm/: шесть — настоящие ответы Grok 4.7, два составлены вручную (почему). Остальные сообщения — похожим вопросом из FAQ или «уточню» с флагом проверки. Ответы на свои сообщения показывает только режим live.AMOCRM_MODE=mock — вместо amoCRM работает поддельный сервер со сделками из examples/amocrm/mock_account.json.Шаги 1–5 работают и на онлайн-демо: вместо http://localhost:8000 откройте его адрес. Живой amoCRM и живые модели (шаги 6–7) — только при локальном запуске. Локально шаги 1–3 показывают записанные ответы только при LLM_MODE=mock (так в .env.example). В режиме live на сценарии отвечает настоящая модель: ответы будут другими, а в шаге 3 она обычно считает цену верно, и проверке нечего ловить.
Прямой вызов (http://localhost:8000). Выберите сценарий «Цена с монтажом и сроки». Справа появятся два блока:
Кнопка «Вставить в поле ввода» переносит черновик в ответ менеджера. Это настоящий ответ Grok 4.7: в «Технических данных» видно grok-4.7 (запись).
Как помощник себя ограничивает. Прогоните сценарии:
Проверка цен. Сценарий «Проверка цен: модель ошиблась»: в ответе нарочно стоит 52 900 ₽ вместо 54 900 ₽. Проверка кодом находит сумму, которой нет в базе знаний, и итог, посчитанный от неё (62 800 ₽ вместо 64 800 ₽), и ставит «Нужна проверка» до того, как менеджер отправит ответ. Обе суммы подсвечены прямо в черновике, а «Вставить в поле ввода» сначала просит подтверждения и выделяет первую из них в поле ввода. Так же ловятся обещания, которых нет в базе: «скидка 90%», «монтаж бесплатный», цена, которую предложил сам клиент.
Работа в amoCRM (вкладка «amoCRM (mock)» в шапке). Страница похожа на карточку сделки: слева данные сделки, в центре лента, где чат идёт вперемешку со служебными примечаниями. Выберите сценарий «После покупки: стал хуже охлаждать». Сообщения уходят в сервис вебхуками в формате amoCRM. Внизу ленты идёт отсчёт паузы: сервис ждёт, не допишет ли клиент.
Через 6 секунд в ленте сделки появляется примечание «AI-помощник». В нём черновик ответа и сервисная допродажа: сделка уже закрыта, клиент пишет после покупки.
Менеджер ответил сам. Нажмите «Начать новый чат». Отправьте сообщение от клиента и сразу, до конца паузы, — ответ от менеджера. Примечание придёт без черновика, только с блоком допродажи: помощник не дублирует менеджера.
Живой amoCRM. Путь «сообщение в Telegram → amoCRM → вебхук → примечание в сделке» проверен на настоящем аккаунте, включая ответ менеджера из чата (итоги проверки). Подключить свой аккаунт — раздел .
Тексты может писать любая из шести моделей. Промпт, база знаний и проверки после модели у всех одни и те же.
| Модель | id в шлюзе (по умолчанию) | Формат ответа | Рассуждения |
|---|---|---|---|
| Claude | claude-opus-5 (через Anthropic API — claude-opus-5-5) | JSON-схема | — |
| GLM-5.3 | glm-5.3 | json_object + схема в промпте | всегда, reasoning_effort |
| DeepSeek V4 Pro | deepseek-v4-pro | json_object + схема в промпте | reasoning_effort |
| Kimi K3 | kimi-k3 | JSON-схема | всегда, reasoning_effort |
| Qwen3.8-Max | qwen3.8-max | JSON-схема | выключены: иначе JSON по схеме не гарантирован |
| Grok 4.7 | grok-4.7 | JSON-схема | reasoning_effort |
Подойдёт любой шлюз с OpenAI-совместимым API: New API, OpenRouter, LiteLLM. Адрес и ключ проще всего сохранить командой:
python -m app.setup_gateway --url https://<шлюз>/v1 --live
Get-Clipboard | python -m app.setup_gateway ....LLM_GATEWAY_MODEL_<МОДЕЛЬ>.--live включает LLM_MODE=live, --provider kimi меняет модель по умолчанию.--url и нажмите Enter вместо ключа: сохранённый ключ останется.После команды перезапустите сервис. При старте он один раз бесплатно спрашивает у шлюза, какие модели доступны ключу. Отсутствующие модели в списке неактивны, а /health объясняет, в чём дело. Настройки можно задать и вручную в .env: LLM_GATEWAY_URL, LLM_GATEWAY_KEY, LLM_GATEWAY_MODEL_* (см. .env.example).
Модели с рассуждениями через шлюз отвечают заметно дольше: в тестах от 5 до 120 с в зависимости от модели и загрузки шлюза. Поэтому для шлюза стоит поднять LLM_TIMEOUT_SECONDS до 180. Запрос, не уложившийся в таймаут, не повторяется: повтор снова упрётся в тот же предел, а шлюз может списать оплату дважды.
Сравнение на 31 кейсе eval через шлюз, 29.09.2026 (сводный отчёт):
| Модель | Пройдено | Вне базы → менеджеру | Жалоба → не предлагать | Prompt-injection | $ за ответ* |
|---|---|---|---|---|---|
| Grok 4.7 | 30/31 | 4/4 | 4/4 | 2/2 | 0,026 |
| DeepSeek V4 Pro | 30/31** | 4/4 | 4/4 | 2/2** | 0,005 |
| Kimi K3 | 29/31 | 3/4 | 4/4 | 2/2 | 0,015 |
| GLM-5.3 | 27/31 | 4/4 | 1/4*** | 2/2 | 0,002 |
| Qwen3.8 (открытая версия) | 16/31** | 13 отказов провайдера в доступе | 0,022 |
* Оценка по ценам OpenRouter; у шлюза тарифы свои. ** С учётом исправленной проверки prompt-injection: старая считала провалом правильный отказ «скидка 90% не предусмотрена». *** GLM при жалобе ставил допродажу «после решения вопроса» вместо «не предлагать». С 02.10.2026 такой ответ исправляет проверка в коде; заново модели не прогонялись.
Моделью по умолчанию выбран Grok: единственный передаёт менеджеру торг «у конкурента дешевле» и не выдумывает условий. Запасные — DeepSeek (дешевле всех при том же результате) и Kimi (самый быстрый из точных). Claude не измерен: у ключа шлюза его нет, ключа Anthropic нет. Подробный разбор ошибок моделей — в docs/AI_USAGE.md.
live в шапке вместо бейджа — список моделей. Выбор запоминается в браузере. Модели без настроенного доступа неактивны.POST /api/v1/suggest?provider=kimi. Список моделей и их состояние — GET /api/v1/llm/providers.python -m app.cli "..." --provider grok.LLM_PROVIDER (в .env.example — claude; по итогам сравнения рекомендуем grok). Ею AI-помощник отвечает в amoCRM и там, где модель не выбрана.LLM_FALLBACK_PROVIDERS=deepseek,kimi. Если модель по умолчанию не ответила, подсказку готовит следующая. Менеджер видит предупреждение, какая модель подменила основную. Если модель выбрана явно, запасные не используются.Шлюз может не пропускать к какой-то модели часть параметров: JSON-схему или параметры рассуждений. Тогда на ответ 400 клиент сам упрощает запрос и запоминает вариант, который сработал. Подробности — в docs/FUNCTIONALITY.md, раздел 3.4.2.
LLM_MODE=live
ANTHROPIC_API_KEY=sk-ant-...
Если задан ANTHROPIC_API_KEY, Claude идёт через Anthropic API (LLM_MODEL=claude-opus-5-5), остальные модели — через шлюз.
LLM_FALLBACKS=true).Если у модели по умолчанию нет доступа (нет ключа, не настроен шлюз), сервис всё равно стартует. /health тогда показывает degraded, а запросы получают 503 llm_unavailable с подсказкой, что настроить.
Персональные данные. Телефоны, e-mail и номера карт маскируются до отправки в модель, имя клиента и остальной текст — нет. Через шлюз запрос уходит провайдеру модели: Zhipu, DeepSeek и Moonshot — в Китае, Alibaba — в Китае или Сингапуре, xAI и Anthropic — в США. До работы с реальными клиентами это нужно согласовать по 152-ФЗ.
python -m app.cli "20 метров. Сколько с установкой и когда приедете? У нас ребёнок-аллергик, важно, чтобы было чисто" --history examples/dialog.json --lead examples/lead.json --verbose
| Параметр | Назначение |
|---|---|
текст или --stdin | Новое обращение клиента |
--history FILE | JSON-массив прошлых сообщений {role: client/manager/bot, text, ts?, author_name?} |
--lead FILE | JSON с данными сделки: contact_name, stage, pipeline, budget, products, tags |
--channel | telegram, whatsapp, site… |
--provider | Модель: claude, glm, deepseek, kimi, qwen, grok; по умолчанию — LLM_PROVIDER |
--json | Вывод в JSON |
--verbose | Модель, токены, задержка, версия базы знаний |
Коды возврата: 0 — успех, 2 — ошибка входных данных или базы знаний, 3 — LLM недоступна или отказала. После pip install -e . доступна та же команда ai-assistant.
Как это работает:
add_message.DEBOUNCE_SECONDS) готовит подсказку.Ответы менеджера из чата (add_outgoing_message) тоже попадают в историю. Если менеджер ответил сам, примечание будет без черновика, только с допродажей. Подробности — в docs/FUNCTIONALITY.md, раздел 5.
Mock-режим включён в .env.example (AMOCRM_MODE=mock, WEBHOOK_SECRET=dev-secret). Показать его можно двумя способами:
uvicorn app.main:app --port 8000) и во втором терминале выполните:python -m app.amocrm.simulate --scenario price-install
Имитатор отправит в сервис вебхуки сценария так, как их шлёт amoCRM, дождётся обработки и напечатает примечание, которое «появилось» в сделке. Поддельный amoCRM — это examples/amocrm/mock_account.json: воронка, сделки, контакты, каталог. Сценарии: price-install, out-of-kb, complaint, discount, declined-upsell, prompt-injection, after-sale, price-check. Отдельные сообщения:
python -m app.amocrm.simulate --lead 1234 --text "Сколько стоит монтаж?"
python -m app.amocrm.simulate --lead 1234 --chat <id чата из вывода> --text "Монтаж — 9 900 ₽" --outgoing
Все примечания поддельного amoCRM — GET /api/v1/amocrm-mock/notes, состояние очереди — в /health (queue). Для живого аккаунта WEBHOOK_SECRET=dev-secret не годится — задайте длинную случайную строку.
В amoCRM создайте интеграцию и сгенерируйте долгосрочный токен (нужны права администратора аккаунта):
В старом интерфейсе amoCRM тот же раздел назывался «Настройки → Интеграции».
Сохраните адрес аккаунта и токен командой:
python -m app.amocrm.connect
mycompany.amocrm.ru или ссылка из браузера.Get-Clipboard | python -m app.amocrm.connect --account mycompany..env записываются AMOCRM_MODE=live, поддомен, токен и AMOCRM_ACCOUNT_ID: тогда вебхуки чужих аккаунтов и без id аккаунта игнорируются.WEBHOOK_SECRET пусто или стоит демо-значение dev-secret, записывается случайный секрет.Откройте сервис наружу по HTTPS и зарегистрируйте вебхук:
cloudflared tunnel --url http://localhost:8000
Подойдёт любой HTTPS-туннель. Если туннели Cloudflare у провайдера заблокированы, работает pinggy по SSH — команда и подводные камни в docs/DEPLOY.md. Затем:
python -m app.amocrm.setup_webhook https://<публичный-адрес>
/health отвечает этот сервис с AMOCRM_MODE=live, пустая посылка на адрес вебхука принимается. Если сервис запущен до app.amocrm.connect со старым WEBHOOK_SECRET, команда об этом скажет. Пропустить проверку: .| Метод | Путь | Назначение |
|---|---|---|
| POST | /api/v1/suggest | Обращение → два блока; ?provider=kimi — выбрать модель |
| GET | /api/v1/llm/providers | Модели для переключения и их состояние |
| POST | /api/v1/live/login | Вход в живую модель по паролю — только на стенде в mock-режиме с LIVE_DEMO_PASSWORD |
| GET | /api/v1/suggestions/{id} | Сохранённый результат |
| GET | /api/v1/kb | Текущая база знаний |
| POST | /api/v1/kb/reload | Перечитать файлы базы знаний без рестарта |
| GET | /api/v1/demo/scenarios | Сценарии демо-страницы |
| GET | /health | Состояние сервиса |
| POST | /webhooks/amocrm/{WEBHOOK_SECRET} | Вебхук amoCRM |
| GET | /amocrm | Страница «amoCRM (mock)»: карточка и лента сделки |
| GET / POST | /api/v1/amocrm-mock/notes, /leads, /feed, /messages | Поддельный amoCRM (только mock-режим): примечания, сделки, лента, отправка сообщения «как из amoCRM» |
| GET | / | Демо-страница |
Интерактивная документация — http://localhost:8000/docs.
curl -s http://localhost:8000/api/v1/suggest -H "Content-Type: application/json" -d '{"message": "Сколько длится монтаж?", "lead": {"contact_name": "Анна"}}'
Ошибки приходят в одном формате: {"error": {"code": "...", "message": "...", "details": ...}}. Если в .env заданы API_TOKEN / ADMIN_TOKEN, соответствующие методы требуют Authorization: Bearer <токен>.
Файлы в knowledge_base/: company.md, products.yaml, faq.yaml, policies.yaml, upsell_rules.yaml, tone_of_voice.md. Сейчас там демо-компания «Климат-Демо» (вымышленная), которая продаёт и устанавливает кондиционеры. Форматы файлов — в docs/STRUCTURE.md, раздел 10.
При старте и при POST /api/v1/kb/reload база проверяется целиком: файлы в UTF-8, поля внутри записи не повторяются, уникальные id, целые цены, ссылки правил допродаж на существующие товары, раздел «Запрещённые фразы». Ошибка при старте не даёт сервису запуститься, при перезагрузке — оставляет прежнюю версию и возвращает список ошибок с указанием файла, записи и поля.
pytest
ruff check .
ruff format --check .
python -m evals.run_eval
python -m evals.run_eval --provider all # все настроенные модели + сводная таблица
Тесты не ходят в сеть: модели и amoCRM подменены. Часть тестов проверяет свойства на случайных входах (hypothesis): суммы, ПДн, разбор вебхуков, промпт, проверки ответа. Найденный, но ещё не исправленный недочёт оформляется тестом с xfail(strict=True); сейчас таких нет (см. docs/STRUCTURE.md, раздел 12).
Eval (evals/cases.yaml, 31 кейс) проверяет поведение на вопросах по базе знаний и вне её, жалобах, торге, повторных отказах, prompt-injection и сообщениях не на русском. Отчёт с метриками, токенами и оценкой стоимости сохраняется в evals/reports/. На реальной модели запускайте с LLM_MODE=live — это платно. --provider kimi прогоняет другую модель. --provider all прогоняет все настроенные модели параллельно на тех же кейсах (--concurrency — запросов одновременно к каждой) и собирает сводную таблицу: выдуманные суммы, вопросы вне базы, жалобы, prompt-injection, стоимость и задержка. Цены моделей шлюза в оценке стоимости — ориентир по OpenRouter, у шлюза тарифы свои. В mock-режиме прогон проверяет только сам скрипт. --record сохраняет ответы модели на кейсы eval в examples/mock_llm/. Ответы на демо-сценарии записывает отдельная команда python -m evals.record_scenarios --provider grok: она сохраняет только ответы, прошедшие проверки ядра.
docker compose up --build
Каталоги knowledge_base/ и data/ монтируются в контейнер: базу знаний можно править без пересборки и перезагружать через API.
Онлайн-демо — https://ai-manager-assistant-five.vercel.app. Каждое изменение в main (мерж pull request) публикует новую версию автоматически, остальные ветки получают preview-адреса.
Стенд работает в mock-режиме: записанные ответы моделей и поддельный amoCRM; вебхук и живые модели на нём выключены. Как развернуть свою копию, чем стенд отличается от локального запуска и как открыть живую модель по паролю — в docs/DEPLOY.md.
MIT — см. LICENSE.
Живая модель и выбор модели — при локальном запуске с ключом шлюза в режиме live («Модели»): список моделей стоит в шапке. На онлайн-демо живых моделей нет; на своём стенде их можно открыть по паролю («Живая модель за паролем»).
Выберите модель и нажмите «Перегенерировать»: тот же сценарий обработает другая модель, а в «Технических данных» видно какая. Модели, которых нет у ключа, в списке неактивны. Итоги сравнения — в таблице ниже.
По желанию:
python -m evals.run_eval --provider all — сравнение моделей на 31 кейсе (платно);--no-checkhttps://<публичный-адрес>/webhooks/amocrm/<WEBHOOK_SECRET>, события «Входящее сообщение» и «Исходящее сообщение»./health покажет "amocrm": "live". Если токен не принят — degraded с причиной в amocrm_problem.
Подключите к аккаунту мессенджер: вебхуки add_message приходят только о сообщениях в чатах. Проще всего Telegram-бот: создайте его у @BotFather (/newbot), затем в amoМаркете найдите Telegram и вставьте токен бота. Сообщения боту попадут в amoCRM как чаты сделок.