Chatbot
チャットボットとは、テキストまたは音声で自然言語による会話を行うソフトウェアです。ELIZAのようなキーワード照合スクリプトから、ChatGPTのようなLLMチャットアプリまであります。
チャットボットとは、テキストまたは音声を使って自然言語で人々と会話するコンピュータープログラムです。MITで執筆され、1966年に公開されたJoseph WeizenbaumのELIZAは、一般に最初のチャットボットとされています。ELIZAのDOCTORスクリプトは、キーワードに一致させてユーザーの発言を質問に言い換えることで心理療法士を模倣しており、Weizenbaumは、自身の秘書を含むユーザーが、ELIZAに理解されているかのように悩みを打ち明ける様子を見て衝撃を受けました。その後、チャットボットはルールベースのスクリプトからインテントベースのボット、そして大規模言語モデル (LLMs)へと、3世代にわたって発展してきました。2022年11月30日に公開されたOpenAIのChatGPTによって第3世代が一般に広まり、現在「チャットボット」は通常、ChatGPT、Claude、GeminiなどのLLMを使ったチャットインターフェースを指します。
チャットボットの仕組み#
- ルールベースのチャットボット:ユーザーの言葉を手書きのパターンと照合し、テンプレートから回答します。予測しやすく低コストですが、作成者が想定していない表現には対応できません。
- インテントベースのチャットボット:自然言語理解 (NLU)分類器が各メッセージを残高確認などのインテントに分類し、口座や日付などの詳細を抽出したうえで、設計者が作成した対話フローに従って応答を決定します。銀行、航空会社、通信会社がこの方式でカスタマーサービス用ボットを構築したのは、すべての回答を事前に確認できたためです。
- LLMチャットボット:それまでの会話に基づき、トークンを1つずつ生成して各回答を作成します。システムプロンプトでボットの役割とルールを設定し、モデルは誰も想定していなかった表現にも対応します。
LLMチャットボットの基盤となるモデルは、対話向けにTransformerを学習させ、指示チューニングと人間のフィードバックによる強化学習 (RLHF)を適用したものです。モデルは呼び出しの間でメモリを保持しません。アプリケーションが会話を保存し、新しいメッセージのたびに、モデルのチャットテンプレートで整形した会話全体を送信します。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-135M-Instruct")
# # チャットボットは会話を保存し、新しいターンごとに会話全体を送信します
messages = [
{"role": "system", "content": "You are a support assistant for an online store."},
{"role": "user", "content": "Where is my order?"},
{"role": "assistant", "content": "Could you share your order number?"},
{"role": "user", "content": "It's 4417."},
]
# # チャットテンプレートは履歴を1つのプロンプトにまとめ、モデルが続きを生成できるようにします
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
print(prompt)出力されたプロンプトでは、各ターンが役割とともに<|im_start|>および<|im_end|>マーカーで囲まれ、末尾は未完了の<|im_start|>assistant行になります。そのため、モデルが次に生成するtokensが回答となり、「4417です」という答えも、先行する質問が同じプロンプトに含まれている場合にのみ意味を持ちます。ターンごとにプロンプトが長くなるため、コンテキストウィンドウを超える前に、長い会話は切り詰めるか要約します。また、プロンプトキャッシュを使えば、各ターンで変更されていない履歴を再処理せずに済みます。
グラウンディング、ツール、画像#
学習データだけを使って回答するサポートチャットボットは、誤ったポリシーを自信ありげに伝える可能性があります。そのため、本番環境のボットでは、まず検索拡張生成 (RAG)で関連文書やアカウントデータを取得し、AIガードレールで入力と回答の草案を確認します。また、回答を裏付けられない場合は担当者に引き継ぎます。
関数呼び出しを使って注文の照会などのツールを呼び出すチャットボットは、AIエージェントへと発展しつつあります。また、マルチモーダルチャットボットは、視覚言語モデル (VLMs)を通じて、1回のターンで写真やスクリーンショットを受け付けます。UltralyticsのLLMインターフェースは、プロンプト、画像、または会話履歴全体をOpenAI互換の任意のチャットモデルに送信し、プロバイダー独自のレスポンスオブジェクトを返します。そのため、YOLO26パイプラインは、検出によって人物が見つかった場合に限り、マルチモーダルモデルにシーンの説明を依頼できます。
リスク#
企業がボットを導入すると、ハルシネーションが法的責任につながることがあります。2024年2月に判決が下されたMoffatt v. Air Canadaでは、航空会社のウェブサイト上のチャットボットが、死別した乗客に対し、搭乗後でも遺族割引を申請できると伝えましたが、これは実際のポリシーに反していました。ブリティッシュコロンビア州の民事紛争解決審判所は、チャットボットが自らの発言に責任を負うというAir Canadaの主張を退け、差額を支払うよう命じました。チャットボットはプロンプトインジェクションやジェイルブレイクの試みにもさらされます。また、ユーザーを喜ばせるように調整されたモデルは、誤りを正さず同意してしまうAIの迎合に陥ることがあります。
チャットボットと関連用語の比較#
- バーチャルアシスタント:SiriやAlexaのように、アプリやデバイスをまたいで要求を実行するソフトウェアです。チャットボットは通常、1つのウェブサイト、アプリ、またはメッセージングチャネルで利用され、会話に特化しています。
- AIエージェント:人が介在しないまま、複数のステップにわたってアクションを選択・実行し、目標を達成するシステムです。チャットボットは、回答だけでなくツールを使ったアクションも実行するようになると、エージェントになります。
- 会話型AI:チャットボットやアシスタントを支える技術分野全般を指し、音声認識、NLU、対話管理、音声合成などが含まれます。










