1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Difyを使って検索をしてみた ~ウェブ検索、ナレッジデータの作成~利用、つまづきポイントも~

Last updated at Posted at 2025-08-03

 最近、バイブコーディング(Vibe coding)「AIに指示を出してコードを書いてもらうこと」を色々と試みています。

どうせやるならノーコードでより便利に!
 ということで、バイブコーディング(Vibe coding)で生成したコードにノーコード/ローコードプラットフォームであるDifyを組み込んで活用してみました。
 今回は、ウェブ検索、ナレッジデータの作成~利用についての記事になります。
 LLMへの質問に対する返答は、結構まちがっていることも多く、今回はより正確性を高めるため、ウェブ検索を最初に行い、その結果をLLMにまとめてもらうという形にしました。

Difyの活用の流れ

1. Difyをはじめる
2. ウェブ検索の設定
3. ナレッジデータの登録、利用設定
4. フローをつくる
5. 公開する
6. APIキーの獲得(生成したコードとDifyをつなぐ)

作成手順

1. Difyをはじめる

開始するにあたっての記事は沢山あるので、ここでは詳細な説明は割愛します。

はじめかたの大まかな流れ
1. Difyの公式HPを開く
2. 任意の方法でログイン
3. 初期設定を行う
 ①ワークスペース名と言語
 ②LLMのモデル(OpenAIとかGeminiとか)選択、APIキー取得・登録

以下の記事がよくまとまっていると思います。
Dify入門ガイド:チャットフローでRAGを実装
https://note.com/weel_media/n/na550526d8985

この記事内の、
ログイン後に必須!初期設定でやるべき3つのこと の
「2. AIの頭脳となる「APIキー」を登録する」 にて、OpenAIを利用していますが、Geminiの方がお勧めです(無料枠が多い)。

☛右上の検索窓へ「gemini」と入力し検索、geminiを選択しインストール。
 (以下の記事を参照)
 APIキーを取得して張り付けて登録するのは、どのモデルでも同じです。

Dify に AIモデル(Gemini)を設定する
https://qiita.com/b-wind/items/f45afb8a0cb4a43a1f60

2. ウェブ検索の設定

ウェブ検索「Serper」を使えるようにする

検索サービスはGoogle、その他ありますが、今回は、調べる限り一番検索機能が安定してそうな「Serper」を利用します。

①DifyにSerperをインストール
②Serper APIを取得
③DifyのSerperへ、Serper APIを登録する

①DifyにSerperをインストール

Difyのページで、上部の「ツール」をクリックし、ツール一覧の画面を表示。
以降、流れに従い、インストールします。
スクリーンショット (518).png

②Serper APIを取得

Serper APIを使うにはアカウントを作成します。
  Serperサイト:https://serper.dev/

●右上の「Sign up」をクリック
スクリーンショット (519).png

●Sign upを選択すると以下の画面になるので、必要情報を入力後、メールが届きます。
スクリーンショット (520).png

●届いたメールに記載されているURLをクリックすると、Playgroundのページに遷移するのでこれで登録は完了です。

●ダッシュボードを開き、左側メニューのAPI keysを選択
スクリーンショット (521).png

●右上の「+ Create New Key」ボタンをクリック
スクリーンショット (522)01.png

●Key Nameを入力し、「Create」ボタンをクリック
スクリーンショット (524).png

●作ったAPIキーをコピー(右側のボタンをクリックしてクリップボードへコピー)
スクリーンショット (522).png

③DifyのSerperへ、Serper APIを登録する

●Difyの画面に戻り、「ツール」画面を表示、インストールされている「Serper」をクリック
スクリーンショット (525).png

●右側に小画面が現れるので、「APIキー認証設定」ボタンをクリック
スクリーンショット (526).png

●認証名、Serper API keyを入力し、「保存」ボタンをクリック
スクリーンショット (528).png

これで、Serper(ウェブ検索)の準備はできました。

3. ナレッジデータの登録、利用設定

①データの入ったCSVファイルを用意
②ナレッジデータのキーワードを編集
③Difyの知識検索ブロック前のLLMにローマ字変換のプロンプトを登録

①データの入ったCSVファイルを用意

●以下のようなデータの入ったCSVファイルを用意します。
スクリーンショット (552).png

②Difyのナレッジへ登録

●Difyのナレッジのページを開く。
スクリーンショット (536).png

●作成したCSVファイルをドラッグ&ドロップ。
スクリーンショット (538).png

●ファイルがアップロードされたことを確認し、「次へ」をクリック
スクリーンショット (540).png

●インデックス方法は、簡単な検索であれば「経済的」で十分。
「高品質」は、無料枠があるが、それを超えると、cohere APIを取得し有料となる。

●「チャンクをプレビュー」をクリックし、右側のプレビューを確認

●「保存して保存」をクリック
ナレッジデータの登録02.png

【つまづきポイント1】

(詳細と対応方法は、最後に記述しています)

 Difyのナレッジデータへの検索は、
 〇:アルファベット、漢字
 ✖:ひらがな、カタカナ

4. フローをつくる

 今回は、作成するフローは、以下の形になります。

入力された検索ワードに対し、
① ウェブ検索をして必要な情報を取り出す
② 自分で作成したナレッジデータを検索し
  必要な情報を取り出す
③ ①, ②の情報を統合して、最後に出力する

       ①の流れ
      「ウェブ検索」
     ↗        ↘  ③の流れ
「開始」         「LLM」→ 「終了(出力)」
     ↘ ②の流れ   ↗ (情報を統合し出力)
      「知識検索」

全体のフロー.png

① ウェブ検索をして必要な情報を取り出す

以下の部分のフローを作成します。①のフロー.png

●Difyの「スタジオ」画面を開き、左側の「アプリを作成する」内の「最初から作成」をクリック。
スクリーンショット (507).png

●開いた画面に情報を入力

 アプリタイプ:ワークフロー
 アプリのアイコンと名前:お好きな名前を付けてください
 「作成する」をクリック

スクリーンショット (508).png

●「開始」ブロックをクリック
右側に開いた画面の、入力フィールドの右側の「+」をクリック
スクリーンショット (580).png

●開いた画面に情報を入力

 入力タイプ:短文
  ラベル名:お好きな名前
 「保存」をクリック

スクリーンショット (581).png

●「開始」ブロック右側の「+」をクリックし、現れたメニュー内の「LLM」をクリック(「LLM」ブロックを作る)。
スクリーンショット (584).png

●作成された「LLM」ブロックをクリックし、設定する。

 入力モデル:Gemini 2.5 Flash-Lite(お好きなものを)
 
  コンテキスト:開始/search_word
  
  SYSTEM(プロンプト):
     以下の形式で出力してください。
     開始/search_word 成分 アレルギー
     
  USER(プロンプト):{開始/{x}search_word}
   ※注 2025年9月上旬より、この「USER」枠を作成しキーワードを
   入力しないと、LLMは動かなくなりました(Geminiだけ?)
   
   ※開始/search_wordは、枠内の{x}をクリックし、その中から選択。

尚、LLMのトークン消費がもったいないという方は、「コード入力」ノードで十分対応できます(多少コードが書ける方)。

スクリーンショット (593).png

●「LLM」ブロック右側「+」メニューの上部の、「ツール」をクリック
「Serper」をクリックし、更に現れた「Serper」をクリック
(「Serper」ブロックを作る)
スクリーンショット (596).png

●「Serper」ブロックの設定をする

 入力変数:LLM/{x}text

スクリーンショット (601).png

●「Serper」ブロック右側「+」メニューの、「テンプレート」をクリック(「テンプレート」ブロックを作成)

●設定 入力変数:{x}Serper/ json Array[Object]

Serper後のテキスト化(「テンプレート」ブロック).png

【つまづきポイント2】

検索ブロック(SerperでもGoogleでも)で得られた結果は、テキスト化しないと、次のLLMでは読み込めない。

「テンプレート」ブロックでテキスト化することにより利用できる。

② 自分で作成したナレッジデータを検索し必要な情報を取り出す

以下の部分のフローを作成します。
②のフロー.png

●「開始」ブロックに戻り、右側「+」メニューより「LLM」をクリック(「LLM 2」ブロックを作成)
スクリーンショット (611).png

●「LLM 2」ブロック設定

 AI モデル:Gemini 2.5 Flash-lite

  コンテキスト:開始/search_word String
 
  SYSTEM(プロンプト):以下のプロンプト
 
  USER(プロンプト):{開始/{x}search_word}
   ※注 2025年9月上旬より、この「USER」枠を作成しキーワードを
   入力しないと、LLMは動かなくなりました(Geminiだけ?)
Difyの知識検索ブロック前のLLMブロックへ登録するプロンプト
あなたは、カタカナを、ヘボン式ローマ字に正確に変換するアシスタントです。

以下の様に{ここにDifyで変数「開始/search_word」を入れる}をローマの小文字表記に変換してください。音のアルファベット変換ではなくローマ字変換です。変換したローマ字だけ出力してください。

以下のルールに従って変換してください:

1. 濁音(ガギグゲゴなど)、半濁音(パピプペポなど)、拗音(キャ、シュなど)を正確に処理してください。
2. 小さい「ッ」は、次の子音を重ねて表現してください(例:サッポロ → sapporo)。
3. 長音「ー」は、英字の「-」(ハイフン)に変換してください(例:ケーシー → ke-shi-)。
4. 「シ」「チ」「ツ」などはヘボン式(shi, chi, tsu)に準拠してください。
5. 促音・拗音・小書き文字(ャュョァィゥェォッ)すべて対応してください。
6. 半角スペースや句読点は削除してください。


 上手くいかないときは、色々と工夫してみてください。また、Difyにはプロンプト作成を頼む機能もあります。

 尚、LLMのトークン消費がもったいないという方は、「コード入力」ノードで十分対応できます(コードが書ける方)。

スクリーンショット (613).png

●「LLM 2」ブロック右側「+」メニュー内の「知識検索」をクリック(「知識検索」ブロックをつくる)
スクリーンショット (615).png

●「知識検索」ブロック設定

 検索変数:開始/search_word String

 ナレッジベースの右側の「+」をクリック

スクリーンショット (616).png

●「参照する知識を選択」が開くので、
使用するナレッジデータを選択(クリック)し、「追加」をクリック。
スクリーンショット (618).png

スクリーンショット (619).png

③ ①, ②の情報を統合して、最後に出力する

③のフロー.png

●「テンプレート」ブロックの右側の「+」メニュー内の「LLM」をクリック(「LLM 3」ブロックを作成)
スクリーンショット (620).png

●「LLM 3」ブロック設定

 コンテキスト:知識検索/ result Arrey[Object]
 SYSTEM(プロンプト):
   {テンプレート {x}output}と{コンテキスト}より、
    {開始/{x}search_word}に含まれるアレルギー物質を抽出し、
    出力してください。
    
 USER(プロンプト):
   {テンプレート {x}output}{開始/{x}search_word}
   ※注 2025年9月上旬より、この「USER」枠を作成しキーワードを
   入力しないと、LLMは動かなくなりました(Geminiだけ?)
 
 ※{テンプレート {x}output}、{コンテキスト}、{開始/{x}search_word}は、
  枠内の{x}をクリックしてそれぞれ挿入してください。

●「知識検索」ブロックと、「LLM 3」ブロックを繋げる。

スクリーンショット (637).png

●「LLM 3」ブロックの右側「+」メニュー内の「終了」をクリック(「終了」ブロックをつくる)
スクリーンショット (629).png

●「終了」ブロック設定
 出力変数:LLM 3/text String
スクリーンショット (630).png

以下のような、フローが出来ていると思います。
スクリーンショット (631).png

5. 公開する

●右上の「公開する」をクリック
スクリーンショット (643).png

●「更新を公開」をクリック
スクリーンショット (644).png

6. APIキーの獲得(生成したコードとDifyをつなぐ)

Difyの左側メニュー内の「API アクセス」をクリック
右上の「API キー」をクリック
スクリーンショット (639).png

開いた画面の「新しいシークレットキーを作成」をクリック
スクリーンショット (640).png

作成されたシークレットキーをコピー(右側のコピーボタンをクリック)
スクリーンショット (641).png

このAPIキーを、バイブコーディングしたコードなどでご使用ください。

まとめ

 以上がDifyの活用法の一つ、検索、ナレッジデータの使い方になります。
 皆様にご活用いただければ幸いです。

つまづきポイント

【つまづきポイント1】

 Difyのナレッジデータへの検索は、
 〇:アルファベット、漢字
 ✖:ひらがな、カタカナ

ひらがな、カタカナはキーワードに登録しても検索にはかからないです。
(これに気付くまで数日かかりました)
これはウェブを検索しても現段階では情報はないので、個人的には大発見だと思います。もしかすると、何か設定があるのもしれませんが・・・。

検索にかかるようにするための工夫

①CSVファイルに、検索したい用語のローマ字表記の列をつくる。
②Difyのナレッジへ登録

①CSVファイルに、検索したい用語のローマ字表記の列をつくる。

  1. カタカナ→ローマ字変換する関数を作成(AIで生成)
  2. エクセルにVBAを登録し、セルに関数を書く
  3. CSVファイルを保存する

1. カタカナ→ローマ字変換する関数を作成(AIで生成)

ChatGPT等で、カタカナをローマ字へ変換するVBAで動く関数を生成します。
 以下にVBAを生成するためのプロンプトと、生成したVBAを用意しました。

VBAを作成するためのプロンプト
以下の様にローマの小文字表記に変換するためのVBAで動くエクセル関数を作成してください。音のアルファベット変換ではなくローマ字変換です。変換したローマ字だけ出力してください。

以下のルールに従って変換してください:

1. 濁音(ガギグゲゴなど)、半濁音(パピプペポなど)、拗音(キャ、シュなど)を正確に処理してください。
2. 小さい「ッ」は、次の子音を重ねて表現してください(例:サッポロ → sapporo)。
3. 長音「ー」は、英字の「-」(ハイフン)に変換してください(例:ケーシー → ke-shi-)。
4. 「シ」「チ」「ツ」などはヘボン式(shi, chi, tsu)に準拠してください。
5. 促音・拗音・小書き文字(ャュョァィゥェォッ)すべて対応してください。
6. 半角スペースや句読点は削除してください。

【入力】にカタカナの商品名が与えられますので、それをローマ字に変換して、【出力】のみを返してください。

---

【入力】:ケーシー  
【出力】:ke-shi-

【入力】:ヨウカン  
【出力】:youkan
VBA
Function KanaToRomaji(text As String) As String
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 促音+拗音
    dict.Add "ッキャ", "kya": dict.Add "ッキュ", "kyu": dict.Add "ッキョ", "kyo"
    dict.Add "ッシャ", "sha": dict.Add "ッシュ", "shu": dict.Add "ッショ", "sho"
    dict.Add "ッチャ", "cha": dict.Add "ッチュ", "chu": dict.Add "ッチョ", "cho"
    dict.Add "ッニャ", "nya": dict.Add "ッニュ", "nyu": dict.Add "ッニョ", "nyo"
    dict.Add "ッヒャ", "hya": dict.Add "ッヒュ", "hyu": dict.Add "ッヒョ", "hyo"
    dict.Add "ッミャ", "mya": dict.Add "ッミュ", "myu": dict.Add "ッミョ", "myo"
    dict.Add "ッリャ", "rya": dict.Add "ッリュ", "ryu": dict.Add "ッリョ", "ryo"
    dict.Add "ッギャ", "gya": dict.Add "ッギュ", "gyu": dict.Add "ッギョ", "gyo"
    dict.Add "ッジャ", "ja":  dict.Add "ッジュ", "ju":  dict.Add "ッジョ", "jo"
    dict.Add "ッビャ", "bya": dict.Add "ッビュ", "byu": dict.Add "ッビョ", "byo"
    dict.Add "ッピャ", "pya": dict.Add "ッピュ", "pyu": dict.Add "ッピョ", "pyo"
    dict.Add "ッヴァ", "va": dict.Add "ッヴィ", "vi": dict.Add "ッヴェ", "ve": dict.Add "ッヴォ", "vo": dict.Add "ッヴ", "vu"

    ' 促音+清音・濁音系
    dict.Add "ッカ", "kka": dict.Add "ッキ", "kki": dict.Add "ック", "kku": dict.Add "ッケ", "kke": dict.Add "ッコ", "kko"
    dict.Add "ッサ", "ssa": dict.Add "ッシ", "ssi": dict.Add "ッス", "ssu": dict.Add "ッセ", "sse": dict.Add "ッソ", "sso"
    dict.Add "ッタ", "tta": dict.Add "ッチ", "tti": dict.Add "ッツ", "ttu": dict.Add "ッテ", "tte": dict.Add "ット", "tto"
    dict.Add "ッハ", "hha": dict.Add "ッヒ", "hhi": dict.Add "ッフ", "hhu": dict.Add "ッヘ", "hhe": dict.Add "ッホ", "hho"
    dict.Add "ッマ", "mma": dict.Add "ッミ", "mmi": dict.Add "ッム", "mmu": dict.Add "ッメ", "mme": dict.Add "ッモ", "mmo"
    dict.Add "ッヤ", "yya": dict.Add "ッユ", "yyu": dict.Add "ッヨ", "yyo"
    dict.Add "ッラ", "rra": dict.Add "ッリ", "rri": dict.Add "ッル", "rru": dict.Add "ッレ", "rre": dict.Add "ッロ", "rro"
    dict.Add "ッガ", "gga": dict.Add "ッギ", "ggi": dict.Add "ッグ", "ggu": dict.Add "ッゲ", "gge": dict.Add "ッゴ", "ggo"
    dict.Add "ッザ", "zza": dict.Add "ッジ", "zzi": dict.Add "ッズ", "zzu": dict.Add "ッゼ", "zze": dict.Add "ッゾ", "zzo"
    dict.Add "ッダ", "dda": dict.Add "ッヂ", "ddi": dict.Add "ッヅ", "ddu": dict.Add "ッデ", "dde": dict.Add "ッド", "ddo"
    dict.Add "ッバ", "bba": dict.Add "ッビ", "bbi": dict.Add "ッブ", "bbu": dict.Add "ッベ", "bbe": dict.Add "ッボ", "bbo"
    dict.Add "ッパ", "ppa": dict.Add "ッピ", "ppi": dict.Add "ップ", "ppu": dict.Add "ッペ", "ppe": dict.Add "ッポ", "ppo"

    ' 拗音(清音・濁音)
    Dim baseKana As Variant, baseRoma As Variant
    baseKana = Split("キャ キュ キョ シャ シュ ショ チャ チュ チョ ニャ ニュ ニョ ヒャ ヒュ ヒョ ミャ ミュ ミョ リャ リュ リョ ギャ ギュ ギョ ジャ ジュ ジョ ビャ ビュ ビョ ピャ ピュ ピョ ヴァ ヴィ ヴェ ヴォ ヴ", " ")
    baseRoma = Split("kya kyu kyo sha shu sho cha chu cho nya nyu nyo hya hyu hyo mya myu myo rya ryu ryo gya gyu gyo ja ju jo bya byu byo pya pyu pyo va vi ve vo vu", " ")
    Dim i As Long
    For i = 0 To UBound(baseKana)
        dict.Add baseKana(i), baseRoma(i)
    Next

    ' 小書き文字
    dict.Add "ッ", "xtsu": dict.Add "ャ", "xya": dict.Add "ュ", "xyu": dict.Add "ョ", "xyo"
    dict.Add "ァ", "xa": dict.Add "ィ", "xi": dict.Add "ゥ", "xu": dict.Add "ェ", "xe": dict.Add "ォ", "xo"
    
    ' 清音・濁音・半濁音
    Dim kana, roma
    kana = Split("ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド バ ビ ブ ベ ボ パ ピ プ ペ ポ", " ")
    roma = Split("a i u e o ka ki ku ke ko sa shi su se so ta chi tsu te to na ni nu ne no ha hi hu he ho ma mi mu me mo ya yu yo ra ri ru re ro wa wo n ga gi gu ge go za zi zu ze zo da di du de do ba bi bu be bo pa pi pu pe po", " ")
    For i = 0 To UBound(kana)
        dict.Add kana(i), roma(i)
    Next

    ' ひらがな対応
    Dim hira, kata
    hira = Split("あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ を ん", " ")
    kata = Split("ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン", " ")
    For i = 0 To UBound(hira)
        If dict.Exists(kata(i)) Then
            dict.Add hira(i), dict(kata(i))
        End If
    Next

    ' 長音記号
    text = Replace(text, "ー", "-")
    
    ' 実行:辞書のキーを長い順に並び替え、先に置換
    Dim key As Variant
    For Each key In SortByLength(dict.Keys)
        text = Replace(text, key, dict(key))
    Next

    KanaToRomaji = text
End Function

' ↓キーを長さ順で降順ソートする関数
Private Function SortByLength(arr As Variant) As Variant
    Dim i As Long, j As Long, tmp
    For i = LBound(arr) To UBound(arr) - 1
        For j = i + 1 To UBound(arr)
            If Len(arr(i)) < Len(arr(j)) Then
                tmp = arr(i)
                arr(i) = arr(j)
                arr(j) = tmp
            End If
        Next j
    Next i
    SortByLength = arr
End Function

2. エクセルにVBAを登録し、セルに関数を書く

●VBAを開く
 エクセルのメニュー内の「開発」を開き、「Visual Bacsic」をクリックし開く。
スクリーンショット (567).png

※メニュー内に「開発」が無い方は、以下の手順で「開発」を表示させてください。

  • エクセルのメニューの「ファイル」をクリック
  • 表示された画面の左メニューの一番下の「オプション」をクリック
  • 開いたウインドウの左メニュー「リボンのユーザー設定」をクリックし、その中の「開発」にチェックをつける。
    エクセル 開発タグの出し方.png

●左側の表示内で右クリックし、右クリックメニューの「挿入」→「標準モジュール」をクリックする。
スクリーンショット (569).png

●作成したモジュール(Module1)内に、生成したVBAをペーストする。
スクリーンショット (572).png
 
セルに関数を書く
 情報の入っているセルの後ろの列(この図ならばK列より後ろ)に関数を記載。

(記入例)
K列:=PHONETIC(A2)
    (ひらがな、漢字をカタカナへ変換する関数)
L列:=KanaToRomaji(K2)
    (VBAで作ったオリジナル関数)
    
 と記載し、一番下の列までコピー(セル右下の四角(フィルハンドル)で
  オートフィルしても良いです)
  ※K列でカタカナへ変換し、それをL列でローマ字変換

エクセルへ関数登録.png

3. CSVファイルを保存する

 新たにシートを作成し以下の様に張り付ける。

  • データの整理
    • A列に作成した商品名のローマ字表記を張り付け(張り付けオプションで「値」を選択)。
    • B列に商品名を張り付け
    • C列、D列などに必要な情報を張り付け

CSVファイルの作成.png

  • CSVファイルで保存
    エクセルのメニュー「ファイル」→「名前を付けて保存」→ファイルの種類(ファイル形式)を「CSV(コンマ区切り)(*.csv)」にして保存。

②ナレッジデータのキーワードを編集

●Difyの「ナレッジ」内の、先ほど作成したナレッジベースの画面を開き、登録したCSVファイルの行をクリック
 (登録されたチャンク一覧の画面を開く)
スクリーンショット (576).png

 
●下の画面が開くので、一つのチャンクをクリックし編集画面へ。
 右下のキーワードを編集し、「保存」をクリック。

 CSVファイルをナレッジデータに登録すると、自動的にキーワードが作成されますが、ローマ字のキーワードを登録する必要があります。

Difyナレッジデータのキーワード編集.png
 登録数(チャンク数)が多いと、この修正は地味に大変な作業ですが、これを行うことにより、格段に検索にかかりやすくなります!

③Difyの知識検索ブロック前のLLMにローマ字変換のプロンプトを登録

 後述の「4. フローをつくる」内で、知識検索ブロックの前にLLMのブロックを置き、そのLLMに以下の「LLMにて入力した用語をローマ字表記へ変換する」ためのプロンプトを記入する。

Difyの知識検索ブロック前のLLMブロックへ登録するプロンプト
あなたは、カタカナを、ヘボン式ローマ字に正確に変換するアシスタントです。

以下の様に{ここにDifyで変数「開始/search_word」を入れる}をローマの小文字表記に変換してください。音のアルファベット変換ではなくローマ字変換です。変換したローマ字だけ出力してください。

以下のルールに従って変換してください:

1. 濁音(ガギグゲゴなど)、半濁音(パピプペポなど)、拗音(キャ、シュなど)を正確に処理してください。
2. 小さい「ッ」は、次の子音を重ねて表現してください(例:サッポロ → sapporo)。
3. 長音「ー」は、英字の「-」(ハイフン)に変換してください(例:ケーシー → ke-shi-)。
4. 「シ」「チ」「ツ」などはヘボン式(shi, chi, tsu)に準拠してください。
5. 促音・拗音・小書き文字(ャュョァィゥェォッ)すべて対応してください。
6. 半角スペースや句読点は削除してください。


 上手くいかないときは、色々と工夫してみてください。また、Difyにはプロンプト作成を頼む機能もあります。

【つまづきポイント2】

検索ブロック(SerperでもGoogleでも)で得られた結果は、テキスト化(jsonデータ⇒テキストデータ)しないと、次のLLMでは読み込めない。

「テンプレート」ブロックでテキスト化することにより利用できる。

 ウェブで検索しても、これに関する情報は出てきませんでした。あれこれ試行錯誤しこの形にたどり着いたのですが、気付くまでに数日かかりました。つまづきポイント1と同様、自分としては大発見と思っています。
 とはいえ、エンジニアの方であれば、jsonデータをテキスト化しないと利用できないことは容易にわかるものと思います。そして他に方法があるかもしれませんが・・・。

参考文献

Dify入門ガイド:チャットフローでRAGを実装
https://note.com/weel_media/n/na550526d8985

Dify に AIモデル(Gemini)を設定する
https://qiita.com/b-wind/items/f45afb8a0cb4a43a1f60

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?