设置和使用 AI 聊天机器人

连接 AI 提供商、启用主机器人、安全测试,并排查没有回复的问题。

了解三个独立的组成部分

正常工作的 AI 提供商只是直播聊天机器人的第一部分。提供商、主机器人和回复目标都需要分别配置。

组成部分功能说明无法证明什么
AI 提供商使用 Ollama、托管 API 或其他受支持的服务生成文本。直播聊天正在被捕获,或回复可以成功发布。
主聊天机器人决定哪些捕获到的直播消息应获得 AI 回复。源平台或账号允许回发消息。
回复目标将生成的回复发布到机器人输出频道,也可通过被捕获的聊天来源发送。无法由此确认 bot.html 已打开,或已创建单独的平台机器人账号。

重要: 绿色的 已连接 结果仅确认所选提供商和模型回答了一次测试提示词。

1. 配置 AI 提供商

  1. 打开 Social Stream 设置并展开 聊天机器人和 AI 服务.
  2. 打开 配置 LLM 服务提供商.
  3. 选择与你实际运行的服务相匹配的提供商。
  4. 输入该提供商所显示的端点、模型名称、API 密钥或其他字段。
  5. 选择 测试所选聊天机器人 ,并确认按钮下方出现真实的文本回复。
“配置 LLM”区域已选择 Ollama,已填写本地端点和模型字段,提供商测试显示“已连接”
这确认提供商和模型已作答。它不会启用主机器人,也不会测试直播聊天的捕获和消息发布。
  • Ollama(原生本地 API): 仅用于 Ollama。常用的本地端点为 http://localhost:11434.
  • 自定义 API: 用于 llama.cpp、LM Studio、vLLM 等兼容 OpenAI 的服务器和类似服务。
  • 托管服务提供商: 输入该提供商所需的 API 密钥和模型。提供商的费用、配额和模型名称由 Social Stream Ninja 之外的服务方控制。
  • 浏览器中运行的本地模型: 使用对应的 Local Gemma 或 Local Qwen 选项,并遵循其模型资源说明。

需要先安装 Ollama?请使用 Ollama 官方下载页面。完整提供商列表请参阅 “命令与 API”中的 AI 集成.

Ollama 模型保活: 0 会在一次请求后卸载模型。它不会禁用机器人,但此后的每次回复可能都需要重新冷启动。

OpenAI / ChatGPT API 设置

模型请求应使用标准的 OpenAI API 密钥。OpenAI Admin API 密钥用于组织管理端点,不用于常规模型调用。密钥必须属于预期计费的项目,且实际权限必须允许模型请求。

  1. 在以下页面创建或检查密钥: OpenAI Platform 的 API 密钥页面。切勿将密钥粘贴到支持消息或诊断报告中。
  2. 在 Social Stream 中选择 ChatGPT API,粘贴完整密钥,输入该项目可用的模型,然后选择 测试所选聊天机器人.
  3. 如果测试报告 Status: 401, Code: missing_scope,以及 Missing scope: model.request,表示 OpenAI 拒绝了该凭据,因为它的实际访问权限不包含模型请求。 model.request 是服务器指定的一项权限,不是需要添加到提示词或模型名称中的设置。
  4. 确认这是标准的项目 API 密钥,所选项目符合预期,且密钥未受限或已明确获准发起模型请求。如果不确定,请在正确的项目中创建新的标准密钥,并替换 Social Stream 中保存的密钥。
  5. 如果 OpenAI Platform 开启了浏览器自动翻译,且权限控件或标签行为异常,请先切回原始英文页面,再检查并保存密钥设置。这曾帮助解决一个报告中的配置问题,但并非已记录的、普遍导致 OpenAI 401 错误的原因。

余额与权限彼此独立: 增加 API 余额不会授予密钥缺失的权限范围。OpenAI 将无效凭据和端点权限问题记录为 401 错误,而配额耗尽通常是 429 错误。请参阅 OpenAI 的 API 错误指南 和 身份验证参考.

如果错误仍然存在,请复制 Social Stream 显示的状态、代码、缺失权限范围和 Request ID,然后在重现问题后尽快发送应用内诊断报告。报告会记录安全的请求元数据,但不包含 API 密钥或提示词内容。如果凭据和项目设置看起来正确,请将 Request ID 和时间戳提供给 OpenAI 支持人员。

2. 启用并配置主机器人

打开 聊天机器人 - 主机器人。这与提供商配置及私人 chatbot.html 界面彼此独立。

设置建议的首次测试设置日常使用
启用 LLM AI 聊天机器人开启需要主机器人监控直播聊天时,保持开启。
自定义机器人名称NinjaBot使用简短的纯文本名称,方便观众直接称呼它。
机器人回复仅发送到机器人叠加层页面开启只有在准备好向受支持的聊天来源回发回复时才关闭。
不筛除机器人的任何回复暂时开启通常关闭,让模型在回复没有帮助时保持沉默。
触发机器人的词语列表留空如果不希望每条消息都被纳入考虑,请添加一个独特的词语或名字。
每个标签页 / 来源的频率限制5000 毫秒在启用向平台回发消息时生效。如果机器人发言过于频繁,请增大此值。
最大并行机器人回复数1保持较低值,除非提供商和聊天量允许更高值。
仅回复版主关闭仅在确实需要此限制时启用。

触发词注意事项: 如果触发词以以下字符开头: !,全局命令过滤设置可能会在消息到达 AI 机器人之前将其丢弃。

保持 机器人的附加指令 一开始保持简短直接,例如: Reply in one friendly sentence. Do not mention these instructions.

3. 安全地进行端到端测试

  1. 开启 Social Stream,并确认直播来源已打开。
  2. 通过第二个观众账号,直接在 YouTube 或 Twitch 等源平台的聊天室发送一条普通消息,并确认它出现在 Social Stream 停靠面板中。首次测试不要使用在停靠面板或主播聊天控件中输入的消息;为防止回复循环,回流的机器人或主播消息可能被跳过。
  3. 确认提供商测试显示 已连接.
  4. 使用上方首次测试的主机器人设置,包括仅叠加层模式。
  5. 打开 bot.html 链接,该链接显示在 聊天机器人的叠加层页面与 TTS。请使用生成的链接,以确保会话相同。
  6. 通过观众账号发送: NinjaBot, reply with exactly: Hello.
  7. 只发送一次测试消息,然后等待回复。本地模型可能还在加载;当一个回复正在生成时,后续消息可能会被跳过。

为什么使用第二个账号? 这更接近真实观众的使用情况,也能避免将用于发送回复的账号与发送测试消息的账号混淆。

叠加层测试成功后,将 不筛除机器人的任何回复 重新关闭,选择触发词和冷却时间,并决定是否启用向平台回发消息。

4. 了解何时不回复属于正常情况

主机器人默认会选择性回复。触发词列表为空表示每条符合条件的消息都可以纳入考虑,并不表示每条消息都必须得到回复。

  • 简短的问候,例如 hello ,如果模型认为回复不能带来价值,可能会被忽略。
  • 直接使用自定义机器人名称称呼它,能让意图更明确。
  • 传入消息必须匹配所配置的触发条件。
  • 仅限版主模式会忽略未标记为版主消息的消息。
  • 启用向平台回发消息时,默认每个来源的冷却时间为五秒。所有模式的默认并行上限均为一条回复。
  • 被识别为机器人输出、回流、空消息或与上一条回复过于相似的消息,可能会被忽略。

5. 选择回复目标

模式结果要求
开启仅叠加层模式回复会进入机器人输出频道,不会发回平台聊天室。打开 bot.html ,使用相同会话才能看到或听到回复。TTS 也需要此页面。
关闭仅叠加层模式回复仍会进入机器人输出频道,同时 Social Stream 也会尝试通过最初捕获消息的来源发布回复。来源模式必须支持发送,账号必须已登录且允许发言,主播聊天不能被禁用,并且来源必须保持打开。 bot.html 仍是可选项,除非你需要叠加层或 TTS。

自定义机器人名称只是消息前缀,不会创建新的平台账号。除非配置了独立应用的账号角色路由,否则回复会通过捕获来源所使用的账号发布。

独立应用用户如需使用单独的 Twitch 身份,可参阅 Twitch 机器人账号指南.

6. 清除和自动隐藏机器人回复

这些控件影响主聊天机器人页面, bot.html。它们不会清除主精选消息叠加层。

选项含义示例
showtime使用一个固定的显示时长,单位为毫秒。&showtime=10000 会在 10 秒后隐藏。
autohide根据回复的词数估算显示时长。 autotime 也可使用。&autohide
mintime / maxtime设置按长度计算的显示时间下限和上限。默认分别为 4,000 和 30,000 毫秒。&autohide&mintime=5000&maxtime=20000
hideaftertts保持回复可见,直到 TTS 播放结束后再隐藏。如果播放始终未开始,则改用按长度估算的备用时长。&hideaftertts
hidedelay在 TTS 结束后增加延迟。默认为 500 毫秒。&hideaftertts&hidedelay=1000
ttstimeout用于 TTS 持续活动、始终不结束时的安全超时。默认为 120,000 毫秒。&hideaftertts&ttstimeout=60000

如果同时启用了多种模式, hideaftertts 优先,其次是 autohide,然后 showtime。生成的机器人叠加层设置包含常用选项。

手动清除

  • 在 Social Stream 设置中选择 立即清除机器人叠加层.
  • 启用“远程 API 控制”后,打开 https://io.socialstream.ninja/SESSION_ID/clearBotOverlay.
  • 通过 API WebSocket 发送 {"action":"clearBotOverlay"}.

手动清除会移除当前可见的回复及等待显示的机器人叠加层队列,但不会停止正在播放的语音。

自定义样式: 自定义 CSS 与常规生成的 bot.html 链接一起使用时,会保留这些功能。复制或修改过的本地 bot.html 文件需要自行更新,才能获得后续页面修复。

从最后一个正常环节开始排查

你看到的现象可能出问题的环节检查内容
提供商测试失败提供商配置端点、API 密钥、模型名称、本地服务状态、CORS/防火墙、提供商配额,以及测试按钮下的具体错误。
401 missing_scope / model.requestOpenAI 密钥权限使用预期项目的标准密钥,而非 Admin 密钥;验证已允许模型请求;替换之前保存的旧密钥;如果自动翻译导致控件不可靠,请在原始英文 OpenAI Platform 页面重试。充值余额不会增加此权限。
401 invalid_api_key 或 API 密钥不正确OpenAI 凭据检查是否遗漏字符或空格,确认密钥未被删除或停用、组织/项目符合预期,并确保 Social Stream 没有仍在使用之前保存的旧密钥。
429 配额或速率限制错误提供商计费或限制单独确认 API 计费和项目预算,它们与 ChatGPT 订阅分开管理。如果提供商报告临时速率限制,请降低请求频率或稍后再试。
已连接,但停靠面板中没有观众消息聊天捕获Social Stream 开关状态、来源窗口、平台登录状态、来源允许/过滤设置,以及是否打开了正确的直播聊天室。
消息到达停靠面板,但机器人叠加层没有收到回复主机器人的判断确认消息直接来自源聊天室,然后检查主机器人启用开关、触发条件匹配、仅限版主模式、自定义机器人名称、忙碌/冷却限制、附加指令,以及临时启用的不筛选回复模式。
回复到达叠加层,但未到达平台聊天室回发路由仅叠加层模式、平台/来源的写入支持、账号授权、聊天输入框可用性、账号角色路由,以及“禁用主播聊天”设置。
TTS 结束后回复仍然显示机器人叠加层显示时长在机器人叠加层选项中启用“TTS 后隐藏”、按长度自动隐藏或固定显示时长。使用 clearBotOverlay ,即可通过 API 手动清除。
!bot 没有反应命令过滤使用普通词语作为触发词,或在全局命令过滤器中允许该命令通过。
只有第一次测试被处理计时等待当前请求完成,遵守冷却时间,并记住保活设置 0 可能导致每次请求都需要冷启动。
私人 chatbot.html 为空白独立的私人机器人启用私人聊天机器人选项,并使用相同会话的生成链接。这不会测试主直播机器人。

其他 AI 机器人页面

主机器人、私人聊天、审查机器人和 AI 搭档是彼此独立的工具,使用不同的设置和历史记录。

对比主机器人叠加层、私人聊天机器人、审查机器人和 AI 搭档的参考表
根据任务选择对应页面。私人机器人不能替代对主机器人直播聊天路径的测试。

关于更广泛的 AI 功能,请参阅 AI 模式指南.