kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Dify の注釈(アノテーション)でチャットボットの回答をカスタマイズする

Dify の注釈(アノテーション)機能を使うとチャットボットで運用者が厳選して登録した回答を優先的に返すことができる.よくある質問に対して LLM を使わずに明確な回答をしたり,プロンプトインジェクションのような質問に対して拒否する回答ができる.よって,チャットボットの不確実な回答を減らすことにつながる.さらに LLM のトークンコストを抑えられるというメリットもある❗️

注釈(アノテーション)機能の詳細はドキュメントにまとまっている.簡単に言うとナレッジベースとは異なる注釈(アノテーション)専用の RAG を構築するようなイメージになる.

legacy-docs.dify.ai

docs.dify.ai

また Dify ブログでも詳しくまとまっている.注釈(アノテーション)機能の紹介から LLMOps の話や AI アプリケーションを改善(フィードバックループ)する重要性まで解説されていてイイ記事だった📝

dify.ai

Dify の注釈(アノテーション)機能をさっそく試してみた👌

準備

まずチャットフローで「開始 → LLM → 回答」という基本的なワークフローを作る.LLM ノードに設定するシステムプロンプトは適当に設定しておく💬

あなたは EC サイトのチャットボットです。
ユーザーの問い合わせに対して回答してください。

動作確認(アノテーションなし)

まずは「返品をお願いします」と問い合わせる.すると一般的な回答が返ってくる.

次に別の表現として「返品したいんですけど」と問い合わせる.同じく一般的な回答が返ってくる.

注釈(アノテーション)

次に注釈(アノテーション)を設定する.Dify スタジオのサイドメニューから「ログ&注釈」を選択すると会話ログがある.1つ返信を選んで右下にある「注釈を追加」というボタンを押して画面を更新すると回答を更新できるようになる.

ここに厳選した回答を登録して上書きするイメージになる.今回は以下のようにした.他の会話ログにも同じ設定を入れておく💬 なお「一括インポート」を使うと CSV 経由で大量に登録できる.

返品の依頼ですね。担当部署にエスカレーションします。注文番号を教えてください。

そして「注釈」画面に移動して,右側にある「注釈の返信」を有効化しておく.スコア閾値などの設定があって,今回はデフォルトのままにしておく.実際にはテストをしながら調整する必要がある.

動作確認(アノテーションあり)

同じく「返品をお願いします」と問い合わせる.すると今度は登録した回答が返ってくる👏

なお,繰り返し試してテストをしてみたけどデータが少なく注釈(アノテーション)で回答されない場面もあった.このあたりは運用しながら育てる感じになりそう🌱

また別の表現として「返品できるか」と問い合わせる.すると関連する問い合わせだと判定されて登録した回答が返ってくる👏