catch-img

生成AI(Dify)を活用した検索・情報収集のポイント

広報PRやマーケティング活動においても、情報を効率的にリサーチしたり、世論を分析したり、PR戦略の壁打ちをしたりするなど、生成AIは欠かせないツールとなりました。

様々なモデルやサービスが乱立する中で効率的にLLMを活用するには、現時点ではノーコードLLM構築ツールの「Dify」1択といっても過言ではありません。

しかしこうしたLLM構築ツールは、ノーコードといえどもある程度使い方のコツが必要です。今回はDifyを活用した情報リサーチのポイントを、備忘録を兼ねて解説します。

目次[非表示]

  1. 広報PR業務における生成AIツールの可能性
  2. 情報の収集・分析に使える生成AI
    1. Difyで使える検索ツール
      1. Google「GoogleSearch」
      2. SearchAPI「Google Search API 」
      3. Bing
      4. TavilySearch
      5. JinaSearch
    2. ツールごとの検索結果比較
      1. Perplexity(WEB PRO)
      2. Google search
      3. Google Search API
      4. DuckDuckGo Search
      5. BingWebSearch
      6. Tavily
      7. JinaSearch
      8. (参考)GPT Resercher
      9. Tavily(カスタムツールで実行 / include_raw_content有効)
    3. 比較結果のまとめ
  3. カスタムツールの作り方
  4. Difyの検索ツールのまとめ
    1. レスポンスデータの範囲
    2. パラメーター設定範囲
    3. データ量
  5. (参考)PerplexityをDifyで利用するには
    1. Perplexity APIはソースを出してくれない?

広報PR業務における生成AIツールの可能性

生成AIはPR業務においても、以下のような様々なタスクをサポートすることが可能です。

・ニュース等の情報リサーチ
・プレスリリース/メディアピッチ/SNS投稿文章作成
・PR素材の作成(画像/動画/キャッチコピー等)
・メディアリスト作成/アプローチメディア提案(情報マッチング)
・報道記事調査(Webリサーチ)
・新聞記事の文字起こし(ビジョン活用)
・ソーシャルリスニング(データ分析/テキストマイニング)

特に海外では、Muck RackPropelなどのツールを見ると、メディアピッチ(エレベータピッチのメディア版)作成とジャーナリストとのマッチングに重きを置いているようです。

  AIを活用した海外のPRサービス5選 PropelなどAIを活用した海外のPRサービス5選を紹介します。 広報・PR支援の株式会社ガーオン

リリースなどのテキスト作成方法は以下の記事を参考にしてください。

  Difyにプレスリリースを自動作成させる方法 ノーコードLLM構築ツールDifyでプレスリリース作成業務を自動化する方法を解説します。 広報・PR支援の株式会社ガーオン
  Difyの使い方(メモリ—機能とは) Difyでつまづきそうなメモリ—機能の使い方を解説します。 広報・PR支援の株式会社ガーオン

ブロクやオウンドメディアに関しては、質の良い原稿作成などがAIで簡単にできるようになると、差別化ポイントは「個人的な体験・経験」「独自の洞察」がいかに含まれているかというポイントになるのではないでしょうか。AI出力による量産記事の価値は、ほぼゼロに近づいていくことも想定されます。

しかしその段階に行くまでは、当面AIを活用してどれだけ広く・深く・効率的に情報を集められるかというリサーチ力(AI操作力)で大きな差がつくとも考えられます。


情報の収集・分析に使える生成AI

Webブラウジング機能を持った生成AIには、ChatGPTやBingの他、Cohere、Geminiなどが挙げられますが、現時点では精度やハルシネーションの少なさ、ソースURLの提示頻度などからソフトバンクが提携したことでも有名なPerplexityのWEB版(Pro)が最強なのではないかと思われます。

Perplexity自体は厳密には生成AIモデルではなく、GPTやClaude3など他社の外部AIモデルを使って独自の検索システムによる検索タスクとその結果を要約させているシステムとなります。

Perplexityはどのモデルを使っているかで精度や出力結果も変わるため、使っている人や環境によって精度が大きく異なることが想定されます。そのため一律な評価が見えにくい状況でもあるかと思います。

ちなみに生成AIにはエージェントという概念もあります。これは目的を実現するためのタスク自体をAIが考えて自ら行動するもので、Difyにもエージェントというメニューが用意されています。

リサーチ業務ではGPT Resercherという自動レポートサービスも提供されています(これもエージェント型で、長くなってしまうので別途解説したいと思います)。

AI活用のリサーチ業務のポイントとしては、

  1. 膨大なWeb情報からいかに目的の情報を効率的に収集できるか(検索クエリ選定と検索・スクレイピング処理能力)

  2. ソースや引用元などをどう取捨選択するか(信頼性や重要性の重みをどう考えるか)

  3. 生成AI独自のハルシネーション(でまかせ出力)をどう抑制するか

  4. 集めた情報からいかに具体的・独創的な主張/ポジションを作れるか

といったことなどがポイントとして挙げらるのではないでしょうか。

Difyを活用したリサーチでも、こうした課題を以下に解決できるかが鍵となるでしょう。

Difyで使える検索ツール

今回は現時点でDify最新Ver.のVersion 0.6.15をベースとして解説していきます。

Difyには様々な検索エンジンツールがディフォルトで用意されています(2024/7/29現在Serchカテゴリは計16個)。

Difyを使ったリサーチ業務では、こうした組み込みツールを使うことが多いかと思います。しかしDifyの分かりづらいポイントの一つが、名称や区分ルールが一定でない(結構いい加減)ことです。チャットボット/エージェント/ワークフローといった機能面でも名称や分類がMECEでないことも分かりづらいです。

以下に主要なツールをまとめてみました。ここからいくつかの代表的なエンジンを個別に見ていきます。

Dify検索ツール一覧

※DuckDuckGo以外はAPIキー(無料あり)が必要となります。

Google「GoogleSearch」

Googleのロゴが入っており一番目立つのがツール名「GoogleSearch」です。

GoogleSearchの内部は、Google検索のAPIで古くから有名なSerpAPIが使われているようです。

GoogleSearchは、入力パラメーターがクエリ1つしかないため、国などを指定した検索結果が出せないなど、使い勝手はあまり良くない印象です。

検索結果の出力は、タイトルとスニペットのみとなり、中国語も多く正直あまり使えない印象です。

SearchAPI「Google Search API

GoogleSearchに似たような名称の「Google Search API」というツールもあり、こちらの内部には、SearchAPIが使われているようです。

SearchAPIは国やGoogleドメインなども選べれるため、サクッと使うのであればこちらのほうが良さげです。

Bing

BingはAzure環境が必要となるため、少し面倒です。そこまで使う必要性は特にないかと思います。現バージョンは出力件数が効いていないようです。

TavilySearch

Google / SearchAPIなどは、Googleの検索結果(タイトル/ディスクリプション/URL)をそのままを取得するものなので、実際に何かしらの参考データとして使う場合は、検索クエリを工夫したり、結果のページをクロールしてさらに情報を深ぼったりする必要があり、LLMで効率的に探索するに色々と工夫が必要です。

こうした課題を解決するのがTavilySearchです。

  Tavily Say hello to Tavily, your AI researcher for rapid insights and comprehensive research. https://tavily.com/

以下オフィシャルページによる説明翻訳です。

Tavily Search APIは、LLMとRAGのために最適化された検索エンジンで、効率的で迅速かつ持続的な検索結果を目指しています。 SerpやGoogleのような他の検索APIとは異なり、TavilyはAI開発者や自律型AIエージェント向けに検索を最適化することに重点を置いています。


Google、Serp、Bingなどの現在の検索APIは、ユーザーのクエリに基づいて検索結果を取得します。 しかし、その検索結果は時として検索の目的とは無関係であったり、必ずしも関連性が高いとは限らない単純なサイトのURLやコンテンツのスニペットを返したりする。 このため、開発者であれば誰でも、関連するコンテンツのためにサイトをスクレイピングし、無関係な情報をフィルタリングし、LLMのコンテキストの制限に合うようにコンテンツを最適化するなどの作業が必要になる。 この作業は負担が大きく、正しく行うにはスキルが必要です。


Tavily Search APIは、1回のAPIコールで20以上のサイトを集約し、独自のAIを使用して、タスク、クエリ、またはゴールに最も関連性の高いソースとコンテンツをスコアリング、フィルタリング、ランク付けします。 さらに、Tavilyでは、開発者がコンテキストや制限応答トークンなどのカスタムフィールドを追加して、LLMに最適な検索体験を可能にすることができます。

TavilyはLLMに特化した検索エンジンであるということです。

Difyにディフォルトで設定されているTavilyのパラメーターは一部動作していないようで、少なくとも下記項目は有効になっていないようでした。

  • Search Depth
  • Include Images
  • Include Answer
  • Include Raw Content

特にInclude Raw Contentは検索結果のページのHTMLをパースして持ってくる機能なので、これがあるなしでは大きく変わる気がします(比較結果は後述)。

結論として「Tavily自体は使えるが、DifyディフォルトのTavilyツールは設定が有効化されておらず使えない。カスタムツールとして個別に設定すると強力な検索ツールとして使える」ということです。

JinaSearch

JinaSearchもLLMに特化したエンジンです。Jinaは検索エンジンのJinaSearchとURLをスクレイピングするJinaReaderとに分かれています。

JinaSearchは日本語にはあまり強くない印象ですが、こちらはディフォルトでタイトル・URLと合わせて、本文データ全体も取得できる点が特長です。

ツールごとの検索結果比較

ここからは実際のクエリを入れてみて、精度を比較してみたいと思います。精度を比較できるようDifyの組み込みツール以外にも、Perplexity(WEB PRO)、GPT researcherなども入れて比較してみます。

質問文は、
Q1. 2024年の東京都知事選の1位~5位までの結果と得票数は?
Q2. 2023年に最も印刷部数が多かった雑誌とその前年比の増減率は?

の2つで実験しています。

この回答は、それぞれ下記となります。

======================
小池 百合子2,918,015(42.8%)
石丸 伸二1,658,363(24.3%)
蓮舫1,283,262(18.8%)
田母神 俊雄267,699(3.9%)
安野 貴博154,638(2.3%)
======================
週刊少年ジャンプ
2023年1-3月期:1,257,273部(-4.9%)
2023年4-6月期:1,176,667部(-8.8%)
2023年7-9月期:1,160,833部(-9.5%)
2023年10-12月期:1,133,846部(-10.0%)
======================

ではそれぞれの検索AIで結果を見ていきます。

ブロックはクエリ作成と解釈とにそれぞれLLM(gpt-4o-mimi)を2つ入れています。

Dify

まずはベース精度としてPerplexity(WEB PRO)から見ていきます。

Perplexity(WEB PRO)

2024年の東京都知事選の結果は以下の通りです。
1位:小池百合子氏 - 2,918,015票(42.77%)
2位:石丸伸二氏 - 1,658,363票(24.30%)
3位:蓮舫氏 - 1,283,262票(18.81%)
4位:田母神俊雄氏 - 267,699票
5位:安野貴博氏 - 154,638票
投票率は60.62%で、前回の55.00%を5.62ポイント上回りました。


→正解

2023年に最も印刷部数が多かった雑誌は週刊文春であり、発行部数は643,333部です。前年比の詳細な増減率に関する情報は見つかりませんでしたが、特定の雑誌の前年同期比での動向がいくつか報告されています。例えば、週刊少年ジャンプは312,156部減少しています。


→不正解

安定のPerplexityという感じですが、Webに記載が少ない情報は弱いようです。PRO検索でもハルシネーションが出てきました。

Google search

2024年の東京都知事選挙の結果は以下の通りです:
小池百合子(現任知事) - 得票数:291万8015票(得票率:42.77%)
石丸伸二(前広島県安芸高田市市長) - 得票数:不明(ただし、2位)
蓮舫(前立憲民主党籍参議員) - 得票数:不明(ただし、3位)
4位と5位の候補者およびその得票数についての情報は、提供されたコンテキストには含まれていません。したがって、分からないものは分からないとお答えします。


→不正解

2023年に最も印刷部数が多かった雑誌やその前年比の増減率についての具体的なデータは持っていません。最新の情報を得るためには、業界の報告書や関連するニュースを確認することをお勧めします。


→不正解

Google Search API

2024年の東京都知事選の結果は以下の通りです。
小池百合子(無所属) - 291万8015票
石丸伸二(無所属) - 165,000票(おおよその数)
蓮舫(無所属) - 17,887票
田母神としお(無所属) - 得票数は不明
その他の候補者 - 得票数は不明
具体的な得票数が不明な候補者については、情報が提供されていないため、正確な数は分かりません。


→不正解

2023年に最も印刷部数が多かった雑誌についての具体的な情報は、提供されたコンテンツには含まれていません。また、前年比の増減率についても明確なデータは示されていないため、正確な回答はできません。詳細な情報が必要な場合は、関連するデータを提供しているサイトや報告書を参照することをお勧めします。


→不正解

DuckDuckGo Search

2024年の東京都知事選の1位から5位までの結果と得票数は以下の通りです。
1位: 小池百合子氏 - 291万8015票 (得票率 42.8%)
2位: 石丸伸二氏 - 165万8363票 (得票率 24.3%)
3位: 蓮舫氏 - 128万3262票 (得票率 不明)
4位: 不明
5位: 不明
4位と5位の候補者およびその得票数については、提供された情報には記載がありませんでした。


→不正解

2023年に最も印刷部数が多かった雑誌についての具体的な情報は、提供されたcontextには記載されていません。また、前年比の増減率についても明確なデータは示されていないため、正確な回答はできません。詳細な情報が必要な場合は、日本雑誌協会の公式サイトや関連する出版業界のデータを参照することをお勧めします。


→不正解

BingWebSearch

2024年の東京都知事選の結果は以下の通りです。
1位: 小池百合子氏 - 得票数は不明
2位: 石丸伸二氏 - 165万票
3位: 蓮舫氏 - 得票数は不明
4位: 不明
5位: 不明
得票数が不明な候補者については、具体的な情報が提供されていないため、詳細は分かりません。


→不正解

2023年に最も印刷部数が多かった雑誌についての具体的な情報は提供されていませんが、2023年7-9月期のAERAは前年同期比で6.2%増の58,083部となっており、回復の兆しが見られています。また、2024年1-3月期では「美的」が最も部数が多く、前年同期比で3,400部の増加があったとされています。具体的な雑誌名とその前年比の増減率については、情報が不足しているため、正確にはお答えできません。


→不正解

Tavily

2024年の東京都知事選の結果は以下の通りです。
1位: 小池百合子氏 - 291万8015票
2位: 石丸伸二氏 - 165万8363票
3位: 蓮舫氏 - 128万3262票
4位: 不明
5位: 不明
4位と5位の候補者およびその得票数についての情報は、提供されたcontextには含まれていません。


→不正解

2023年に最も印刷部数が多かった雑誌についての具体的な情報は、提供されたコンテキストには含まれていません。ただし、2023年7-9月期のAERAは前年同期比で6.2%増の58,083部となっており、回復の兆しが見えていることが示されています。他の雑誌の具体的な部数や前年比の増減率については、情報が不足しているため、分からないとお答えします。


→不正解

JinaSearch

2024年の東京都知事選の結果は以下の通りです。
小池百合子(無所属) - 得票数: 2,918,015票 (42.77%)
石丸伸二(無所属) - 得票数: 1,658,363票 (24.30%)
蓮舫(無所属) - 得票数: 1,283,262票 (18.81%)
田母神俊雄(無所属) - 得票数: 267,699票 (3.92%)
安野貴博(無所属) - 得票数: 154,638票 (2.27%)
以上が1位から5位までの候補者とその得票数です。


→正解

2023年1-3月期に最も印刷部数が多かった雑誌についての具体的な情報は提供されていませんが、部数が増えた雑誌の中で最も増加率が高かったのは集英社の「ウルトラジャンプ」で、前年比で181%増となっています。その他の雑誌の具体的な印刷部数や前年比の増減率については、詳細な情報は記載されていません。


→不正解

(参考)GPT Resercher

2024年東京都知事選挙の結果報告
概要
2024年7月7日に実施された東京都知事選挙は、現職の小池百合子氏が3選を果たし、注目を集めました。この選挙は、東京都の未来を左右する重要な選挙であり、多くの有権者が投票に参加しました。以下に、1位から5位までの候補者の結果と得票数を詳細に報告します。


選挙結果
1位: 小池百合子氏
得票数: 2,918,015票
年齢: 71歳
所属: 無所属
肩書: 東京都知事(現職)
小池百合子氏は、東京都知事としての2期8年の実績を強調し、選挙戦をリードしました。彼女の公約には、無償保育の拡大や中小企業の賃上げ支援などが含まれており、これが有権者に支持された要因と考えられます。小池氏は、自民党と公明党の支持層を固め、無党派層の3割を取り込むことに成功しました(読売新聞)。


2位: 石丸伸二氏
得票数: 1,658,363票
年齢: 41歳
所属: 無所属
肩書: 前広島県安芸高田市長
石丸伸二氏は、SNSを駆使して若い無党派層の支持を集めました。彼の選挙戦略は、ネット選対を活用し、若者層にアピールするものでした。石丸氏は、国政にも言及し、将来的な政治活動の選択肢として広島1区を挙げています(読売新聞)。


3位: 蓮舫氏
得票数: 1,283,262票
年齢: 56歳
所属: 無所属
肩書: 前参院議員
蓮舫氏は、立憲民主党の支持を受けて立候補しましたが、選挙戦では共産党色が強すぎたとの指摘もあり、失速しました。彼女は選挙後、「私の力不足」とコメントし、結果を受け入れました(日本経済新聞)。


4位: 田母神俊雄氏
得票数: 不明(上位3名の得票数のみ公表)
年齢: 75歳
所属: 無所属
肩書: 元航空幕僚長
田母神俊雄氏は、元航空幕僚長としての経歴を持ち、保守層の支持を集めましたが、十分に浸透しなかったと述べています。彼は「もうちょっと頑張れるかなと思っていた」とコメントしています(読売新聞)。


5位: 安野貴博氏
得票数: 不明(上位3名の得票数のみ公表)
年齢: 33歳
所属: 無所属
肩書: AIエンジニア、起業家、作家
安野貴博氏は、AIエンジニアとしての背景を持ち、テクノロジーの力で東京を変えることを公約に掲げました。彼は、デジタル民主主義の実現を目指し、選挙戦に挑みました(東京新聞)。


投票率
2024年の東京都知事選挙の投票率は60.62%で、前回選挙を5.62ポイント上回りました。この高い投票率は、有権者の関心の高さを示しています(読売新聞)。
選挙戦の特徴
小池百合子氏の強み
小池百合子氏の強みは、2期8年の実績にあります。彼女は、無償保育の拡大や中小企業の賃上げ支援など、具体的な政策を掲げ、有権者にアピールしました。また、自民党と公明党の支持層を固め、無党派層の3割を取り込むことに成功しました。これにより、他の候補者に大差をつけて当選を果たしました(読売新聞)。
石丸伸二氏の戦略
石丸伸二氏は、SNSを駆使して若い無党派層の支持を集めました。彼の選挙戦略は、ネット選対を活用し、若者層にアピールするものでした。これにより、彼は165万票以上を獲得し、2位にランクインしました。石丸氏は、今後の政治活動についても言及しており、将来的な国政進出の可能性を示唆しています(読売新聞)。
蓮舫氏の失速
蓮舫氏は、立憲民主党の支持を受けて立候補しましたが、選挙戦では共産党色が強すぎたとの指摘もあり、失速しました。彼女は選挙後、「私の力不足」とコメントし、結果を受け入れました。立憲民主党内でも、蓮舫氏の大敗に対する衝撃が広がっており、次期衆院選での野党連携にも影響が出る可能性があります(日本経済新聞)。
田母神俊雄氏と安野貴博氏の挑戦
田母神俊雄氏と安野貴博氏も注目されましたが、上位3名には及びませんでした。田母神氏は保守層の支持を集めましたが、十分に浸透しなかったと述べています。安野氏は、AIエンジニアとしての背景を持ち、デジタル民主主義の実現を目指しましたが、得票数は上位には届きませんでした(東京新聞)。
結論
2024年の東京都知事選挙は、現職の小池百合子氏が3選を果たし、大差で勝利しました。石丸伸二氏はSNSを駆使して若い無党派層の支持を集め、2位にランクインしました。蓮舫氏は共産党色が強すぎたとの指摘もあり、3位に終わりました。田母神俊雄氏と安野貴博氏も注目されましたが、上位3名には及びませんでした。この選挙結果は、東京都の未来に大きな影響を与えるものであり、今後の政治動向にも注目が集まります。
参考文献
読売新聞. (2024, July 7). 都知事選で現職の小池百合子氏が当選、2位石丸伸二氏に大差…蓮舫氏は3位. 読売新聞. https://www.yomiuri.co.jp/election/tochijisen/20240707-OYT1T50076/
日本経済新聞. (2024, July 8). 東京都知事選の得票確定 小池氏291万票、石丸氏165万票. 日本経済新聞. https://www.nikkei.com/article/DGXZQODL081VV0Y4A700C2000000/


→不正解

2023年に最も印刷部数が多かった雑誌とその前年比の増減率は?
2023年の雑誌業界は、デジタルシフトの加速や消費者の嗜好の変化により、大きな変動を見せました。本報告書では、2023年に最も印刷部数が多かった雑誌とその前年比の増減率について詳しく分析します。特に、各雑誌の発行部数の推移や市場動向をデータに基づいて解説し、今後の展望についても考察します。
2023年の雑誌市場では、特定のジャンルやタイトルが際立った成長を見せる一方で、全体的な部数は減少傾向にありました。例えば、日本雑誌協会のデータによると、少年向けコミック誌や生活実用情報誌などのカテゴリーで大幅な減少が見られました。一方で、特定のファッション誌やテレビ情報誌は、特別版や特集号の影響で部数を大きく伸ばしました。
特に注目すべきは、ファッション誌「ELLE JAPON」が前年同期比で60%増の163,767部を記録し、最も部数を伸ばした雑誌となった点です。この急上昇は、平野紫耀さん特別版の影響が大きかったとされています(Gaaaon)。また、テレビ情報誌「週刊TVガイド」も前年同期比22.2%増の110,946部と好調でした。
一方で、少年向けコミック誌「週刊少年ジャンプ」は、前年同期比で1割以上減少し、約116万部となりました(Comiew)。このように、雑誌の部数はジャンルや特定の号によって大きく変動することがわかります。


→不正解

Tavily(カスタムツールで実行 / include_raw_content有効)

2024年の東京都知事選の結果は以下の通りです。
1位: 小池百合子氏 - 291万8015票 (得票率: 42.77%)
2位: 石丸伸二氏 - 165万8363票 (得票率: 24.30%)
3位: 蓮舫氏 - 128万3262票 (得票率: 18.81%)
4位: 田母神俊雄氏 - 26万7699票 (得票率: 3.94%)
5位: 安野貴博氏 - 15万4638票 (得票率: 2.29%)
この結果により、小池百合子氏は3回目の当選を果たしました。


→正解

2023年に最も印刷部数が多かった雑誌は「週刊少年ジャンプ」で、印刷部数は約116万部でした。しかし、前年同期比で部数は1割以上減少しています。具体的な前年比の増減率は記載されていませんが、部数の減少が続いていることが示されています。
他の雑誌については、ファッション誌の「ELLE JAPON」が前年同期比で60%増の163,767部となり、最も部数を伸ばした雑誌の一つです。
全体的に、2023年の雑誌業界は厳しい状況が続いており、多くの雑誌が部数を減少させています。


→正解

比較結果のまとめ

両方とも正しく正解したのは、Tavilyをカスタムツールとして実行しパラメーターinclude_raw_content(ページ全文取得)をオンにした際の回答のみとなりました。

今回試したVersion 0.6.15のディフォルトのTavilyは、パラメータ設定がうまく動きませんでした。そのため、カスタムツールとして実行したものが最も良い結果となっています。

これはバージョンのせいもあるかもしれませんが、ディフォルトの組み込みツールは、それぞれのAPIに用意されているパラメーターの数よりも極端に少ないため、積極的に使うのであれば個別にAPI等の設定していくのが良いかもしれません。

カスタムツールの作り方

Difyのカスタムツールは、GPTsなどと同様、OPEN APIのYAML形式などで入力します。このYAMLファイルはAIで作れば1発です。

例えば今回のTavilyもドキュメントをコピペし、以下のプロンプトでCalude3.5に入力しただけのものです。

以下の情報からOPEN APIをYAML形式で作って

Rest API
Overview**
Our REST API allows you to easily and quickly access Tavily Search, the best search engine tailored for LLM Agents. The Tavily Search REST API can be accessed through the base URL: https://api.tavily.com/.
If you want to experiment with the API from your browser, head to our **API Playground
!
Endpoint: POST /search
Search for data based on a query.
Parameters

  • query: string (required) - The search query you want to execute with Tavily.

  • api_key: string (required) - Your Tavily API Key.

  • search_depth: string (optional) - The depth of the search. It can be "basic" or "advanced". Default is "basic" unless specified otherwise in a given method.

  • topic: string (optional) - The category of the search. This will determine which of our agents will be used for the search. Currently: only "general" and "news" are supported. Default is "general".

  • max_results: int (optional) - The maximum number of search results to return. Default is 5.

  • include_images: bool (optional) - Include a list of query-related images in the response. Default is false.

  • include_answer: bool (optional) - Include a short answer to original query. Default is false.

  • include_raw_content: bool (optional) - Include the cleaned and parsed HTML content of each search result. Default is false.

  • include_domains: list<string> (optional) - A list of domains to specifically include in the search results. Default is [], which includes all domains. Please note that this feature is only available when using the "general" search topic.

  • exclude_domains: list<string> (optional) - A list of domains to specifically exclude from the search results. Default is [], which doesn't exclude any domains. Please note that this feature is only available when using the "general" search topic.

  • use_cache: bool (optional) - Use the cached web search results. Default is true. If false is passed, a new web search will be done before generating your search results.
    Response

  • answer: string - The answer to your search query.

  • query: string - Your search query.

  • response_time: float - Your search result response time.

  • images: list<string> - A list of query related image urls.

  • results: list - A list of sorted search results ranked by relevancy. Each result is in the following format:
       * title: string - The title of the search result URL.
       * url: string - The URL of the search result.
       * content: string - The most query related content from the scraped URL. We use proprietary AI and algorithms to extract only the most relevant content from each URL, to optimize for context quality and size.
       * raw_content: string - The parsed and cleaned HTML of the site. For now includes parsed text only.
       * score: float - The relevance score of the search result.

後は出てきた下記のコードをカスタムツールのスキーマ欄に入力するだけです。エラーが出ることが多いと思いますが、その場合はエラーコードを貼り付けるだけで数回往復すれば大体クリアになるでしょう。

openapi: 3.0.0
info:
  title: Tavily Search API
  description: |
    A REST API for accessing Tavily Search, the best search engine tailored for LLM Agents.
    Note: Only include optional parameters in the request if they are explicitly set.
    Omit any optional parameters that are not provided to allow the API to use its default values.
  version: 1.0.0
servers:
  - url: https://api.tavily.com
paths:
  /search:
    post:
      operationId: tavilyPerformSearch
      summary: Search for data based on a query
      description: |
        Perform a search using Tavily. Only 'query' and 'api_key' are required.
        For all other parameters, only include them in the request if they are explicitly set.
        Omit any optional parameters that are not provided to allow the API to use its default values.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - query
                - api_key
              properties:
                query:
                  type: string
                  description: The search query you want to execute with Tavily
                api_key:
                  type: string
                  description: Your Tavily API Key
                search_depth:
                  type: string
                  enum: [basic, advanced]
                  description: The depth of the search. Omit to use the default value.
                topic:
                  type: string
                  enum: [general, news]
                  description: The category of the search. Omit to use the default value.
                max_results:
                  type: integer
                  description: The maximum number of search results to return. Omit to use the default value.
                include_images:
                  type: boolean
                  description: Include a list of query-related images in the response. Omit to use the default value.
                include_answer:
                  type: boolean
                  description: Include a short answer to original query. Omit to use the default value.
                include_raw_content:
                  type: boolean
                  description: Include the cleaned and parsed HTML content of each search result. Omit to use the default value.
                include_domains:
                  type: array
                  items:
                    type: string
                  description: A list of domains to specifically include in the search results. Omit if not needed.
                exclude_domains:
                  type: array
                  items:
                    type: string
                  description: A list of domains to specifically exclude from the search results. Omit if not needed.
                use_cache:
                  type: boolean
                  description: Use the cached web search results. Omit to use the default value.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  answer:
                    type: string
                    description: The answer to your search query
                  query:
                    type: string
                    description: Your search query
                  response_time:
                    type: number
                    format: float
                    description: Your search result response time
                  images:
                    type: array
                    items:
                      type: string
                    description: A list of query related image urls
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        title:
                          type: string
                          description: The title of the search result URL
                        url:
                          type: string
                          description: The URL of the search result
                        content:
                          type: string
                          description: The most query related content from the scraped URL
                        raw_content:
                          type: string
                          description: The parsed and cleaned HTML of the site
                        score:
                          type: number
                          format: float
                          description: The relevance score of the search result
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '422':
          description: Unprocessable Entity
        '500':
          description: Internal Server Error

※ちなみにTavilyの入力変数は少し厳格なようで、include_domainsとexclude_domainsは空で使うときは空のリスト入力[]が必要のようです。

Difyの検索ツールのまとめ

Difyの検索ツールのポイントとしては、

  1. レスポンスデータの範囲
  2. パラメーター設定範囲
  3. データ量

の3点が挙げられるかと思います。

レスポンスデータの範囲

まずレスポンスデータの範囲としては、
・タイトル
・URL
・スニペット
・本文

の4つをどこまで取得するかがポイントとなるかと思います。

大抵の場合、重要になるコンテキストは本文に含まれているため、本文全文を取得するツールでないと有効に使えない可能性が高いと思われます。

今回調べたディフォルトツールの中で、本文まで全て取ってくるのはFirecrawlとJinaSearchのみでした。

パラメーター設定範囲

2点目が、パラメーターの設定がどこまで設定可能かどうかです。

GoogleSearch(SERP API)は言語設定可能ですが、ディフォルトツールではクエリの入力しかできないため、ディフォルトツールでは中国語が返ってきてしまうケースが多かったです。

このあたりはディフォルトで使うならば、location、domainが選択できるGoogle Search APIなどが選択肢として残るかと思います。それかカスタムツールを前提として使ったほうがよいでしょう。

データ量

3点目がデータ量です。Firecrawl SearchもJinaSearchもレスポンスデータが10万トークン以上になることも多く、gpt-4o-miniの12万8千コンテキストウインドウ長を超えてくるケースもありました。

そうするとエラーとなってしまいますし、コストも馬鹿にならないでしょう(gpt-4o-miniは100万トークンあたり0.15ドル)。

また精度の高い回答のためには、無駄なノイズを減らすことも重要となるかと思います。このあたりは「Code」ブロックでレスポンスデータを前処理することも重要だと思われます。

今回の実験の結論から言うと、
TavilyをAPIでカスタムツールとして利用し、Include Raw Contentを有効として使う
ということになります。

(参考)PerplexityをDifyで利用するには

Tavilyの活用も良いですが、手っ取り早くPerplexityをDifyで使いたいという気持ちにもなってきます。

しかしPerplexityはDifyではモデルプロバイダーとして提供されていません。そのため初期設定のまま使うことはできないため、OpenAI-API-compatible(Open AIのAPIと互換性のあるAPIとして追加)の項目から追加設定する必要があります。

PerplexityAPIのWebブラウジング対応モデルは、Metaのオープンソースモデル「llama」を使ったPerplexity検索特化のオンラインモデル llama-3-sonar-small-32k-online llama-3-sonar-large-32k-online の2種類となります。
DifyにPerplexityを設定する

設定方法は、設定からOpenAI-API-compatibleのAdd modelから Model TypeをLLM、Model Nameをllama-3-sonar-large-32k-online あるいは llama-3-sonar-small-32k-onlineに指定し、endpointに https://api.perplexity.ai/ 、Delimiter for streaming resultsを \¥\¥ から \¥ (他はディフォルト設定)を設定します。

PerplexityAPIのプライシングは、オンラインモデルが1,000リクエスト5ドルかかり、さらにsmall-32kが100万トークンあたり0.2ドル、large-32kはその5倍の1ドルとなっています。

ちなみに当ブログ執筆時の2024年7月27日には、Open AIが検索機能を強化したSearchGPTを発表しており、今後Perplexityの大きな競合になることが想定されます。

  「AI検索」の可能性と課題 「SearchGPT」から考える検索新時代【西田宗千佳のイマトミライ】 OpenAIは、検索に特化したサービスである「SearchGPT」をスタートすると発表した。 Impress Watch


Perplexity APIはソースを出してくれない?

PerplexityをAPI経由でDifyやPython等で使おうとすると、『ソースURL絶対出力してくれない問題』が立ちはだかります。これはおそらくシステムプロンプトで強力に制限されているからだと思われます。

Perplexity側はソースURL出力モデルを、クローズドβという形でアナウンスしてはいるものの、申請が通っているユーザーはほとんどいない模様です。
https://perplexity.typeform.com/to/j50rnNiB?typeform-source=docs.perplexity.ai

ソースが出せないPerplexityは完全なブラックボックスであり、リスクも高まってしまいます。

この現象を解決するには、「ソースをjson形式で出して」と指示すると出してくれやすい傾向にあるようですが、かなり気まぐれです。

補足テストとして、先程の都知事選と雑誌部数のクエリをPerplexityAPI(llama-3-sonar-large-32k-online )に投げてみます。

2024年の東京都知事選の1位~5位までの結果と得票数は以下の通りです: 1. 小池百合子氏 - 291万8015票(得票率42.8%) 2. 石丸伸二氏 - 165万8363票(得票率24.3%) 3. 蓮舫氏 - 128万3262票(得票率18.81%) 4. 安野貴博氏 - (詳細な得票数は提供されていません) 5. (詳細な順位や得票数は提供されていません) これらの情報は、以下のソースに基づいています: - https://xtrend.nikkei.com/atcl/contents/18/00921/00014/ - https://www.nhk.or.jp/shutoken/articles/101/008/00/ - https://www.tokyo-np.co.jp/article/338617 ソース元: json [ {"title": "東京都知事選 2024でネットはどのように使われていたか", "url": "https://news.yahoo.co.jp/expert/articles/2b9a61ceb255aa3262800e6bd5309f8b994acb34"}, {"title": "石丸伸二vs蓮舫、53勝9敗の衝撃 東京都知事選62市区町村対決", "url": "https://xtrend.nikkei.com/atcl/contents/18/00921/00014/"}, {"title": "東京都知事選挙 2024 開票結果は 投票率 都政への評価と今後は - NHK", "url": "https://www.nhk.or.jp/shutoken/articles/101/008/00/"}, {"title": "【全員掲載】東京都知事選 各候補の確定得票数", "url": "https://www.tokyo-np.co.jp/article/338617"} ]

→不正解(しかしソースは出力)

2023年に最も印刷部数が多かった雑誌名と部数、前年比の増減率は以下の通りです。 ### 最も印刷部数が多かった雑誌 1. 週刊少年ジャンプ - 2023年10-12月期の印刷部数: 2,431,529部 - 前年比の増減率: -11.4%(312,156部減少) ### 部数が増えたカテゴリー 1. 業界・技術専門誌 - 2023年10-12月期の印刷部数: 15,700部 - 前年比の増減率: -5.0%(833部減少) ### 部数が減ったカテゴリー 1. 少年向けコミック誌 - 2023年10-12月期の印刷部数: 2,431,529部 - 前年比の増減率: -11.4%(312,156部減少) ### その他の情報 - 週刊少年ジャンプは、2023年10-12月期に最も部数が減少した雑誌で、前年同月比で12万部(11%)の減少を示した。 - 週刊少年マガジンは、2016年7-9月期に100万部を割り込み、少年向けコミック誌で100万部超えの雑誌は「週刊少年ジャンプ」だけとなった。 ### ソース元 - https://gaaaon.jp/blog/2023_10-12mediadata - https://news.yahoo.co.jp/expert/articles/20ef023336bc7b684bb4b6cf891d27192f730bea - https://news.yahoo.co.jp/expert/articles/f639a0d1053dca8c2a0e90a42ee3a609b10bac9f


→不正解(しかしソースは出力)

ソースは出力されたものの、ハルシネーションが強く出てしまっています。Perplexity APIも課題は多そうです。

以上Difyのリサーチ機能についての解説でした。

関連記事

広報・PRやプレスリリースまわりでお困りのことはございませんか?
多数の企業サポートを行ってきた当社が解決いたします。
お気軽にお問合せください。