Firecrawlをローカルで動かしDifyと繋げてみる
概要
- Dify v0.6.11で利用可能になったFirecrawlでWebサイトのナレッジ登録が可能に
- SaaS版のFirecrawlは無料だと500回のリクエスト制限がある
- OSS版のFirecrawlは無制限でリクエストが可能
- この記事ではローカルでOSS版のFirecrawlを立ち上げDifyと繋げる方法を紹介
前提
- DockerやGitコマンドが使える
- ローカル上にDifyが既に起動している
OSS版Firecrawlをローカル起動
クローン
OSS版Firecrawlは下記で活発に開発が行われています。
このリポジトリをローカルにクローンします
$ git clone https://github.com/mendableai/firecrawl.git
環境変数の設定
次に、ローカルで起動するために.env
ファイルを用意します
# ディレクトリに移動
$ cd firecrawl
# サンプルの環境変数をコピー
$ cp ./apps/api/.env.example ./.env
コピーした .env
ファイルをエディタで開いて以下のように「REDIS_URL
」や「USE_DB_AUTHENTICATION
」、「TEST_API_KEY
」に変更を加えます
TEST_API_KEY
はAPI Keyを意味しています。この値は、fc-xxxx
の形式であれば何でもOKです。今回は「fc-test
」を設定しています。
REDIS_URL
は、立ち上がったRedisコンテナに向き先を変更しています
# ===== Required ENVS ======
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0
- REDIS_URL=redis://localhost:6379
+ REDIS_URL=redis://redis:6379
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html
## To turn on DB authentication, you need to set up supabase.
- USE_DB_AUTHENTICATION=true
+ USE_DB_AUTHENTICATION=false
# ===== Optional ENVS ======
# Supabase Setup (used to support DB authentication, advanced logging, etc.)
SUPABASE_ANON_TOKEN=
SUPABASE_URL=
SUPABASE_SERVICE_TOKEN=
# Other Optionals
- TEST_API_KEY= # use if you've set up authentication and want to test with a real API key
+ TEST_API_KEY=fc-test # use if you've set up authentication and want to test with a real API key
RATE_LIMIT_TEST_API_KEY_SCRAPE= # set if you'd like to test the scraping rate limit
RATE_LIMIT_TEST_API_KEY_CRAWL= # set if you'd like to test the crawling rate limit
SCRAPING_BEE_API_KEY= #Set if you'd like to use scraping Be to handle JS blocking
OPENAI_API_KEY= # add for LLM dependednt features (image alt generation, etc.)
BULL_AUTH_KEY= @
...省略..
コンテナの起動
下記コマンドでFirecrawlを起動します
$ docker compose up -d
動作確認
下記コマンドを入力して Hello, world!
が返ってきたら成功です
$ curl -X GET http://localhost:3002/test
Hello, world!
ローカルのDifyとの繋ぎこみ
次に、ローカルのDifyと繋ぎ込みを行います
Difyの「ナレッジ」の登録画面から、「ウェブサイトから同期」を選択し、「Configure」を選択します
次に、Websiteの「Configure」ボタンを選択
Firecrawlの設定モーダルが表示されるので、先程環境変数で設定した TEST_API_KEY
の値「fc-test
」とBase URLに「http://host.docker.internal:3002
」を入力します
最後に、「保存」を押して、ACTIVE
になれば繋ぎこみ成功です
Webサイトからナレッジ登録
動作確認として、Difyの公式ドキュメントをナレッジとして登録してみましょう
対象のリンクとして「https://docs.dify.ai/
」を設定して「Run」を選択
問題なければ下記のようにクローリングした結果が表示されます。
ナレッジ登録するページにチェックすればOKです。
今回は、「Reset All」にチェックして全選択し、「次へ」を選択します
お馴染みの、前処理画面が出てくるので、お好きに設定し「保存して処理」を選択すればナレッジ登録が始まります。
最後に
Firecrawlは並列でクローリングを行うため、Difyに既存にあるJina Reader
に比べて高速な印象です。また無制限で使えるのも嬉しいですね
今回のやり方は、ローカルに限らず、OSS版Firecrawlをホスティングしたサーバで起動すればローカル以外のDifyと繋ぎ込みが出来るはずです。
Difyのサーバに共存する形でFirecrawlを立ち上げることも出来ますが、クローリングはかなり負荷がかかるためオススメしません。
Discussion
本日(2024/06/30)試したところ、.env ファイルに次の編集が必要でした。
-REDIS_URL=redis://localhost:6379
+REDIS_URL=redis://redis:6379
他は記載の通りで問題なく動作しました。
ありがとうございました。
ありがとうございます!記事に書き漏れていました 🙇