Веб-поиск + LLM с записью в таймлайн

Двухшаговый RAG: запрос к любому провайдеру веб-поиска, прогон результата через ваш LLM с цитатами N, публикация ответа комментарием в таймлайн CRM на сделке.

Что делает

В REST Bitrix24 нет нативного endpoint для веб-поиска или LLM. Этот рецепт демонстрирует паттерн моста: используйте любой внешний провайдер для поиска/LLM, затем верните ответ обратно в Bitrix24 через SDK. Обработчик пишет ответ LLM с цитатами в таймлайн сделки комментарием.

Стек

Node.js 18+, openai. Веб-поиск — BYOC: замените webSearch() своим вызовом к Tavily, Brave, SerpAPI или любому другому провайдеру.

Установка

pnpm add openai

Переменные окружения

export B24_HOOK='https://your.bitrix24.com/rest/1/secret'
export OPENAI_API_KEY='sk-...'
export SEARCH_API_KEY='...'   # ключ вашего провайдера

Запуск

npx tsx 09-web-search-llm.ts <DEAL_ID> "<question>"

Исходник

skills/b24jssdk-recipes/examples/09-web-search-llm.ts.

Примечания

  • Функция webSearch() в рецепте — заглушка. Замените её реальным вызовом вашего провайдера; остальное в рецепте не затрагивается.
  • LLM просят цитировать каждый факт через [N], где N — results[].id. Рецепт добавляет к комментарию таймлайна соответствующий список URL.
  • crm.timeline.comment.add — классический метод API. Рецепт использует числовой ENTITY_TYPE_ID: 2 (≡ EnumCrmEntityTypeId.deal) — эта форма принимается на всех протестированных нами версиях портала. Строковая форма ENTITY_TYPE: 'deal' тоже работает на большинстве современных порталов; переключитесь на неё, если ваш код ожидает символьное имя.
  • Для AI Router под управлением VibeCode или Bitrix-поиска вместо внешнего провайдера см. скил b24jssdk-vibecode.