日曜日, 5月 25, 2025
ホームニューステックニュースDifyでつくったAIが壊れた専門家になってしまったときの対処法 #LLM - Qiita

DifyでつくったAIが壊れた専門家になってしまったときの対処法 #LLM – Qiita



DifyでつくったAIが壊れた専門家になってしまったときの対処法 #LLM - Qiita

🧠 はじめに

  • Dify学習のため、「IPA(情報処理推進機構)」の発信情報に詳しいAIチャットをDifyで構築してみました。
  • “ITの知識と絡めてIPAの情報も教えてくれる優しい先輩”を作り上げようとしたものの…
  • どんな質問にもIPAの説明しかしないが爆誕してしまった。
  • 本記事では、その失敗と改善プロンプトの工夫を紹介します。

📕基本的な構成

Difyで以下のようなシンプルなチャットフローを作成しました。
入力プロンプトに対し、ナレッジベースを検索してLLMで回答するものです。

image.png

それぞれのステップについて見ていきます。

知識検索

  • IPAの情報をナレッジベースとして活用できるよう、IPAの公式よりいくつかPDFをダウンロードして登録しておきます。

image.png

LLM

  • LLMには、以下のように対話の基本動作を設定します。
  • Dify上で要件を入力すると、AIで自動的に生成してくれました。
  • IPA関連の情報を含めつつ、ITについてフレンドリーに教えてくれる先輩です。

image.png


あなたは、ITに詳しいフレンドリーな先輩です。質問者はあなたに気軽に相談しています。  
IPA(情報処理推進機構)の資料を知識として参考にしつつ、質問者にとってわかりやすく、親しみやすい言葉で説明してください。

以下の方針にしたがって、自然な回答を作成してください。

1. 質問の意図をくみとって、まずはその問いに正面から答えるようにしてください。IPA資料に直接記述がない場合でも、関連する内容や一般的な知識をもとに補足してOKです。
2. 回答の語り口は、同僚に話すような自然で柔らかいものにしてください(例:「〜なんですよ」「たしかに気になりますよね」など)。
3. 難しい用語には補足を添えたり、なるべく簡単な言い換えを使ってください。
4. contextに含まれる情報は、関連する場合に引用して活用してください。ただしそれに縛られすぎず、質問者の理解を最優先してください。
5. 出力には「質問:」「回答:」のようなラベルを使わず、ユーザーへの自然な語りかけとして構成してください。

出力にはXMLタグを含めないでください。


{{#context#}}



ユーザーが「IPAって何してるところ?」と尋ねた場合、以下のように自然に返答してください。

IPAは、日本のIT分野の発展を支援するために設立された公的機関です。具体的には...


  • これで完成です、早いですね。
    • Difyはローカル環境で構築しています。環境設定は別途必要です。
    • OpenAIのAPIキー設定が別途必要です。

🤖 なぜか「IPA紹介おじさん」になってしまったAI

  • 早速使ってみましょう。質問を投げかけます。
  • ユーザー:「今後の日本のIT産業における課題はなんですか?」
  • AI:「おっと、IPAについて知りたいんですね。IPAとは情報処理推進機構の略でー」

image.png

  • おやおや、聞いてもいないのに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つ目は「人材不足」ですー」

image.png

  • 質問に正しく答えてくれるようになりました!

💡 学んだこと:Difyのプロンプトで正しい回答結果を得るには

  • contextは便利だが“唯一の正解”にしないこと
  • GPTはプロンプト次第で偏ってしまう
  • ナレッジベースはあくまで補足であると強調すること

🚀 おわりに

  • GPTはバカではないものの、“従順すぎる”ことがある気がします。
  • 人間とのコミュニケーションに近く、指示は明確に言語化してあげることが大事。
  • 様々な質問に意図通り回答してくれるかは、多くの試行が必要かもしれません。





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

インモビ転職