mirror of
https://github.com/langgenius/dify-docs.git
synced 2026-04-05 14:58:37 +07:00
255 lines
11 KiB
Plaintext
255 lines
11 KiB
Plaintext
---
|
||
title: チャットストリームエージェントを使用した Twitter アカウントの分析方法
|
||
---
|
||
|
||
> 著者:Steven Lynn. Difyのテクニカルライター
|
||
|
||
## はじめに
|
||
|
||
Difyでは、WebページをLLM(大規模言語モデル)が読み取れるMarkdown形式に変換するためのクローラーツール、例えばJinaを利用できます。
|
||
|
||
最近、[wordware.ai](https://www.wordware.ai/)が、クローラーを使ってソーシャルメディアをデータ収集し、LLM分析用の面白いアプリケーションを開発できることを教えてくれました。このアプリケーションは、特にデータ分析や洞察を提供するために設計されています。
|
||
|
||
しかし、かつてTwitterとして知られていた「X」は、2023年2月2日以降、無料のAPIアクセスを提供しなくなり、それに続いてクローリング対策を強化しました。そのため、JinaのようなツールはXのコンテンツに直接アクセスすることができなくなっています。
|
||
|
||
> 2023年2月9日から、Twitter APIの無料アクセスは終了し、v2およびv1.1のサポートも行われなくなります。代わりに、有料の基本プランが提供されます。 🧵
|
||
>
|
||
> — Developers (@XDevelopers) [February 2, 2023](https://twitter.com/XDevelopers/status/1621026986784337922?ref\_src=twsrc%5Etfw)
|
||
|
||
幸いなことに、DifyにはHTTPツールがあり、これを使用して外部のクローリングツールにHTTPリクエストを送信できます。それでは、始めていきましょう!
|
||
|
||
## **前提条件**
|
||
|
||
### Crawlbaseの登録
|
||
|
||
Crawlbaseは、ビジネスや開発者向けに設計されたデータクローリングとスクレイピングのプラットフォームです。このツールを使うことで、X、Facebook、Instagramなどのソーシャルメディアプラットフォームからデータを収集できます。
|
||
|
||
登録は以下のリンクから行えます:[crawlbase.com](https://crawlbase.com)
|
||
|
||
### Difyのローカル展開
|
||
|
||
DifyはオープンソースのLLMアプリケーション開発プラットフォームで、クラウドサービスを利用するか、docker composeを使用してローカルに展開できます。
|
||
|
||
この記事では、ローカル展開を希望しない方のために、無料のDify Cloudサンドボックスアカウントをこちらから登録する方法を紹介します:[https://cloud.dify.ai/signin](https://cloud.dify.ai/signin)。
|
||
|
||
<Info>
|
||
Dify Cloud Sandboxのユーザーは、200の無料クレジットを取得できます。これは、200のGPT-3.5メッセージまたは20のGPT-4メッセージに相当します。
|
||
</Info>
|
||
|
||
以下は、Difyを展開するための簡単な手順です:
|
||
|
||
#### Difyをクローン
|
||
|
||
```bash
|
||
git clone https://github.com/langgenius/dify.git
|
||
```
|
||
|
||
#### **Difyを起動**
|
||
|
||
```bash
|
||
cd dify/docker
|
||
cp .env.example .env
|
||
docker compose up -d
|
||
```
|
||
|
||
### LLMプロバイダーの設定
|
||
|
||
アカウント設定にて、モデルプロバイダーを設定してください:
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/4b4102f9027e2bda3fc520eaa8ea2354.png"
|
||
className="mx-auto"
|
||
alt="LLMプロバイダー設定画面1"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/0cc645cbf984c7ed90b4e4fc639e45a7.webp"
|
||
className="mx-auto"
|
||
alt="LLMプロバイダー設定画面2"
|
||
/>
|
||
</div>
|
||
|
||
## チャットフローの作成
|
||
|
||
それでは、チャットフローの作成を始めましょう。
|
||
|
||
`最初から作成`をクリックして、新しいフローの作成を開始します:
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/b2955735f5c122d8a2fc08ef13654239.png"
|
||
className="mx-auto"
|
||
alt="チャットフロー作成画面1"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/e35a7a9bcd3c96fbc28c41d9e0bebe7c.webp"
|
||
className="mx-auto"
|
||
alt="チャットフロー作成画面2"
|
||
/>
|
||
</div>
|
||
|
||
初期化されたチャットフローは以下のようになります:
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/baee341b771d1cd77780fd4845b467b2.png"
|
||
className="mx-auto"
|
||
alt="初期化されたチャットフロー画面1"
|
||
/>
|
||
<img
|
||
src="../../.gitbook/assets/twitter_init.webp"
|
||
className="mx-auto"
|
||
alt="初期化されたチャットフロー画面2"
|
||
/>
|
||
</div>
|
||
|
||
## チャットフローにノードを追加
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/bad3185d9f2c92994c24de65a5414182.png"
|
||
className="mx-auto"
|
||
alt="チャットフローノード追加画面"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/4524d29962bc9cc3c96e6d87376622da.webp"
|
||
className="mx-auto"
|
||
alt="最終的なチャットフロー"
|
||
/>
|
||
</div>
|
||
|
||
### 開始ノード
|
||
|
||
開始ノードでは、チャットの最初にシステム変数を追加できます。このプロセスでは、TwitterユーザーのIDを文字列型の変数として使用します。変数名を`id`としましょう。
|
||
|
||
開始ノードをクリックして、新しい変数を追加します:
|
||
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/0d77379c7c224bd6bd738e54ccc2ec5e.webp"
|
||
className="mx-auto"
|
||
alt="開始ノードの変数追加"
|
||
/>
|
||
|
||
### コードノード
|
||
|
||
[Crawlbaseのドキュメント](https://crawlbase.com/docs/crawling-api/scrapers/#twitter-profile)によれば、次のノードで使用する変数`url`は`https://twitter.com/`に`ユーザーID`を加えた形にする必要があります。例えば、Elon MuskのユーザーIDの場合は`https://twitter.com/elonmusk`となります。
|
||
|
||
ユーザーIDを完全なURLに変換するためには、以下のPythonコードを使用して、プレフィックス`https://twitter.com/`とユーザーIDを結合します:
|
||
|
||
```python
|
||
def main(id: str) -> dict:
|
||
return {
|
||
"url": f"https://twitter.com/{id}"
|
||
}
|
||
```
|
||
|
||
セキュリティ上の観点から、トークン値を平文で直接入力することは避けるべきです。これは推奨されるベストプラクティスではありません。実際、Difyの最新バージョンでは、トークン値を**環境変数**に設定できるようになっています。`env`をクリックして`Add Variable`を選択し、トークン値を設定すると、ノードに平文が表示されなくなります。
|
||
|
||
あなたのCrawlbase APIキーについては、[こちら](https://crawlbase.com/dashboard/account/docs)で確認できます。
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/c99b66ac8d30289615a8869bae5a6455.png"
|
||
className="mx-auto"
|
||
alt="API設定画面1"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/b022eeb088377ff9b62866c8de03f642.webp"
|
||
className="mx-auto"
|
||
alt="API設定画面2"
|
||
/>
|
||
</div>
|
||
|
||
`/`を入力することで、APIキーを簡単に変数として挿入できます。
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/51f9350677acb396bad5841fa80c903c.png"
|
||
className="mx-auto"
|
||
alt="APIキー変数設定画面1"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/bf75a9783dc263df37d08d183d745fa4.webp"
|
||
className="mx-auto"
|
||
alt="APIキー変数設定画面2"
|
||
/>
|
||
</div>
|
||
|
||
このノードが正しく動作するか確認するために、ノードの開始ボタンをタップしてください:
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/094b96e513169a47f1749e46e1357893.png"
|
||
className="mx-auto"
|
||
alt="ノード動作確認画面"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/46f4e15ac1e9d3ca3f47dc5bb921ff01.png"
|
||
className="mx-auto"
|
||
alt="LLMノード設定画面"
|
||
/>
|
||
</div>
|
||
|
||
### LLMノード
|
||
|
||
さて、Crawlbaseによってスクレイピングされた結果を分析し、コマンドを実行するためにLLMを使用できます。
|
||
|
||
値`context`はHTTPリクエストノードからの`body`でなければなりません。
|
||
|
||
以下はサンプルのシステムプロンプトです。
|
||
|
||
## テスト実行
|
||
|
||
`プレビュー`をクリックしてテスト実行を開始し、`id`にTwitterユーザーIDを入力してください。
|
||
|
||
<div className="image-side-by-side">
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/a25b122dfa14f0c65fcd3498ccf1898e.png"
|
||
className="mx-auto"
|
||
alt="テスト実行画面1"
|
||
/>
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/a019cbc5a970c786e129af8cc987b121.png"
|
||
className="mx-auto"
|
||
alt="テスト実行画面2"
|
||
/>
|
||
</div>
|
||
|
||
例えば、Elon Muskのツイートを分析し、彼の口調で地球温暖化についてのツイートを書きたいと思います。
|
||
|
||
<img
|
||
src="https://assets-docs.dify.ai/dify-enterprise-mintlify/jp/workshop/intermediate/835a01082e74723138d9f97bee0c6c4b.png"
|
||
className="mx-auto"
|
||
alt="Elon Muskの口調分析結果"
|
||
/>
|
||
|
||
これはElonらしいですか?笑
|
||
|
||
右上隅にある`公開`をクリックして、あなたのWebサイトに追加してください。
|
||
|
||
楽しんでください!
|
||
|
||
## 最後に…
|
||
|
||
### 他のX(Twitter)クローラー
|
||
|
||
この記事では、Crawlbaseを紹介しました。これはおそらく利用可能な最も安価なTwitterクローラーサービスですが、時々ユーザーのツイートの内容を正しくスクレイピングできないことがあります。
|
||
|
||
以前に紹介した[wordware.ai](http://wordware.ai)が使用しているTwitterクローラーサービスは**Tweet Scraper V2**ですが、ホストされているプラットフォーム**apify**のサブスクリプションは月額49ドルです。
|
||
|
||
## リンク
|
||
|
||
* [X@dify\_ai](https://x.com/dify\_ai)
|
||
* DifyのGitHubリポジトリ:[https://github.com/langgenius/dify](https://github.com/langgenius/dify)
|
||
|
||
{/*
|
||
Contributing Section
|
||
DO NOT edit this section!
|
||
It will be automatically generated by the script.
|
||
*/}
|
||
|
||
---
|
||
|
||
[このページを編集する](https://github.com/langgenius/dify-docs/edit/main/ja-jp/workshop/intermediate/twitter-chatflow.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)
|
||
|