2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ateam LifeDesignAdvent Calendar 2024

Day 7

DifyとFirecrawlをDocker Composeでローカル環境で連携する

Last updated at Posted at 2024-12-06

Difyは生成AIを対象とした開発プラットフォームで、AIを搭載したアプリケーションをローコードで作成できます。

Difyには様々な機能がありますが、その中でもオープンソースのクローラーFirecrawl連携する機能があります。Firecrawlと連携させると、WebをクローリングしてRAGを構築できるようになります。

本稿では、DifyとFirecrawlを両方ローカル環境にDocker Composeで立ち上げて、連携させます。Docker Composeのoverrideの設定を使うことで、同じネットワークに所属させます。

環境

  • Docker version 27.3.1, build ce12230
  • Docker Compose version v2.29.7
  • Dify 0.12.1
  • Firecrawl 2024年12月4日時点のコミット 41d85920 を利用

Difyの構築

まずDifyをGitHubからcloneして適切な断面にチェックアウトしておきます。

ネットワークの設定を変更します。dify側のDocker Composeのサービスのうちapiを、firecrawl_backendというネットワークに所属させます。

docker/docker-compose.override.yaml
services:
  api:
    networks:
      - firecrawl_backend
      - ssrf_proxy_network
      - default

networks:
  firecrawl_backend:
    external: true

あわせて、ローカル環境でwell-known ポートを使われるのが好きではないので、適当な値に変更しておきます。

docker/.env
EXPOSE_NGINX_PORT=9999
EXPOSE_NGINX_SSL_PORT=9998

Firecrawlの構築

FirecrawlをGitHubからcloneして、.envを以下のように設定します。

apps/api/.env
USE_DB_AUTHENTICATION=false

FirecrawlにはメモリとCPUの使用量を見て動作を止める設定があるので、必要に応じて緩和します。特にDifyとFirecrawlの両方を同時起動するとメモリを結構使用するため、この設定がないと安定して動かない場合があります。
筆者の環境(16GB RAM Chromebook)では必要で、Cant accept connectionというエラーが表示されました。

docker-compose.override.yaml
services:
  worker:
    environment:
      MAX_CPU: 1
      MAX_RAM: 1

DifyとFirecrawlの連携

準備ができたら、DifyとFirecrawlを起動します。

を確認します。
必要に応じて以下な感じで、DifyのAPIがFirecrawlと同じネットワークに入れているかを確認します。

$ docker network inspect firecrawl_backend | grep -C 5 firecrawl-api
$ docker compose exec api curl firecrawl-api-1:3002

正常に起動できていることを確認できたら、Difyの画面で「データソース」からFirecrawlの設定をします。

image.png

Base URL http://firecrawl-api-1:3002 を設定するのがポイントです。Difyのコンテナ側から見てFirecrawlのAPIサービスに接続できるホストを指定します。
API Keyの入力は必須ですが、今回Firecrawl側でキーは設定していないので、適当な文字列でOKです。

あとは、必要なURLを入力してクロールを実行します。

image.png

これで、ローカル環境にDocker Composeで立ち上げたDifyとFirecrawlを連携させることができました。

あとは、Difyを利用した通常のRAGと同様の手順で、クローリングした結果をもとにベクトルデータベースへ格納し、検索ができるようになります。

DifyはRAG関連機能のGUIが充実しているのが特徴だと思っています。Firecrawl連携のようにRAG周辺の機能をうまく使うことで、さまざまな場面でRAGを導入しやすくなると思っています。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?