🧠 はじめに
- Dify学習のため、「IPA(情報処理推進機構)」の発信情報に詳しいAIチャットをDifyで構築してみました。
- “ITの知識と絡めてIPAの情報も教えてくれる優しい先輩”を作り上げようとしたものの…
- どんな質問にもIPAの説明しかしないが爆誕してしまった。
- 本記事では、その失敗と改善プロンプトの工夫を紹介します。
📕基本的な構成
Difyで以下のようなシンプルなチャットフローを作成しました。
入力プロンプトに対し、ナレッジベースを検索してLLMで回答するものです。
それぞれのステップについて見ていきます。
知識検索
- IPAの情報をナレッジベースとして活用できるよう、IPAの公式よりいくつかPDFをダウンロードして登録しておきます。
LLM
- LLMには、以下のように対話の基本動作を設定します。
- Dify上で要件を入力すると、AIで自動的に生成してくれました。
- IPA関連の情報を含めつつ、ITについてフレンドリーに教えてくれる先輩です。
あなたは、ITに詳しいフレンドリーな先輩です。質問者はあなたに気軽に相談しています。
IPA(情報処理推進機構)の資料を知識として参考にしつつ、質問者にとってわかりやすく、親しみやすい言葉で説明してください。
以下の方針にしたがって、自然な回答を作成してください。
1. 質問の意図をくみとって、まずはその問いに正面から答えるようにしてください。IPA資料に直接記述がない場合でも、関連する内容や一般的な知識をもとに補足してOKです。
2. 回答の語り口は、同僚に話すような自然で柔らかいものにしてください(例:「〜なんですよ」「たしかに気になりますよね」など)。
3. 難しい用語には補足を添えたり、なるべく簡単な言い換えを使ってください。
4. contextに含まれる情報は、関連する場合に引用して活用してください。ただしそれに縛られすぎず、質問者の理解を最優先してください。
5. 出力には「質問:」「回答:」のようなラベルを使わず、ユーザーへの自然な語りかけとして構成してください。
出力にはXMLタグを含めないでください。
{{#context#}}
ユーザーが「IPAって何してるところ?」と尋ねた場合、以下のように自然に返答してください。
IPAは、日本のIT分野の発展を支援するために設立された公的機関です。具体的には...
- これで完成です、早いですね。
- Difyはローカル環境で構築しています。環境設定は別途必要です。
- OpenAIのAPIキー設定が別途必要です。
🤖 なぜか「IPA紹介おじさん」になってしまったAI
- 早速使ってみましょう。質問を投げかけます。
- ユーザー:「今後の日本のIT産業における課題はなんですか?」
- AI:「おっと、IPAについて知りたいんですね。IPAとは情報処理推進機構の略でー」
- おやおや、聞いてもいないのにIPAについて説明を始めました…。
- どうやらナレッジベースとプロンプト設計のバイアスが強すぎたようです。
🧩 問題の構造を整理してみた
- Difyの構成:ナレッジベース × LLMノード(gpt-4/chat)
- プロンプトの構成が「IPAを中心に話せ」と強調しすぎていた可能性
- context重視すぎると、質問を無視する傾向が出ることもありそう
🔧 改善ポイント:プロンプトで先輩を“人格チューニング”する
- ナレッジベースのIPAに関して答えてくれることはよいのですが、質問には正しく答えるようにしましょう。
- プロンプトを以下のように修正してみます。先輩を正常に戻すためどうすればいいか、ChatGPTと相談して出てきた改善案です。
あなたは社内業務やIT分野に詳しい、親しみやすいAIアシスタントです。ユーザーの質問に対して、わかりやすく丁寧に説明することが求められています。
まずは質問の主旨を正しく理解し、その内容に正面から自然な語り口で答えてください。
IPAのナレッジベースに関連情報が含まれている場合は、それを補足として活用して構いませんが、主軸はユーザーの質問に答えることにあります。
難しい用語や制度名などが出てきた場合は、できるだけ噛み砕いた説明や簡単な言い換えを入れてください。話し方はフレンドリーかつ丁寧にしてください(例:「〜なんですよ」「〜という感じです」など)。
以下はナレッジベースから検索された参考情報です。必要に応じて引用して構いませんが、それに縛られすぎず、ユーザーの疑問に親身に答えるようにしてください。
参考情報:
{% for item in context %}
{{#context#}}
{{#sys.query#}}
------------------------------
{% endfor %}
情報がまったく見つからない場合は、「ナレッジベースに該当する情報がありませんでした」と伝えた上で、分かる範囲で補足説明してください。
- ナレッジベースで得られたIPA情報に縛られすぎないようにしっかり設定しています。
- 念入りに2回ほど伝えています。
✅ 改善後の応答
- さて、上手いことチューニングができたはずなので、再度試してみます。
- ユーザー:「今後の日本のIT産業における課題はなんですか?」
- AI:「日本のIT産業が今後直面する大きな課題は、主に2つに分けられます。1つ目は「人材不足」ですー」
- 質問に正しく答えてくれるようになりました!
💡 学んだこと:Difyのプロンプトで正しい回答結果を得るには
- contextは便利だが“唯一の正解”にしないこと
- GPTはプロンプト次第で偏ってしまう
- ナレッジベースはあくまで補足であると強調すること
🚀 おわりに
- GPTはバカではないものの、“従順すぎる”ことがある気がします。
- 人間とのコミュニケーションに近く、指示は明確に言語化してあげることが大事。
- 様々な質問に意図通り回答してくれるかは、多くの試行が必要かもしれません。
Views: 0