😶‍🌫️

Firecrawlをローカルで動かしDifyと繋げてみる

2024/06/27に公開
2

概要

  • Dify v0.6.11で利用可能になったFirecrawlでWebサイトのナレッジ登録が可能に
  • SaaS版のFirecrawlは無料だと500回のリクエスト制限がある

https://www.firecrawl.dev/

  • OSS版のFirecrawlは無制限でリクエストが可能
  • この記事ではローカルでOSS版のFirecrawlを立ち上げDifyと繋げる方法を紹介

前提

  • DockerやGitコマンドが使える
  • ローカル上にDifyが既に起動している

OSS版Firecrawlをローカル起動

クローン

OSS版Firecrawlは下記で活発に開発が行われています。
https://github.com/mendableai/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コンテナに向き先を変更しています

txt
# ===== 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
他は記載の通りで問題なく動作しました。
ありがとうございました。