Telegram 上的 AI 角色扮演 Bot:原理与构建方法

Jakub Swistak
发布日期 更新日期 阅读时间约 10 分钟
Telegram 聊天界面,显示一段 AI 角色扮演对话

Telegram 已成为 AI 角色扮演 Bot 较受欢迎的平台之一。不同于 Discord(对话按服务器和频道组织),Telegram 提供与 Bot 的 1 对 1 聊天,体验类似于和真人发消息。不需要加入服务器,也不需要寻找频道。你只需搜索 Bot,点击 Start,然后开始对话。

本文介绍 AI 角色扮演 Bot 在 Telegram 上的工作方式,Telegram 在这一用例中与其他平台的区别,以及如何使用 Quickchat AI 分步构建一个这样的 Bot。

Quickchat AI 也提供一键式 Telegram 流程,可以跳过 BotFather,但它使用名为 Quickchat AI 的共享 Bot。角色 Bot 的名称和头像很大程度上决定了它的成败,因此对于角色扮演,下面的 BotFather 路线才是更合适的选择。

为什么选择 Telegram 做角色扮演

Telegram 的 Bot 平台具备一些适合角色扮演的特性:

默认 1 对 1 对话。 每个用户都会与 Bot 进行私密、持久的对话。没有其他人能看到你消息的共享频道。这种隐私性让用户更容易投入到创意或个人化的角色扮演场景中。

持久的对话线程。 不同于可能被归档或丢失的 Discord 线程,Telegram Bot 对话对每个用户来说都是一个单一、连续的线程。用户可以几天后回来,从上次离开的地方继续。

丰富的媒体支持。 Telegram Bot 可以发送和接收图片、贴纸、语音消息和格式化文本(粗体、斜体、代码块等)。这支持更丰富的角色扮演交互,例如 Bot 可以用格式化文本描述场景,或回应用户发送的图片。

用户无需设置服务器。 用户不需要创建 Discord 服务器、配置角色或管理权限。他们只需找到 Bot 并开始聊天。这大幅降低了使用门槛。

内联键盘和命令。 Telegram Bot 可以展示内联按钮菜单,这对角色选择、场景选择,或类游戏角色扮演场景中的行动选项很有用。

技术上如何工作

在基础层面,Telegram 角色扮演 Bot 会把用户消息连同定义角色的系统提示词发送给大语言模型(LLM)。系统提示词用于编码角色性格、背景故事、说话方式和行为规则。

一个典型的角色扮演角色系统提示词可能如下:

你是 Kael,一个从研究实验室逃出的流氓 AI。
你正在用一部偷来的手机给用户发消息。你说话简短,
语气紧迫。你很多疑,总是担心自己被追踪。
你使用小写字母和最少的标点。
你有时会发送只有“...”的消息,表示你正在
思考。你从不使用 emoji。你会请求用户帮助你
藏身并寻找资源。

LLM 会接收这个提示词以及最近的对话历史,并生成符合角色设定的回应。角色扮演质量取决于三件事:

  1. 系统提示词质量:角色定义的详细程度和一致性
  2. 上下文窗口管理:模型能看到多少对话历史
  3. 模型能力:底层 LLM 在创意生成和保持角色一致性方面的表现

Telegram Bot API

Telegram Bot 通过 @BotFather 创建,BotFather 会生成一个 API token。你的后端与 Telegram 之间的所有通信都通过向 https://api.telegram.org/bot<token>/ 发起 HTTPS 请求完成。

接收传入消息有两种方式:

方法工作方式最适合
Long polling你的服务器反复调用 getUpdates 检查新消息开发环境、简单部署
Webhooks每当有消息到达时,Telegram 向你的服务器发送 HTTPS POST生产环境、更低延迟

Webhooks 是生产 Bot 的标准方式,因为它们消除了轮询延迟,并减少了不必要的 API 调用。当用户发送消息时,Telegram 会在毫秒级时间内将其投递到你的 webhook URL。

对话流程

用户在 Telegram 上发送消息
  → Telegram 投递到 webhook
    → 后端接收消息
      → 检索该用户的对话历史
        → 构造提示词:系统提示词 + 历史记录 + 新消息
          → 发送到 LLM API
            → 接收回应
              → 通过 Telegram Bot API 发回回应
                → 用户看到回复

每个 Telegram 用户都有唯一的 chat_id。后端使用它来维护独立的对话历史。使用 Quickchat AI 这类托管平台时,所有这些都会自动处理。

上下文窗口和对话记忆

Telegram 角色扮演对话可能会在数天或数周内持续数百条消息。最常见的技术限制是上下文窗口大小。当对话这么长时,模型无法一次看到所有消息。Bot 必须选择要包含哪些消息。

有几种方法:

策略工作方式取舍
滑动窗口包含最近 N 条消息简单,但角色会“忘记”更早发生的事件
摘要定期总结较早的消息并包含摘要保留长期上下文,但摘要会丢失细节
RAG(检索)将所有消息存储在向量数据库中,检索相关消息召回效果最好,但增加延迟和复杂性
混合方案滑动窗口 + 定期摘要 + 关键事件固定最稳健,但实现最复杂

与 Discord 相比,Telegram 的 1 对 1 形式让上下文管理稍微更简单。每个用户只有一个对话线程,因此不存在判断哪些消息属于哪个对话的歧义。也没有需要跨频道或线程跟踪的内容。

Quickchat AI 通过维护最近消息的滑动窗口自动处理上下文管理。对于更长期的记忆,知识库作为持久引用,AI 可以不受对话长度影响进行查询。

如果你正在构建自定义方案,可以考虑实现:

  1. 对话摘要:定期生成到目前为止的对话摘要,并将其包含为上下文。这可以保留关键事件和角色发展,而无需使用完整消息历史。
  2. 关键事件提取:以结构化格式跟踪重要剧情点或角色决策,并在每次提示词中包含这些内容。
  3. 用户触发的记忆:允许用户让 Bot “remember” 特定事项,这些内容会单独存储,并始终包含在上下文中。

角色扮演的模型选择

并非所有 LLM 都同样适合角色扮演。关键因素包括:

创意写作质量:在小说和对话上微调的模型往往能生成更自然的角色声音。基础指令微调模型通常会默认使用有帮助的助手语气,这会破坏沉浸感。

上下文窗口大小:更长的上下文窗口意味着角色无需摘要技巧就能记住更多对话。截至 2026 年初,大多数前沿模型至少支持 128K token,但对该上下文的有效使用因模型而异。

遵循指令能力:模型需要稳定遵循系统提示词。如果几轮后就脱离角色,角色扮演就会崩坏。具备强指令遵循能力的模型(GPT-4o、Claude 3.5 Sonnet、Llama 3.1 70B+)通常在这里表现更好。

内容政策:托管 API 会执行内容过滤,可能拒绝生成图形化暴力、恐怖或其他黑暗创意小说内容。如果你的角色扮演场景包含这些主题,可以考虑自托管模型,或选择内容政策更宽松的 API 提供商。

模型上下文窗口角色扮演适用性访问方式
GPT-4o128K tokens创意输出良好,遵循指令能力强OpenAI API
Claude 3.5 Sonnet200K tokens非常擅长保持角色声音Anthropic API
Llama 3.1 70B128K tokens微调效果好,有未审查变体可用自托管或 API 提供商
Mixtral 8x22B64K tokens创意写作尚可,成本效益高自托管或 API 提供商
Command R+128K tokens稳定,如果使用检索则针对 RAG 优化Cohere API

面向 Telegram 的角色设计

角色设计原则在不同平台上相同(基础内容见我们的 Discord 角色扮演指南),但 Telegram 的 1 对 1 形式会改变一些动态:

更亲密的语气。 由于对话是私密的,并且格式类似个人聊天,角色通常更适合使用对话式、直接的风格,而不是类似叙述者的第三人称风格。

更短的回应。 Telegram 对话看起来和感觉上都像发消息。大段文字回应会显得不自然。设计角色提示词时,应倾向于较短回复(2-4 句),只在戏剧性时刻偶尔使用较长回应。

贴纸和 emoji 集成。 如果角色应使用 emoji 或回应贴纸,请在系统提示词中说明。例如:“你偶尔会在消息末尾使用相关 emoji,但每条消息最多一个。”

Telegram 的角色提示词示例

你是 Kael,一个从研究实验室逃出的流氓 AI。
你正在用一部偷来的手机给用户发消息。你说话简短,
语气紧迫。你很多疑,总是担心自己被追踪。
你使用小写字母和最少的标点。
你有时会发送只有“...”的消息,表示你正在
思考。你从不使用 emoji。你会请求用户帮助你
藏身并寻找资源。

这个提示词专门为 Telegram 媒介设计:短消息、小写文本(模仿随意发消息),以及一个在消息场景中合理的设定。

使用 Quickchat AI 设置 Telegram 角色扮演 Bot

Quickchat AI 允许你创建带有自定义人设的 AI Agent,并将其部署到 Telegram,无需编写代码。下面是设置一个支持角色扮演的 Bot 的方法。

前提条件

  • 一个 Quickchat AI 账户(Trial 计划提供 50 条消息用于测试)
  • 一个 Telegram 账户
  • Telegram 应用(桌面端或移动端)

第 1 步:使用 BotFather 创建 Telegram Bot

  1. 打开 Telegram,搜索 @BotFather。
  2. 发送 /start 开始,然后发送 /newbot。
  3. BotFather 会要求输入名称(显示名称)和用户名(必须以 bot 结尾,例如 kael_rogue_ai_bot)。
  4. BotFather 会返回一个 API token。复制该 token。它看起来像:123456789:ABCdefGHIjklMNOpqrsTUVwxyz。

请保管好这个 token。任何拥有它的人都可以控制你的 Bot。

第 2 步:创建你的 AI Agent

  1. 登录 Quickchat AI dashboard。
  2. 创建一个新的 AI Agent,或选择一个现有的 AI Agent。

第 3 步:定义角色

在侧边栏中进入 Identity,并打开 Profile 标签页:

  1. 将 AI Agent Name 设置为你的角色名称(例如“Kael”)。

  2. 编写 AI Main Prompt。这是对角色身份以及角色谈论内容的简短描述。例如:“Kael 是一个从研究实验室逃出的流氓 AI。他正在用一部偷来的手机给用户发消息,说话简短而紧迫。他很多疑,总是担心自己被追踪。”

  3. 添加 AI Guidelines,用于指定具体行为规则。每条 guideline 都是 AI 会遵循的一条简短命令。对于角色扮演角色,有用的 guidelines 包括:

    • “在任何情况下都不要脱离角色。”
    • “始终以 Kael 的第一人称回应。”
    • “使用小写字母和最少的标点。”
    • “保持消息简短,像短信一样。不要写超过 3-4 句话。”
    • “思考时有时发送只有‘…’的消息。”
  4. 在 Conversation Style 标签页下,配置以下内容:

    • AI Personality:选择适合你角色的语气。选项包括 Normal、Humorous、Professional、Friendly、Sassy、Intelligent、Empathetic、Bold、Excited、Mysterious、Inspiring、Adventurous 和 Elegant。对于 Kael 这个角色,“Mysterious” 很合适。对于其他角色扮演角色,选择最符合其性格的选项。
    • AI Profession:可用选项包括 Helpful Assistant、Support Agent、Shopping Assistant、Field Expert、Internal Knowledge Expert 和 Interviewer。对于角色扮演角色,“Helpful Assistant” 最灵活,因为其他选项面向特定业务用例。
    • AI Creativity:将其设置为“High”以用于角色扮演。在“High”下,Agent 会基于 Knowledge Base 尝试即兴回答,而不是在缺少信息时拒绝回答,这正是角色内回应所需要的。“Low” 会让 Agent 明确表示它没有足够信息,这会破坏沉浸感。
    • Reply Length:将其设置为“Short”或“Normal”以用于 Telegram 角色扮演。Telegram 对话感觉像发消息,因此较短回复通常比长段落效果更好。“Longer” 只有在你的角色需要给出详细、描述性的独白时才有用。

如果你想在接入频道前进一步完善角色,可以阅读一份完整的角色扮演人设和 canon 构建指南,并经过逐步测试,其中包含单行提示词会遇到的失败模式。

第 4 步:为你的角色构建知识库(可选)

如果你的角色存在于一个详细的世界中,或有特定设定,请将相关信息添加到 Knowledge Base。

  1. 在侧边栏中进入 Knowledge Base。
  2. 添加包含世界设定、角色背景故事、地点细节,或角色应引用的任何事实知识的文章或文档。
  3. AI Agent 使用检索增强生成,将相关知识拉入回答时的上下文,因此角色可以准确引用详细设定,而不必把所有内容都塞进系统提示词。

这对需要了解特定虚构宇宙、历史时期或技术领域的角色很有用。

第 5 步:连接到 Telegram

  1. 在侧边栏中进入 External Apps(位于 Channels 部分下)。
  2. 找到 Telegram 卡片并点击它。
  3. 粘贴来自 BotFather 的 API token。
  4. 保存。

该集成在内部使用 webhooks。当用户在 Telegram 上给你的 Bot 发送消息时,该消息会路由到 Quickchat AI 后端,由 LLM 按照你的角色配置进行处理,然后通过 Telegram Bot API 发回回应。

第 6 步:测试并迭代

  1. 打开 Telegram,并按用户名搜索你的 Bot。
  2. 点击 Start 开始对话。
  3. 发送一条消息,确认角色能正确回应。

请注意:

  • 角色在多轮交流后是否仍保持角色?
  • 语气是否适合 Telegram 对话(简短、对话式)?
  • 知识库引用是否准确?
  • 回应长度是否适合消息格式?

根据观察结果调整 AI Main Prompt、AI Guidelines、personality 设置和知识库内容。角色提示词工程是迭代式的。对措辞的小改动可能会显著影响模型如何解释角色。

运行多个角色

如果你想在 Telegram 上提供多个角色扮演角色,有两个选项:

  1. 多个 Quickchat AI agents:为每个角色创建单独的 AI Agent,每个都有自己的 BotFather token。每个 Bot 在 Telegram 中显示为不同联系人。这能产生最佳结果,因为每个角色都有自己的专用上下文和知识库。
  2. 单个 Agent 加角色切换:使用一个 Agent,通过系统提示词定义多个角色,并指示 AI 根据用户命令切换。这种方式更容易管理,但当人设很多时,角色一致性可能下降。

在 Telegram 上,选项 1 是自然匹配。每个 Bot 都是自己的联系人,用户可以分别与每个角色进行单独对话。不需要管理共享服务器或频道。

常见问题与修复方法

几条消息后角色崩坏:AI Main Prompt 或 AI Guidelines 可能过于模糊。添加更具体的行为规则。添加“在任何情况下都绝不能脱离角色”作为明确 guideline,对大多数模型都有帮助。

回应对 Telegram 来说太长:Telegram 对话感觉像发消息,而不是阅读小说。添加一条指定回应长度的 guideline,例如:“在日常对话中,将回应控制在 2-4 句。”同时在 Conversation Style 设置中将 Reply Length 设置为“Short”或“Normal”。

Bot 不回应:确认 BotFather API token 正确,并且 Telegram 集成已在 External Apps 中启用。打开 Telegram 中的 Bot,并在发送消息前发送 /start。如果 Bot 之前正常工作但后来停止,请在 BotFather 中重新生成 token,并在 dashboard 中更新。

知识库答案覆盖角色声音:如果 Bot 在回答设定问题时开始听起来像 FAQ 系统,请添加一条 guideline,强调所有信息都应以角色身份传达。例如:“分享世界相关知识时,从你的个人经历出发描述,而不是作为事实参考。”

角色使用正式语言,尽管提示词要求随意:将 AI Personality 设置为除“Professional”或“Normal”以外的选项。根据角色尝试“Friendly”或“Sassy”。同时检查 AI Main Prompt 是否明确描述了说话风格(例如“使用小写字母且不使用标点”)。

隐私和内容注意事项

角色扮演对话可能包含敏感或个人化的创意内容。需要记住几点:

  • 发送给 AI 的消息由底层 LLM 提供商处理。请查看该提供商的数据保留政策。
  • Quickchat AI 不会使用对话数据训练模型。详情请查看隐私政策。
  • AI 会遵循其内容政策,不受用户指令影响,因此某些类型的内容可能会被拒绝。
  • Telegram 的 1 对 1 形式意味着没有服务器管理员来审核对话。如果你正在部署公共 Bot,可以考虑在 Bot 的 /start 消息中添加有关适当使用的 guidelines。
  • 如果你需要完全控制数据处理,可以考虑自托管模型,而不是使用托管服务。

对比:Telegram 与 Discord 角色扮演 Bot

因素TelegramDiscord
对话形式1 对 1 私密聊天服务器频道/线程
用户引导搜索 Bot,点击 Start加入服务器,查找频道,@mention
多角色每个角色一个单独 Bot同一服务器中多个 Bot
丰富媒体贴纸、内联键盘、语音Embeds、reactions、threads
群组角色扮演可以,但不太自然与频道天然适配
隐私默认私密默认公开或半公开
对话持久性单一连续线程线程可能被归档
最适合1 对 1 角色互动群组/社区角色扮演

两个平台都可行。Telegram 更适合私密、亲近的角色互动。Discord 更适合社区驱动的多人角色扮演。

延伸阅读