Google Chatボットに親しみやすいペルソナを実装する — Geminiのシステムプロンプトでユーザー名挨拶とemoji活用

Google Chatボットに親しみやすいペルソナを実装する — Geminiのシステムプロンプトでユーザー名挨拶とemoji活用

Google Chat上のGemini RAGボットに「親しみやすさ」を加える実装を紹介します。ユーザー名での呼びかけ、emojiの配置戦略、システムプロンプトのトーン調整により、技術的正確さを保ちながら温かみのある回答を実現しました。
2026.07.25

はじめに

Google Chat上で動作するRAGベースの社内ITサポートボットを運用しています。Gemini + Vertex AI RAG Engineで構築したこのボットは、ナレッジベースに基づいて正確な回答を返してくれるのですが、ひとつ課題がありました。

回答が正確だけど、冷たい。

「VPNが繋がりません」と聞くと、淡々と手順を返してくれる。正しいけど、まるでマニュアルを読んでいるような感覚。社内ツールとして毎日使ってもらうには、もう少し「話しかけやすさ」が欲しいところです。

そこで、ボットのペルソナに親しみやすさを加える実装をやってみました。

方針: 「丁寧で親しみやすい、でもはしゃがない」

チャットボットのペルソナ設計について調べてみると、一貫して出てくる警告があります。

Over-humanizing creates expectations the system cannot meet.

つまり、ボットを陽気にしすぎると「人間と話している」という期待が生まれ、それに応えられないとき(例: ナレッジベースに情報がない場合)の失望が大きくなるということです。

特にITサポートの文脈では、ユーザーはVPNが繋がらない、プリンターが動かないなど困っている状態で質問してきます。「🎉 素晴らしい質問ですね!」と返されたら逆効果です。

そこで以下の方針を立てました。

  • 境界部分に温かさを置く — 挨拶、フォローアップのヒント、エスカレーション案内
  • 技術的な回答本文はクリーンに保つ — emojiなし、手順は簡潔に
  • ユーザーの名前で呼びかける — ただし最初の1回だけ

実装

1. Google Chat APIからユーザー名を取得する

Google Chatのイベントペイロードには sender.displayName が含まれています。これはすでに取得していましたが、ログ記録にしか使っていませんでした。

main.py
sender_obj = message.get("sender", {})
sender = sender_obj.get("displayName", "someone")

この sender(表示名)をRAG生成パイプラインに渡すようにします。

2. Geminiの生成テンプレートにユーザー情報を追加する

生成テンプレートに {sender} プレースホルダを追加し、Geminiがユーザーの名前を認識できるようにします。

bot/prompts.py
GENERATION_TEMPLATE = """\
以下のナレッジベースの情報を参考に、ユーザーの質問に回答してください。

## ユーザー情報
名前: {sender}

## ナレッジベース検索結果

{context}

## ユーザーの質問

{question}

## 回答
"""

会話履歴がある場合のテンプレート(GENERATION_TEMPLATE_WITH_HISTORY)にも同様に追加します。

3. システムプロンプトのトーン指示を調整する

ここが今回の実装の核心です。システムプロンプトのトーンセクションを以下のように変更しました。

変更前:

## トーン
- 丁寧だが簡潔(です/ます調)
- 技術用語はそのまま使用(社員はIT用語を理解している前提)

変更後:

## トーン
- 丁寧で親しみやすい(です/ます調)
- スレッド内の最初の回答では「{sender}さん、」と名前で呼びかけてから回答を始める
- フォローアップ(会話履歴がある場合)では名前の呼びかけは不要
- 技術用語はそのまま使用(社員はIT用語を理解している前提)
- 回答本文にはemojiを使わない(手順やステップの説明はクリーンに保つ)
- エスカレーション案内など末尾の補足行では軽いemojiを使ってよい(🙏 等)

ポイントは 「やること」と「やらないこと」の両方を明示している 点です。LLMは指示がないと「親しみやすく」を拡大解釈してemojiを回答中に散りばめることがあります。「回答本文にはemojiを使わない」と明示することで、温かさの範囲をコントロールしています。

4. generate_answer() にsenderを渡す

RAGパイプラインの生成関数にsenderパラメータを追加します。

bot/rag.py
def generate_answer(question: str, contexts: list[dict],
                    history: list[dict] | None = None,
                    sender: str = "") -> RagAnswer:
    # ...
    if history:
        prompt = GENERATION_TEMPLATE_WITH_HISTORY.format(
            sender=sender, history=history_str,
            context=context_str, question=question,
        )
    else:
        prompt = GENERATION_TEMPLATE.format(
            sender=sender, context=context_str, question=question,
        )

ワーカーからは単に sender を渡すだけです。

bot/worker.py
result = generate_answer(user_text, contexts, history=history or None,
                        sender=sender)

5. ウェルカムカードにemojiを追加する

ボットがスペースに追加されたときや /help コマンドで表示されるウェルカムカードのセクションヘッダーにemojiを追加しました。

bot/cards.py
{"header": "💻 サポート範囲", "widgets": [...]},
{"header": "💬 使い方", "widgets": [...]},
{"header": "📝 質問の例", "widgets": [...]},

ここはUI上の「飾り」なので、emojiが自然に馴染みます。

6. エスカレーションテキストを温かく

ナレッジベースに情報がなかった場合のエスカレーション案内も、少しだけ柔らかくしました。

変更前:

担当部署にお問い合わせください(Google Chat または helpdesk@example.com)。

変更後:

担当部署にお気軽にお問い合わせください(Google Chat または helpdesk@example.com)🙏

「お気軽に」の追加と末尾の🙏で、「回答できなかった申し訳なさ」と「次のアクションへの促し」を表現しています。

結果

変更後のボットの振る舞いは以下のようになります。

初回の質問:

ユーザー: VPNが繋がりません

ボット: 田中さん、VPN接続のトラブルシューティングについて、以下をお試しください。

  1. VPNクライアント を再起動します。
  2. Wi-Fiまたは有線LANの接続状態を確認します。

上記で解決しない場合は、担当部署にお気軽にお問い合わせください(Google Chat または helpdesk@example.com)🙏

💡 このスレッドで追加の質問もできます(24時間以内)

フォローアップの質問(同一スレッド内):

ユーザー: それでも繋がらない場合は?

ボット: VPNクライアントを一度アンインストールし、再インストールをお試しください。

  1. コントロールパネルプログラムのアンインストール を開きます。
  2. ...

フォローアップでは名前の呼びかけなし。回答本文にemojiなし。技術的な内容はクリーンに保たれています。

emojiの配置戦略まとめ

google-chat-bot-warm-persona-gemini-emoji-placement

場所 emoji 理由
回答本文(手順・説明) ❌ 使わない 技術情報の可読性を優先
パイプライン状態表示 ✅⏳❌⬜ UI要素として元から使用
ウェルカムカードのヘッダー 💻💬📝 視覚的な案内として自然
フォローアップヒント 💡 行動を促すUI要素
エスカレーション案内 🙏 温かさと申し訳なさの表現

まとめ

チャットボットに「親しみやすさ」を加える際のポイントは以下の通りです。

  • 名前での呼びかけは強力だが、1回で十分。 毎回繰り返すとロボット感が増す
  • emojiは「場所」で管理する。 回答本文ではなく、UI境界(挨拶、ヒント、エスカレーション)に配置する
  • やらないことも明示する。 LLMは「親しみやすく」という指示を拡大解釈しがち。「回答本文にはemojiを使わない」と書くことで範囲を制御できる
  • ペルソナは文脈に合わせる。 ITサポートのように「困っているユーザー」が対象の場合、「陽気」よりも「安心感」を目指す

実装自体は小さな変更ですが、「正確だけど冷たい」から「正確で、ちょっと温かい」へ。技術の正確さを犠牲にせずに実現できます。


AI白書2026 配布中

クラスメソッドが独自に行なったAI診断調査をもとに、企業のAI活用の現在地を調査レポートとしてまとめました。企業規模別の活用度傾向に加え、規模を超えてAI活用を進める企業に共通する取り組みまで、自社の現在地を捉えるためのヒントにぜひ。

AI白書2026

無料でダウンロードする

この記事をシェアする

関連記事