Skip to main content

ИИ-помощники и агенты

Актуально для: SimpleTwo 0.9.x · Проверено: 20.09.2026

ИИ в SimpleTwo — это не отдельное приложение рядом с перепиской. Это бот с второй полосой доступа: первая ведёт в переписку, вторая — к модели. Полосы независимы, и это главное свойство конструкции.

1. Провайдер модели

Settings → AI. Поддерживаются два диалекта:

ВидКто подходит
anthropicAnthropic API
openaiвсё, что говорит на OpenAI-совместимом API: ITG AIaaS, vLLM, Ollama и подобные

Ключ у тенанта один, и живёт он на хосте службы переписки — координатор кладёт его туда так же, как ключи пушей, и обратно не отдаёт. Карточка в консоли отвечает только на два вопроса: настроен ли доступ и куда он направлен.

Локальная модель — это тот же openai

Если данные не должны покидать контур, поднимите vLLM или Ollama внутри периметра и укажите их адрес. Со стороны SimpleTwo ничего не меняется — меняется только то, куда уходит текст.

Каталог моделей консоль подтягивает через службу переписки, а не просит вписать имя руками. Причина практическая: у некоторых провайдеров возможность модели — часть её имени (opr.claude-sonnet5.chat_completions, itg.qwen3-embedding-4b.embeddings), и «очевидное» имя вроде claude-sonnet-5 не существует нигде. Поле со списком нельзя заполнить несуществующим значением.

2. Полоса модели у бота

Каждому боту выдаётся собственный ключ модели (ai_…), и при выдаче задаются:

  • список разрешённых моделей — бот не сможет обратиться к другой;
  • суточный бюджет токенов — потолок расхода на этого бота.

Запросы идут через SimpleTwo к провайдеру с ключом тенанта; в аудит пишутся метаданные запроса, а не его содержимое.

Почему ключей два, а не один

Ключ модели не годится для входа в переписку, а ключ переписки не открывает доступ к модели: утёкший чат-токен не потратит ни рубля у провайдера, а утёкший ai_-ключ не прочитает переписку. Ротируются они независимо. При этом отключение самого бота закрывает обе полосы — один переключатель останавливает агента целиком.

3. Ассистенты и делегирование

Ассистент — это агент, который действует от имени конкретного человека: он видит то, что видит его владелец. Технически это делегированная сессия, а не отдельный участник.

  • В организации есть общий переключатель: разрешено ли агентам действовать от имени людей. Он проверяется на каждом запросе, а не только при создании, поэтому выключение действует немедленно — живые делегаты сразу получают отказ. Ничего при этом не удаляется.
  • Выключив делегирование, вы оставляете обычных ботов, работающих под своим именем.
  • Владелец видит своих агентов в клиенте и останавливает их сам — это сделано намеренно: человек, которому для остановки собственного агента нужно писать заявку, его не остановит. Та же запись видна на экране сессий рядом с его устройствами: «кто может действовать как я» отвечается в одном месте.

4. Бот поддержки

Отдельный случай — служба поддержки со своей базой знаний. Одна кнопка в консоли разворачивает весь случай целиком: бот @librarian со знаком организации, его ключ модели, две комнаты, сценарий с согласованием и роль, которая этим согласованием владеет. Всё созданное остаётся обычными объектами — их видно и можно править в консоли.

Таких инстансов может быть несколько: разные задачи, разные базы знаний, разные боты, у каждого свой ключ провайдера. Хост поддержки привязывается к одному инстансу при подключении и никогда не получает чужие учётные данные.

Сам сервер поддержки ставится в DMZ, наружу не смотрит и принимает только подписанные вебхуки от службы переписки — см. роль support в развёртывании.

5. Что решить до включения

  1. Куда уходит текст. Внешний провайдер — это передача содержимого переписки третьей стороне. Для закрытого контура выбирайте модель внутри периметра.
  2. Бюджеты. Ставьте суточный потолок каждому боту сразу: бюджет, выданный «пока без ограничения», не остаётся без ограничения — он остаётся без внимания.
  3. Кто заводит агентов. Создание ботов — право в консоли; делегирование — отдельный переключатель организации. Это два разных решения, и принимать их лучше отдельно.

Дальше