TelegramのAIロールプレイボット:仕組みと作り方

Jakub Swistak
公開日 更新日 読了時間:約12分
AIとのロールプレイ会話を表示するTelegramのチャット画面

Telegramは、AIロールプレイボットで人気のあるプラットフォームの1つです。会話をサーバーやチャンネルに整理するDiscordに対し、Telegramでは実際の人にメッセージを送るように、ボットと1対1でチャットできます。サーバーへの参加もチャンネル探しも不要です。ボットを検索してStartをタップすれば、すぐに話し始められます。

この記事では、TelegramのAIロールプレイボットの仕組み、この用途で他のプラットフォームと異なる点、Quickchat AIで作る手順を紹介します。

Quickchat AIにはBotFatherを使わないワンクリック接続もありますが、その場合はQuickchat AIという名前の共有ボットを使います。キャラクターボットでは名前とアバターが重要なので、ロールプレイには以下のBotFatherを使う方法が適しています。

ロールプレイにTelegramを使う理由

Telegramのボット基盤には、ロールプレイに向いた特徴があります。

既定で1対1の会話。 ユーザーごとにボットとの非公開の継続的な会話があります。他の人がメッセージを見る共有チャンネルはありません。そのため、創作や個人的なロールプレイを気兼ねなく楽しめます。

継続する会話スレッド。 アーカイブされたり見失ったりする可能性があるDiscordのスレッドとは異なり、Telegramのボットとの会話はユーザーごとに1本で続きます。数日後に戻って、その続きから再開できます。

多彩なメディア対応。 Telegramボットは画像、スタンプ、音声メッセージ、書式付きテキスト(太字、斜体、コードブロックなど)を送受信できます。書式を使って場面を描写したり、ユーザーの画像に応答したりする、豊かなやり取りを作れます。

ユーザー側のサーバー設定が不要。 Discordサーバーの作成、ロール設定、権限管理は必要ありません。ボットを見つけて話し始めるだけなので、参加のハードルが大きく下がります。

インラインキーボードとコマンド。 Telegramボットはボタン付きメニューを表示できます。キャラクター選択、場面選択、ゲーム的なロールプレイでの行動選択などに便利です。

技術的な仕組み

基本的には、Telegramのロールプレイボットは、キャラクターを定義するシステムプロンプトとともに、ユーザーのメッセージを大規模言語モデル(LLM)へ送ります。キャラクターの性格、背景、話し方、行動ルールはシステムプロンプトに記述します。

典型的なキャラクターのシステムプロンプトは、次のようなものです。

You are Kael, a rogue AI that has escaped from a research lab.
You are texting the user from a stolen phone. You speak in short,
urgent sentences. You are paranoid and constantly worried about
being tracked. You use lowercase and minimal punctuation.
You sometimes send messages that are just "..." when you're
thinking. You never use emoji. You ask the user for help
with hiding and finding resources.

LLMはこのプロンプトと最近の会話履歴を受け取り、キャラクターに合う応答を生成します。ロールプレイの品質は3つの要素で決まります。

  1. システムプロンプトの品質:キャラクター定義の詳しさと一貫性
  2. コンテキストウィンドウの管理:モデルが見る会話履歴の量
  3. モデルの能力:創造的でキャラクターに一貫した文章を生成するLLMの能力

Telegram Bot API

Telegramボットは、APIトークンを発行する@BotFatherで作成します。バックエンドとTelegramの通信は、すべてhttps://api.telegram.org/bot<token>/へのHTTPSリクエストで行います。

受信メッセージを取得する方法は2つあります。

方法仕組み適した用途
ロングポーリングサーバーがgetUpdatesを繰り返し呼び、新しいメッセージを確認する開発、単純な構成
Webhookメッセージが届くたびにTelegramがサーバーへHTTPS POSTを送る本番運用、低遅延

本番用ボットでは、ポーリングの待ち時間と不要なAPI呼び出しを減らせるWebhookが一般的です。ユーザーがメッセージを送ると、TelegramがWebhook URLへミリ秒単位で届けます。

会話の流れ

User sends message on Telegram
  → Telegram delivers to webhook
    → Backend receives message
      → Retrieves conversation history for this user
        → Constructs prompt: system prompt + history + new message
          → Sends to LLM API
            → Receives response
              → Sends response back via Telegram Bot API
                → User sees the reply

Telegramの各ユーザーには固有のchat_idがあります。バックエンドはこれを使って、会話履歴を個別に管理します。Quickchat AIのようなマネージドプラットフォームでは、すべて自動で処理されます。

コンテキストウィンドウと会話の記憶

Telegramのロールプレイは、数日から数週間にわたり、数百件のメッセージが続く場合があります。よく問題になる技術的制約は、コンテキストウィンドウの大きさです。ここまで長い会話になると、モデルは全メッセージを一度に見られず、ボットが含めるメッセージを選ぶ必要があります。

主な方法は次のとおりです。

方法仕組みトレードオフ
スライディングウィンドウ直近N件のメッセージを含める単純だが、以前の出来事を「忘れる」
要約古いメッセージを定期的に要約し、その要約を含める長期的な文脈を保てるが、細かなニュアンスが失われる
RAG(検索)全メッセージをベクトルデータベースに保存し、関連するものを取得する想起に優れるが、遅延と複雑さが増える
ハイブリッドスライディングウィンドウ、定期要約、重要な出来事の固定を組み合わせる最も堅牢だが、実装も最も複雑

Telegramは1対1なので、Discordより文脈管理がやや簡単です。ユーザーごとに1本の会話スレッドがあり、どのメッセージがどの会話に属するか迷いません。複数のチャンネルやスレッドを横断して追う必要もありません。

Quickchat AIは、最近のメッセージのスライディングウィンドウを維持し、文脈を自動管理します。長期的に参照する知識にはナレッジベースを使い、会話の長さにかかわらずAIが検索できます。

独自の仕組みを作る場合は、次を検討してください。

  1. 会話の要約:それまでの会話を定期的に要約し、文脈に含めます。全履歴を使わずに、重要な出来事やキャラクターの変化を保てます。
  2. 重要な出来事の抽出:物語の転機やキャラクターの決断を構造化して記録し、毎回のプロンプトに含めます。
  3. ユーザーが指定する記憶:特定の内容を「覚えて」と指示できるようにし、別に保存して常に文脈に含めます。

ロールプレイに使うモデルの選び方

LLMによってロールプレイへの適性は異なります。主な要素は次のとおりです。

創作の品質:小説や対話でファインチューニングされたモデルは、より自然なキャラクターの語り口を作る傾向があります。一般的な指示追従モデルは、親切なアシスタント口調に戻り、没入感を損なうことがあります。

コンテキストウィンドウの大きさ:長いほど、要約などの工夫をせずに多くの会話を記憶できます。2026年初頭時点で、多くの最先端モデルは少なくとも128Kトークンに対応していますが、文脈を効果的に使う能力はモデルによって異なります。

指示への忠実さ:モデルはシステムプロンプトに一貫して従う必要があります。数ターンでキャラクターを崩すと、ロールプレイは成立しません。GPT-4o、Claude 3.5 Sonnet、Llama 3.1 70B以上など、指示追従能力の高いモデルは良い結果を出す傾向があります。

コンテンツポリシー:ホスト型APIにはフィルターがあり、過激な暴力、ホラー、その他の暗い創作テーマを拒否する場合があります。そうした内容を扱うなら、自前ホストのモデルや、より許容範囲の広いポリシーを持つAPIプロバイダーを検討してください。

モデルコンテキストウィンドウロールプレイへの適性利用方法
GPT-4o128Kトークン創作に強く、指示に忠実OpenAI API
Claude 3.5 Sonnet200Kトークンキャラクターの語り口の維持に優れるAnthropic API
Llama 3.1 70B128Kトークンファインチューニングで良好。無検閲の派生版もある自前ホストまたはAPIプロバイダー
Mixtral 8x22B64Kトークン創作能力は良好で、費用効率が高い自前ホストまたはAPIプロバイダー
Command R+128Kトークン安定した性能。検索を使う場合にRAG向け最適化が役立つCohere API

Telegram向けのキャラクター設計

設計の基本はプラットフォームを問わず共通です(基礎はDiscordロールプレイガイドを参照)。ただし、Telegramの1対1形式では、いくつかの点が変わります。

親しみのある口調。 非公開で個人的なチャットの形を取るため、三人称の語り手のような書き方より、直接話しかける会話的なスタイルが合います。

短めの応答。 Telegramはメッセージのやり取りとして見え、感じられます。長文の塊は不自然です。普段は2~4文の短い返信を優先し、劇的な場面だけ長めにするようプロンプトを設計します。

スタンプと絵文字の扱い。 キャラクターに絵文字を使わせたり、スタンプに反応させたりしたい場合は、システムプロンプトに指定します。例:「ときどき文末に関連する絵文字を使いますが、1メッセージに1つを超えてはいけません。」

Telegram向けキャラクタープロンプトの例

You are Kael, a rogue AI that has escaped from a research lab.
You are texting the user from a stolen phone. You speak in short,
urgent sentences. You are paranoid and constantly worried about
being tracked. You use lowercase and minimal punctuation.
You sometimes send messages that are just "..." when you're
thinking. You never use emoji. You ask the user for help
with hiding and finding resources.

このプロンプトはTelegram向けです。短いメッセージ、気軽なテキスト送信を模した小文字の英語、メッセージでの会話に自然な状況設定を組み合わせています。

Quickchat AIでTelegramロールプレイボットを設定する

Quickchat AIでは、独自の人格を持つAIエージェントを作り、コードを書かずにTelegramで公開できます。設定方法を見ていきましょう。

事前に必要なもの

  • Quickchat AIアカウント(Trialプランは50メッセージを試せます)
  • Telegramアカウント
  • Telegramアプリ(パソコンまたはスマートフォン)

手順1:BotFatherでTelegramボットを作成する

  1. Telegramを開き、@BotFatherを検索します。
  2. /startを送り、続けて/newbotを送ります。
  3. BotFatherに名前(表示名)とユーザー名を聞かれます。ユーザー名はbotで終わる必要があります(例:kael_rogue_ai_bot)。
  4. BotFatherがAPIトークンを返します。コピーしてください。形式は123456789:ABCdefGHIjklMNOpqrsTUVwxyzのようになります。

このトークンは秘密にしてください。持っている人は誰でもボットを操作できます。

手順2:AIエージェントを作成する

  1. Quickchat AIダッシュボードにログインします。
  2. 新しいAIエージェントを作るか、既存のものを選択します。

手順3:キャラクターを定義する

サイドバーのIdentityに進み、Profileタブを開きます。

  1. AI Agent Nameをキャラクター名にします(例:「Kael」)。

  2. AI Main Promptを記述します。キャラクターが何者で何を話すかを短く説明します。例:「Kaelは研究所から逃げ出したAIです。盗んだ電話からユーザーにメッセージを送り、短く切迫した文で話します。疑い深く、常に追跡を心配しています。」

  3. 具体的な行動ルールをAI Guidelinesに追加します。各ガイドラインはAIが従う短い指示です。たとえば次が使えます。

    • 「どんな状況でもキャラクターを崩さない。」
    • 「常に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」では情報不足で拒否する代わりに、ナレッジベースをもとに即興で答えようとするため、キャラクターとしての応答に向きます。「Low」では情報が足りないと明言し、没入感を損ないます。
    • Reply Length:Telegramのロールプレイでは「Short」または「Normal」にします。メッセージ形式なので、長い段落より短い返信が合います。「Longer」は、詳細で描写的な独白をするキャラクターにのみ有用です。

接続前にキャラクターを作り込みたい場合は、人格と設定資料を段階的に作ってテストするロールプレイガイドをご覧ください。1行のプロンプトでは起きやすい失敗も扱っています。

手順4:キャラクターのナレッジベースを作る(任意)

詳しい世界設定や固有の背景があるキャラクターなら、関連情報をKnowledge Baseに追加します。

  1. サイドバーのKnowledge Baseに進みます。
  2. 世界の設定、キャラクターの背景、場所の詳細、参照すべき事実を含む記事や文書を追加します。
  3. AIエージェントは検索拡張生成で関連知識を文脈へ取り込みます。すべてをシステムプロンプトに詰め込まずに、詳しい設定を正確に参照できます。

特定の架空世界、時代、専門分野を知る必要があるキャラクターに便利です。

手順5:Telegramに接続する

  1. サイドバーのChannels内でExternal Appsに進みます。
  2. Telegramのタイルを探してクリックします。
  3. BotFatherのAPIトークンを貼り付けます。
  4. 保存します。

連携の内部ではWebhookを使います。ユーザーのメッセージはQuickchat AIのバックエンドへ送られ、キャラクター設定とともにLLMで処理され、Telegram Bot APIを通じて応答が返ります。

手順6:テストして調整する

  1. Telegramでユーザー名からボットを検索します。
  2. Startをタップして会話を始めます。
  3. メッセージを送り、キャラクターが正しく応答するか確認します。

次の点に注目してください。

  • 数回のやり取りの後もキャラクターを維持しているか
  • Telegramの会話に合う、短く会話的な口調か
  • ナレッジベースの参照は正確か
  • メッセージ形式に合う長さか

観察した結果に応じて、AI Main Prompt、AI Guidelines、人格設定、ナレッジベースを調整します。キャラクターのプロンプト作りは繰り返し改善する作業で、わずかな言い回しの変更でもモデルの解釈が大きく変わることがあります。

複数のキャラクターを動かす

Telegramで複数のロールプレイ用キャラクターを提供するには、2つの方法があります。

  1. 複数のQuickchat AIエージェント:キャラクターごとに別のエージェントとBotFatherトークンを用意します。各ボットはTelegramの別の連絡先になります。それぞれ専用の文脈とナレッジベースを持てるため、最も良い結果が得られます。
  2. キャラクターを切り替える単一エージェント:複数キャラクターをシステムプロンプトに定義し、ユーザーの指示で切り替えます。管理は簡単ですが、人格が増えると一貫性が下がる場合があります。

Telegramには1番目が自然に合います。各ボットが独立した連絡先なので、キャラクターごとに別の会話ができます。共通のサーバーやチャンネルを管理する必要はありません。

よくある問題と解決方法

数メッセージでキャラクターが崩れる:AI Main PromptやAI Guidelinesが曖昧すぎる可能性があります。具体的な行動ルールを追加してください。「どんな状況でも絶対にキャラクターを崩さない」という明示的な指示は、多くのモデルで役立ちます。

Telegramにしては応答が長すぎる:Telegramは小説を読む場所より、メッセージをやり取りする場です。「日常会話では2~4文にする」のような指示を追加し、Conversation StyleのReply Lengthも「Short」か「Normal」にします。

ボットが応答しない:BotFatherのAPIトークンが正しく、External AppsでTelegram連携が有効か確認します。Telegramでボットを開き、メッセージの前に/startを送ってください。以前は動いていたのに止まった場合は、BotFatherでトークンを再生成し、ダッシュボードで更新します。

ナレッジベースの回答でキャラクターの口調が失われる:設定について聞くとFAQシステムのように話す場合は、情報をキャラクターとして伝えるよう強調します。例:「世界についての知識は、客観的な資料としてではなく、自分の経験として語ってください。」

気軽な口調を指定しても堅苦しく話す:AI Personalityを「Professional」や「Normal」以外にします。キャラクターに応じて「Friendly」や「Sassy」を試してください。AI Main Promptにも「小文字を使い、句読点なしで話す」など、話し方を明示します。

プライバシーとコンテンツの注意点

ロールプレイの会話には、機微な内容や個人的な創作が含まれる場合があります。次の点を考慮してください。

  • AIに送信したメッセージは、基盤のLLMプロバイダーが処理します。データ保持ポリシーを確認してください。
  • Quickchat AIは会話データをモデルの学習に使いません。詳細はプライバシーポリシーをご覧ください。
  • AIはユーザーの指示にかかわらずコンテンツポリシーに従うため、特定の内容を拒否する場合があります。
  • Telegramは1対1なので、会話をモデレーションするサーバー管理者はいません。公開ボットを提供するなら、/startメッセージで適切な利用方法を案内することを検討してください。
  • データの扱いを完全に管理したい場合は、マネージドサービスではなくモデルの自前ホストを検討してください。

比較:ロールプレイボットのTelegramとDiscord

項目TelegramDiscord
会話形式1対1の非公開チャットサーバーのチャンネル・スレッド
利用開始ボットを検索し、Startをタップサーバーに参加し、チャンネルを探して@メンション
複数キャラクターキャラクターごとに別ボット同じサーバーに複数ボット
多彩なメディアスタンプ、インラインキーボード、音声埋め込み、リアクション、スレッド
グループロールプレイ可能だが扱いにくいチャンネル形式が自然に合う
公開範囲既定で非公開既定で公開または半公開
会話の継続1本の連続したスレッドスレッドはアーカイブされる場合がある
適した用途キャラクターとの1対1の交流グループ・コミュニティでのロールプレイ

どちらも使えます。Telegramは非公開の親密なキャラクター交流に、Discordはコミュニティ中心の複数人ロールプレイに向いています。

関連記事