@メンションでAIがWeb検索&回答!Slack連携フローを作ってみた ーDify+Perplexity+GPT-5で構築する実践型チャットボットー

はじめに

Slackで日々やり取りされる膨大なメッセージ、AIに要約してもらえると便利ですよね。また同僚に質問されたとき、「このキーワード、ちょっとWebで調べないと答えられないな…」と思った経験はありませんか?
今回紹介するのは、@メンションするだけでAIがSlackのメッセージを要約してくれて、Web検索要否を判断し、必要に応じて自動検索&回答までしてくれるチャットボットです。

@AIM_san(私が作ったBotの名前)をメンションしてお願いすると会話を要約してくれます。

最新の情報が必要なときなどはWeb検索が必要かAIが判断して最新の情報を取得します。

このシステムは、

  • Slack での会話をトリガーに
  • Google Apps Script (GAS) でメッセージを取得
  • Dify で質問内容を解析し
  • GPT-5-Nano がWeb検索要否を判定
  • 必要に応じて Perplexity API で情報を取得し、回答を生成
    という流れで動作します。

記事では、本ワークフローの全体から詳細まで解説しています。
実践的なSlack連携フローの構築に興味がある方は、ぜひ参考にしてください。

著者プロフィール

経営コンサルタントの国家資格:中小企業診断士かつ現役技術者の小林隼人です。生成AIを活用して創業や中小企業経営の支援をしております。
詳しいプロフィールはこちら

全体の構成

基本的な構成は「Samurai Biz」さんの記事「【相性バツグン◎】GASとDifyで作るSlackBot」に基づいて構成されています。基本的なGAS、Dify、Slackの連携方法はそちらの記事をご覧ください。

元々のSamurai Bizさんの記事ではSlackから「@Slackbot」のようにメンションすることで生成AIを呼び出してチャット内のメッセージの要約や、質問ができるようになっています。ただし回答に使用する情報はSlackのメッセージ、もしくはモデル自身が学習している内容で最新の情報には回答できません。

本記事ではユーザーが入力した要求に対して、

  • 「Web検索が必要か」をAIに判断させ、
  • 検索するキーワードをAIに考えさせて
  • Perplexity(検索機能が強いAI)で検索して
  • 検索結果を使って回答する

という機能を実現します。使用するAIは記事を執筆している2025年8月10日現在、最新のOpenAI「GPT-5」を使用します。

以下に全体のフローチャートを示します。

Slackからの呼び出し

前述のように、この部分は「Samurai Biz」さんの記事「【相性バツグン◎】GASとDifyで作るSlackBot」をご覧ください。とてもわかりやすく書かれている良記事です。

Difyフローの設計

Difyフローの全体像

フローはこのような感じです。順に説明していきます。

なおこのフローのDSLファイルはこちらです。
手取り早く手元で再現したい方はダウンロードして使ってください。

Web検索が必要か判定する

開始では入力として

  • inputText : Slackでのメッセージの内容
  • instruction : Slackで@メンションされた時の指示(例:このメッセージを要約して)

の2つを受け取ります。

この後、「質問分類器」を使って、Web検索が必要かどうか判断します。ただし、「質問分類器」は2つの入力を受け取れない仕様なので、事前に「コード実行」ブロックでpythonを使ってinputTextとinstructionを結合しておきます。できればpythonを使わない方がわかりやすいと思ったのですが、Difyでうまく実現する方法がわからなかったので、pythonで解決しました。

コード自体はAIで生成させたものです。2つの文章をくっつけて一つにします。

質問分類器では、入力で受け取った文章から「Web検索」が必要かどうかを判定します。判定はAIに行わせます。今回は最新の生成AIであるgpt-5-nanoを選びました。GPT-5はこのようなAIエージェントシステムへの組み込みを想定して調整されており最適です。

GPT-5は入力文を読んで、「ウェブ検索が不要」か「ウェブ検索が必要」かどちらか一方を回答します。
この情報を元にこの後の処理が分岐します。

Web検索が不要な場合

Web検索が不要な場合は、そのままLLMブロックで処理します。

中身はSamurai Bizさんの記事と同じです。

Web検索が必要な場合

Web検索が必要な場合は分岐して下側のフローに流れます。

Perplexityを使ってWeb検索してその結果を使って回答を生成しますが、その前に検索キーワード(クエリ)を作るプロセスが必要になります。

gpt-5-nanoで検索クエリを作る

検索クエリの生成はLLMブロックでgpt-5-nanoに作ってもらいます。いわゆる”よしなに”やってもらうところです。このあたり、生成AIが出てきて本当に便利になった部分ですね。

ユーザーの要求に応えるためにPerplexityで検索をするので、検索のキーワード(クエリ)を作って、とお願いしています。そのままお願いすると複数の案を出力してしまい、検索しづらいので「最も有効と思われるクエリ一つだけ」を出力してと指示しています。

この指示に対する応答性の高さはGPT-5シリーズが優れるところです。余計なことはやらずに、言った通りのことをやる特性があります。

クエリを考えるための材料として、元々Slackから受け取った「inputText」、「instruction」を渡して、これを使って考えてね、とお願いしてます。

Perplexityで検索

検索はPerplexityで行います。Perplexityは生成AIを活用した強力な検索エンジンです。Difyのワークフローに組み込むことで、さらに強力な効果を発揮します。Difyに組み込むだけでなく普通に使ってもとても便利ですので、まだ使ったことない人はぜひ試してみてください。リンク[Perplexity]

Query(クエリ)に、直前のLLMブロックでgpt-5-nanoが生成した結果を入れてあげます。色々な設定項目がありますが、今回は全てデフォルト設定で使いました。

なお、PerplexityをDifyで使用するには

  • DifyにPerplexityをインストール
  • Perplexityにログインして、APIキーを発行
  • PerplexityのAPIに事前課金する

といった手順を踏む必要があります。本記事では紙幅の都合上割愛します。

検索結果を使って回答を生成

Perplexityの回答を、inputText、instructionと一緒にLLMブロックに渡して最終的な回答を生成します。

最終的な回答を作る

最後のところですが、Difyのワークフローは分岐したあと最後の回答を出力する前に、どのフローの結果を使うのか整理して「終了」ブロックに渡す必要があります。特にプログラミング経験者からすると直感的でなくわかりづらいところですが、Difyの仕様上こうなっています。

「変数集約器」というブロックで実行しています。

最終的な変数集約器で集約した回答を、出力に渡して出力します。

Slackへ返信

Difyのワークフローからの出力はGASで受け取り、GASがslackに書き込んでくれます。

この処理はSamurai Bizの処理から変更ないです。

実際に使ってみての所感

精度

gpt-5-nanoおよびPerpelxityの基本性能が高いので、精度はとても高く感じます。日常用途ではこれで十分じゃないでしょうか。

レスポンス

処理する内容によりますが、メンションしてから数秒から10秒程度でレスポンスが返ってきます。それほどストレスではないですが、もうちょっと早いと嬉しいかも。

API費用

gpt-5-nanoおよびperplexityをAPIで使っているので利用料がかかります。

ただ2025年8月現在、gpt−5-nanoのAPI料金は

  • Input : 0.05 $ / 百万トークン
  • Output : 0.40 $ / 百万トークン

とかなり低額で提供されています。日本語の場合1トークンがおよそ1文字と言われています。よって100万文字入力して0.05$(約7円)ですから、利用頻度や規模によりますが、かなり安いと言えるでしょう。

perplexityのAPIは今回使用した「sonar」というモデルならば

  • Input : 1 $ / 百万トークン
  • Output : 1 $ / 百万トークン

となっています。検索キーワードは基本的に短い文章であることを考えれば、こちらもそこまで負担にならないのではないかと思います。

なおAPIって何?という方は下記のリンク先の記事に解説していますのでご覧ください。

APIとは?初心者向けに超簡単解説

他サービスとの連携

Dify、GASと生成AIを組み合わせるとこんな感じで色々なことができます。SlackのAPI機能も色々ありますが、例えばNotionと組み合わせるとさまざまなことが実現できそうですね。

終わりに

いかがでしたでしょうか。単体でも便利なDifyやGASですが組み合わせて使用することで何倍にも強力なツールになります。

細かい説明は端折ったところもあります。わかんないところがあれば本記事のコメント欄などでご質問ください。

コメント

タイトルとURLをコピーしました