![見出し画像](https://assets.st-note.com/production/uploads/images/166496432/rectangle_large_type_2_fd2f9f8655905d69d7b9f2b04bd65856.jpeg?width=1200)
Difyで技術情報収集を簡潔に
こんにちは、CTOの永井(shnagai)です!
この記事は、コネヒト生成AIアドベントカレンダー 21日目の記事です。
日々の技術情報収集、私はこれまでXのフィードを頼りにしてきたんですが、最近アルゴリズムが崩壊してきて全然お目当ての技術情報にたどりつけなくなったという悩みを抱えていました。
今回Difyを使って自分だけの最強の技術情報収集ツールが簡単に作れることがわかったので、内容をDSLベースで紹介できればと思います。
ワークフロー
やることはざっくり、技術系のフィードをスクレイピングし、AIモデルで分析した情報をSlackに通知するという流れです。
![](https://assets.st-note.com/img/1734685944-UMnLmfFZo3kS506TCDrBsPQK.png?width=1200)
DSLベースでノードを解説
Difyでどのような定義をしているのかをDSLベースで解説します。
ノーコードツールですが、処理を理解するにはDSLエクスポートでDSLを追うほうが捗ります。
DSLを活用した技術情報収集の流れ
1. ユーザーがRSSフィードのURLを選択
2. 指定されたURLから記事をスクレイピング
3. GPT-4が記事を分析し、重要な記事を選定
4. 選定結果をSlackに通知
5. ワークフロー終了
(1) START
ユーザーがRSSフィードURLを選択するステップです。
- data:
title: 開始
type: start
variables:
- label: url
max_length: 48
options:
- https://techcrunch.com/feed/
- フィードのURL
required: true
type: select
variable: url
• type: startでワークフローの開始地点を指定
• variables: ユーザーが選択可能なRSSフィードのURLを変数として定義。変数名はurl
(2) SCRAPE
Firecrawlというツールを利用して、指定されたURLから記事をスクレイピングします。
- data:
provider_name: firecrawl
title: Scrape
tool_name: scrape
tool_parameters:
url:
type: mixed
value: '{{#1734420255657.url#}}'
type: tool
• tool_parameters: スクレイピング対象のURLはstartノードで指定したurl変数
(3) LLM
スクレイピングしたデータをAIモデル(GPT-4o)で分析し、重要な記事を抽出します。
- data:
model:
name: gpt-4o
provider: openai
prompt_template:
- id: unique-id
role: system
text: '以下の{{#context#}}には多数の記事情報が含まれています。あなたは熟練エンジニアとして、この中から「読むべき価値が高い」10件の記事を厳選してください。選定時の判断基準は下記の通りです:
1. 最新技術動向やイノベーション:新規性や市場で注目されている技術を解説している記事
2. ソフトウェア開発・アーキテクチャ・デプロイメント:設計手法、技術スタック、CI/CDパイプラインなど、開発実務に役立つ記事
3. リーダーシップ・マネジメント:チームビルディング、プロジェクト管理、エンジニア組織のスケールに関する記事
4. サイバーセキュリティ・データ保護:セキュリティ上のベストプラクティス、脅威分析、プライバシー保護手法を扱う記事
5. 業界トレンド・市場分析:特定分野の動向、市場規模、ビジネス機会に関する洞察を与える記事
もし、これらの基準を満たす記事が10件見つからない場合は、見つかった範囲で最大限の記事を提示してください。
出力フォーマット:
それぞれの記事について、以下の情報を箇条書きで示してください。
• タイトル
• 記事URL
• 要約(2~3文程度で記事の中核的内容を説明)
• 短い見解(記事内容を受けた有用性や参考価値をコメント)'
type: llm
• model: GPT-4o
• prompt_template: モデルに渡すプロンプト。ここでは記事選定の基準を具体的に記載しています。尚、このプロンプト自体はGPTで作ったものをそのまま貼っているので、少しずつ運用しながら改善していく予定です。
(4) SLACK-SEND-MESSAGE
結果をSlackに通知します。
- data:
provider_name: slack
title: Incoming Webhook to send message
tool_parameters:
content:
type: mixed
value: '{{#1734479455928.text#}}'
type: tool
• provider_name: SlackのIncoming Webhookを使用。
• tool_parameters: 通知内容は、LLMノードでの出力をそのまま利用
(5) FIN
ワークフローを終了します。
- data:
title: fin
type: end
• type: endでワークフローの終端を定義。
出力として下記のような形式で10記事ピックアップされます。
【C#】文字列の最適化手法について - Annulus Games
記事URL: https://annulusgames.com/blog/cs-string-optimization/
要約: C#の文字列処理における最適化手法について解説。文字列のヒープアロケーションがパフォーマンスに与える影響について考察し、最適化のための具体的な手法を紹介。
見解: パフォーマンスの最適化は開発において重要な課題です。C#を使用するプロジェクトにおいて、効率的なメモリ管理を実現するための有用な知識を得られる記事です。
まとめ
シンプルな処理の組み合わせでこれまで時間のかかっていた技術情報収集に個人的にはブレークスルーを起こせました。(もっとよく出来る余地はもちろんありますが、及第点はこれぐらい簡単に出せるというところに価値があると感じてます)
どんな内容もいい感じにまとめてくれるLLMと便利ツールを簡単にワークフローに組み込めるDifyは改めてめちゃくちゃ便利なので、日々の業務や情報収集に取り込んでいきたいと思っています。