0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIでチャットボットの初期データを一括作成する仕組み

0
Last updated at Posted at 2026-09-14

個人開発でWebチャット「チャポット (chapot.net)」を開発・運営しています。

チャットボットを導入する際、最も心理的ハードルが高いのが「よくある質問(FAQ)や自動応答メッセージの初期作成・登録作業」です。手動で何十件もQ&Aを入力するのはかなり手間がかかります。

そこで、生成AI(ChatGPTやClaudeなど)に情報を渡すだけで、チャットボットに取り込める形式のJSONを一気に作らせて一括登録できる機能を実装しました。

生成AIにフォーマット通りのJSONを出力させるために工夫したプロンプト設計のポイントと機能の仕組みについて紹介します!

スクリーンショット 2026-09-12 12.04.55.png

💡 一括作成機能のUIステップ(3〜4ステップ)

ユーザーが迷わず簡単にデータを作成・登録できるよう、UIは以下の4ステップで設計しました。

  1. 案内したい情報を入力: 店舗名や営業時間、サービス概要などを自由記述
  2. 生成AIで回答を作成: 自動生成されたプロンプトをコピーし、普段使っているAIに貼り付け
  3. 作成された内容を取り込む: AIが出力したJSONテキストをペースト(またはファイル選択)
  4. 確認した内容を登録: 読み込まれたデータを確認し、一括登録

スクリーンショット 2026-09-14 12.00.16.png

🛠️ 実際に使用しているプロンプトテンプレート

「AIに情報を渡してJSONで返してもらう」際、一番問題になるのが「フォーマット崩れ」や「Markdownのエスケープ処理によるパースエラー」です。

それらを防ぎ、狙い通りの形式で出力させるために以下のようなプロンプトテンプレートを作成しました。

チャットボット『チャポット』へ取り込む自動応答を作成してください。
用途・案内したい内容:
(ここに店舗・サービスの情報を入力してください)

次の条件を厳守してください。
- 通常の自動応答を30件作成する
- message_noは1から30までの重複しない整数にする
- 挨拶メッセージを1件作成し、message_noは0、keywordsは空の配列にする
- 自動応答で回答できない場合のメッセージを1件作成し、message_noは9999999999、keywordsは空の配列にする
- message_noが1〜100の通常の自動応答では、keywordsを必ず1〜3個だけ入れる。4個以上は不可
- keywordsはユーザーが入力しそうな質問例・検索語句にする。候補が多い場合は代表的な3個だけ選ぶ
- message_noが0または9999999999の場合だけ、keywordsは空の配列にする
- replyは正確で簡潔な日本語、500文字以内にする
- buttonsは返答後に表示する選択肢であり、質問例ではない。必要な場合のみ0〜3個、labelは24文字以内、messageは500文字以内にする
- 用途欄にない固有情報には自然な仮の内容を入れ、後から修正箇所がわかるよう先頭に『【仮】』を付ける
- 前置きや説明文を付けず、下記の出力形式に厳密に従った内容だけを出力する
- JSONをMarkdown用にエスケープしない。[, ], _, {, } の前にバックスラッシュを付けない
- 出力前に全件を確認し、通常の自動応答でkeywordsが0個または4個以上のものがあれば修正する

出力形式:
{"version":1,"messages":[{"message_no":0,"keywords":[],"reply":"こんにちは。ご質問を入力するか、下の選択肢からお選びください。","buttons":["営業時間","アクセス"]},{"message_no":1,"keywords":["営業時間","何時まで"],"reply":"【仮】営業時間は平日の10時から18時までです。","buttons":[{"label":"アクセス","message":"アクセスを教えて"}]},{"message_no":9999999999,"keywords":[],"reply":"申し訳ありません。ご質問に回答できませんでした。担当者からの返信をお待ちください。","buttons":[]}]}

🧠 プロンプトで工夫したポイント(エラー対策)

1. 「前置き・解説文」の排除

AIは親切心から「以下が作成したJSONになります。」といった前置きを付けがちです。
前置きや説明文を付けず、下記の出力形式に厳密に従った内容だけを出力する と指示し、出力サンプルを直接渡すことで、そのままコピペしてシステムに取り込めるようにしています。

2. Markdownによる記号エスケープの防止

モデルによっては [_ の手前に \(バックスラッシュ)を入れてしまい、JSONのパースエラーが起きることがあります。
JSONをMarkdown用にエスケープしない。[, ], _, {, } の前にバックスラッシュを付けない という制約を明確に入れています。

3. キーワード数の厳格化と「セルフチェック」の指示

検索用キーワードが多すぎるとチャットボットの判定精度が落ちるため、1〜3個 という上限を設けています。
さらに、プロンプトの最後に 出力前に全件を確認し、〜であれば修正する という自己検証(Self-Correction)の指示を入れることで、制約の違反率を大幅に下げることができました。

4. 欠けている情報の補完方法指定

ユーザーが入力した情報に書かれていない項目(例: 定休日や電話番号など)がある場合、AIが勝手に嘘をつく(ハルシネーション)を防ぐため、先頭に『【仮】』を付ける ルールを設けています。これにより、取り込み後の確認画面で修正すべきポイントが一目瞭然になります。

おわりに

自前でAI APIを叩く構成にするとAPIコストやサーバー管理が発生しますが、「ユーザー自身の生成AIを使ってもらうプロンプト生成方式」を採用することで、シンプルかつ柔軟に自動応答作成の自動化を実現できました!

チャットボットの設置やFAQ作成でお困りの方は、ぜひ「チャポット」の一括作成機能を試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?