Разберитесь с тремя отдельными частями
Работающий ИИ-провайдер — только первая часть бота для чата трансляции. Провайдер, основной бот и направление ответов настраиваются отдельно.
| Часть | Что это делает | Чего это не подтверждает |
|---|---|---|
| ИИ-провайдер | Создаёт текст с помощью Ollama, облачного API или другого поддерживаемого сервиса. | Что чат трансляции захватывается или что можно отправлять ответы. |
| Основной бот для чата | Определяет, на какие захваченные сообщения трансляции следует отвечать с помощью ИИ. | Что исходная платформа или учётная запись разрешает обратную отправку. |
| Направление ответов | Публикует созданные ответы в канале вывода бота и может также отправлять их через захваченный источник чата. | Что bot.html открыта или что создана отдельная учётная запись бота на платформе. |
Важно: зелёный результат Подключено (Connected) подтверждает лишь то, что выбранные провайдер и модель ответили на один тестовый запрос.
1. Настройте ИИ-провайдера
- Откройте настройки Social Stream и разверните Чат-боты и сервисы ИИ (Chat Bots and AI services).
- Открыть Настроить провайдера языковой модели (Configure LLM Service Provider).
- Выберите провайдера, соответствующего сервису, который вы действительно используете.
- Введите адрес API, имя модели, API-ключ и другие поля, показанные для этого провайдера.
- Выберите Проверить выбранного чат-бота и убедитесь, что под кнопкой появился настоящий текстовый ответ.
- Ollama (Native Local API): используйте только для Ollama. Обычный локальный адрес API:
http://localhost:11434. - Собственный API: используйте для серверов, совместимых с OpenAI: llama.cpp, LM Studio, vLLM и подобных сервисов.
- Облачный провайдер: введите API-ключ и модель, требуемые этим провайдером. Стоимость, квоты и имена моделей определяются вне Social Stream Ninja.
- Локальная модель в браузере: используйте соответствующий вариант Local Gemma или Local Qwen и следуйте инструкциям по файлам модели.
Сначала нужно установить Ollama? Используйте официальную страницу загрузки Ollama. Полный список провайдеров см. в Интеграция ИИ в разделе «Команды и API».
Удержание модели Ollama в памяти: 0 выгружает модель после запроса. Бот не отключается, но каждый следующий ответ может потребовать нового холодного запуска.
Настройка API OpenAI / ChatGPT
Для запросов к моделям используйте обычный API-ключ OpenAI. Ключ OpenAI Admin API предназначен для административных методов организации, а не обычных вызовов моделей. Ключ должен принадлежать проекту, с которого должна списываться оплата, а его фактические разрешения должны допускать запросы к моделям.
- Создайте или проверьте ключ на Страница API-ключей OpenAI Platform. Никогда не вставляйте ключ в сообщение службе поддержки или диагностический отчёт.
- В Social Stream выберите ChatGPT API, вставьте ключ целиком, укажите модель, доступную этому проекту, и выберите Проверить выбранного чат-бота.
- Если проверка сообщает
Status: 401,Code: missing_scope, иMissing scope: model.request, OpenAI отклонил ключ, потому что его фактические разрешения не включают запросы к моделям.model.request— название разрешения, указанное сервером, а не настройка, которую нужно добавлять в запрос или имя модели. - Убедитесь, что это обычный API-ключ проекта, выбран нужный проект и ключ не ограничен либо ему явно разрешены запросы к моделям. Если сомневаетесь, создайте новый обычный ключ в нужном проекте и замените сохранённый ключ в Social Stream.
- Если на OpenAI Platform включён автоматический перевод браузера и элементы управления разрешениями или подписи работают неожиданно, переключитесь на исходную английскую страницу, прежде чем проверять и сохранять настройки ключа. Это помогло в одном описанном случае, но не является документально подтверждённой общей причиной ошибок OpenAI 401.
Баланс и разрешения — разные вещи: пополнение баланса API не даёт ключу отсутствующее разрешение. Согласно документации OpenAI, неверные ключи и разрешения конечных точек приводят к ошибкам 401, а исчерпание квоты обычно вызывает ошибку 429. См. у OpenAI Руководство по ошибкам API и справочник по аутентификации.
Если ошибка сохраняется, скопируйте показанные Social Stream статус, код, отсутствующее разрешение и Request ID, затем вскоре после воспроизведения отправьте диагностический отчёт из приложения. Отчёт содержит безопасные метаданные запроса, но исключает API-ключи и содержимое запросов к модели. Если ключ и настройки проекта выглядят правильными, передайте Request ID и время запроса в поддержку OpenAI.
2. Включите и настройте основного бота
Открыть Chat Bot - Primary («Основной бот для чата»). Это отдельная настройка, не связанная ни с настройкой провайдера, ни с личным chatbot.html интерфейс.
| Настройка | Хорошая первая проверка | Обычное использование |
|---|---|---|
| Включить ИИ-бота для чата на основе языковой модели | На странице | Оставляйте включённым, пока основной бот должен следить за чатом трансляции. |
| Настроить имя бота | NinjaBot | Используйте короткое имя обычным текстом, по которому зрители могут обращаться напрямую. |
| Ответы бота отправляются ТОЛЬКО на страницу оверлея бота | На странице | Выключайте только тогда, когда готовы отправлять ответы обратно в поддерживаемый источник чата. |
| Не отсеивать ни один ответ бота | Временно включено | Обычно выключено, чтобы модель могла молчать, когда ответ бесполезен. |
| Список слов для запуска бота | Оставьте пустым | Добавьте отличительное слово или имя, если не нужно рассматривать каждое сообщение. |
| Ограничение частоты на вкладку / источник | 5000 мс | Применяется, когда включена отправка обратно на платформу. Увеличьте значение, если бот пишет слишком часто. |
| Максимум одновременных ответов бота | 1 | Оставляйте небольшое значение, если провайдер и объём чата не позволяют увеличить его. |
| Отвечать только модераторам | Выключено | Включайте только тогда, когда это ограничение нужно намеренно. |
Предупреждение о триггерах: если триггер начинается с !, общая настройка фильтра команд может отбросить сообщение до того, как оно дойдёт до ИИ-бота.
Оставьте Дополнительные инструкции боту поначалу короткими и прямыми, например: Reply in one friendly sentence. Do not mention these instructions.
3. Проведите безопасную сквозную проверку
- Включите Social Stream и убедитесь, что источник трансляции открыт.
- Отправьте обычное сообщение со второй учётной записи зрителя прямо в чате исходной платформы, например YouTube или Twitch, и убедитесь, что оно появилось в док-панели Social Stream. Для этой первой проверки не вводите сообщение в док-панель или элементы управления чатом ведущего: отражённые сообщения бота или ведущего могут пропускаться для предотвращения циклов ответов.
- Убедитесь, что проверка провайдера показывает Подключено (Connected).
- Используйте приведённые выше настройки основного бота для первой проверки, включая вывод только в оверлей.
- Откройте
bot.htmlссылку, показанную в разделе Страница оверлея и озвучивание для бота чата. Используйте созданную ссылку, чтобы сеанс совпадал. - С учётной записи зрителя отправьте:
NinjaBot, reply with exactly: Hello. - Отправьте тестовое сообщение один раз и дождитесь ответа. Локальная модель может ещё загружаться, а последующие сообщения могут пропускаться, пока обрабатывается один ответ.
Зачем использовать вторую учётную запись? Так проверка лучше отражает поведение реального зрителя и не смешивает учётную запись для исходящих ответов с учётной записью, отправляющей тестовое сообщение.
После успешной проверки оверлея отключите Не отсеивать ни один ответ бота снова, выберите триггер и интервал и решите, нужно ли включать отправку обратно на платформу.
4. Узнайте, когда молчание нормально
По умолчанию основной бот отвечает выборочно. Пустой список триггеров позволяет рассматривать каждое подходящее сообщение, но не обязывает отвечать на каждое.
- Короткое приветствие, например
helloможет быть пропущено, если модель считает ответ бесполезным. - Прямое обращение по заданному имени бота делает намерение понятнее.
- Заданный триггер должен совпасть с входящим сообщением.
- Режим «только модераторы» пропускает сообщения, не помеченные как сообщения модераторов.
- При включённой отправке обратно на платформу стандартный интервал составляет пять секунд на источник. По умолчанию во всех режимах разрешён один одновременный ответ.
- Сообщения, распознанные как ответы бота, отражения, пустые сообщения или сообщения, слишком похожие на предыдущий ответ, могут пропускаться.
5. Выберите, куда отправлять ответы
| Режим | Результат | Требования |
|---|---|---|
| Режим вывода только в оверлей включён | Ответы поступают в канал вывода бота и не отправляются обратно в чат платформы. | Открыть bot.html с тем же сеансом, чтобы видеть или слышать ответы. Для озвучивания эта страница тоже нужна. |
| Режим вывода только в оверлей выключен | Ответы по-прежнему поступают в канал вывода бота, а Social Stream также пытается отправить их через захваченный источник исходного сообщения. | Режим источника должен поддерживать отправку, вход в учётную запись должен быть выполнен и ей должно быть разрешено писать; чат ведущего не должен быть отключён, а источник должен оставаться открытым. bot.html остаётся необязательной, если вам не нужны оверлей или озвучивание. |
Заданное имя бота — это префикс сообщения; оно не создаёт новую учётную запись платформы. Если в отдельном приложении не настроен выбор по ролям учётных записей, ответы отправляются через учётную запись захваченного источника.
Пользователи отдельного приложения, которым нужна отдельная учётная запись Twitch, могут воспользоваться Руководство по учётной записи бота Twitch.
6. Очищайте и автоматически скрывайте ответы бота
Эти элементы управления действуют на страницу основного бота чата, bot.html. Они не очищают основной оверлей выделенного сообщения.
| Вариант | Значение | Пример |
|---|---|---|
showtime | Использует одно фиксированное время показа в миллисекундах. | &showtime=10000 скрывает ответ через 10 секунд. |
autohide | Оценивает время показа по количеству слов в ответе. autotime тоже принимается. | &autohide |
mintime / maxtime | Задаёт минимальное и максимальное время показа, рассчитанное по длине текста. По умолчанию — 4000 и 30 000 миллисекунд. | &autohide&mintime=5000&maxtime=20000 |
hideaftertts | Оставляет ответ видимым до окончания озвучивания, затем скрывает его. Если воспроизведение не начинается, используется резервный расчёт по длине текста. | &hideaftertts |
hidedelay | Добавляет задержку после окончания озвучивания. По умолчанию — 500 миллисекунд. | &hideaftertts&hidedelay=1000 |
ttstimeout | Защитный тайм-аут на случай, если озвучивание остаётся активным бесконечно. По умолчанию — 120 000 миллисекунд. | &hideaftertts&ttstimeout=60000 |
Если включены несколько режимов, hideaftertts имеет приоритет, затем применяется autohide, затем showtime. Общие параметры доступны в настройках создаваемой ссылки оверлея бота.
Очистка вручную
- В настройках Social Stream выберите Очистить оверлей бота сейчас.
- При включённом Remote API Control откройте
https://io.socialstream.ninja/SESSION_ID/clearBotOverlay. - Через WebSocket API отправьте
{"action":"clearBotOverlay"}.
Ручная очистка убирает видимый ответ и очередь ожидающих показа ответов в оверлее бота, но не останавливает уже звучащую речь.
Собственное оформление: собственный CSS, применяемый к обычной созданной ссылке bot.html сохраняет эти возможности. Скопированный или изменённый локальный файл bot.html нужно обновлять, чтобы получать дальнейшие исправления страницы.
Ищите проблему по последнему работающему этапу
| Что вы видите | Вероятная причина | Что проверить |
|---|---|---|
| Проверка провайдера не проходит | Настройка провайдера | Адрес API, ключ, имя модели, состояние локального сервиса, CORS и межсетевой экран, квота провайдера и точная ошибка под кнопкой проверки. |
401 missing_scope / model.request | Разрешения ключа OpenAI | Используйте обычный ключ нужного проекта, а не Admin; проверьте разрешение запросов к моделям; замените старый сохранённый ключ; если автоматический перевод нарушил работу элементов управления, повторите проверку на исходной английской странице OpenAI Platform. Пополнение баланса не добавляет это разрешение. |
401 invalid_api_key или неправильный API-ключ | Ключ OpenAI | Проверьте, нет ли пропущенного символа или пробела, не удалён и не деактивирован ли ключ, выбраны ли нужные организация и проект и не использует ли Social Stream старый сохранённый ключ. |
429 ошибка квоты или ограничения частоты | Оплата или ограничения провайдера | Проверьте оплату API и бюджет проекта отдельно от подписок ChatGPT; затем уменьшите частоту запросов или подождите, если провайдер сообщает о временном ограничении частоты. |
| Подключение есть, но сообщение зрителя отсутствует в док-панели | Захват чата | Включён ли Social Stream, открыто ли окно источника, выполнен ли вход на платформу, настройки разрешений и фильтров источника и открыт ли нужный чат трансляции. |
| Сообщение доходит до док-панели, но ответ не появляется в оверлее бота | Решение основного бота | Убедитесь, что сообщение пришло прямо из исходного чата, затем проверьте включение основного бота, совпадение триггера, режим «только модераторы», заданное имя бота, ограничения занятости и интервала, дополнительные инструкции и временный режим без отсеивания ответов. |
| Ответ появляется в оверлее, но не в чате платформы | Выбор пути обратной отправки | Режим вывода только в оверлей, поддержка отправки платформой и источником, авторизация учётной записи, доступность поля чата, выбор по ролям учётных записей и настройка Disable host chat. |
| Ответ остаётся видимым после озвучивания | Время отображения оверлея бота | В параметрах оверлея бота включите скрытие после озвучивания, автоматическое скрытие по длине или фиксированное время показа. Используйте clearBotOverlay для ручной очистки через API. |
!bot ничего не делает | Фильтрация команд | Используйте обычное слово как триггер или разрешите эту команду в общем фильтре команд. |
| Обрабатывается только первая проверка | Время | Дождитесь активного запроса, соблюдайте интервал и помните, что удержание модели в памяти со значением 0 может добавлять холодный запуск к каждому запросу. |
Личный chatbot.html пустое | Отдельный личный бот | Включите личного бота и используйте созданную ссылку с тем же сеансом. Это не проверяет основного бота для чата трансляции. |
Другие страницы ИИ-ботов
Основной бот, личный чат, бот-цензор и ИИ-соведущий — отдельные инструменты с разными настройками и историей.
Об остальных функциях ИИ см. Руководство по режимам ИИ.