🐮

【n番煎じ】ローカルDifyでLLMと遊ぶ【無料】

2024/06/30に公開

ローカルDifyでLLMと遊ぶ in Linux

はじめに

Linux環境でDifyのサーバを立ち上げ,LLMと遊ぶ環境を構築します.
DifyはオープンソースのLLMアプリ開発アプリケーションです.チャットボットや論文要約アプリなどが手軽に開発できます.
今回は手元のLinuxマシンで立ち上げたサーバに対してWindows PCからアクセスすることを想定しています.

環境構築例

今回構築する環境は以下の通りです.

  • OS:Linux(Ubuntu 22.0.4)
  • LLM:Groq(2024年6月現在はβ版のため無料)
  • サーバ:適当なLinux OSのマシン(今回はRaspberry Pi)
  • クライアント:Windows OSのマシン

Linux環境構築

まずは,Linuxマシンの設定から始めます,
Ubuntuのインストールは以下サイトを参考にお願いします.
Ubuntuのインストールメディア作成
インストールメディアを挿してUbuntuをインストールし,初期設定を完了させておいてください.

ipアドレス固定

ipアドレスの固定はローカルでDifyサーバを立ち上げた際に別のPCからアクセスする際に役立ちます.
具体的には

http://localhost:8080 -> http://[固定したipアドレス]:8080

のようになり,外部からのアクセスが容易になります.また,ipアドレスを固定しなければ,起動のたびにipアドレスが変化するためその都度調べてアクセスする必要があり面倒です.

それではipアドレスを固定していきましょう.
このサイトを参考にしました.今回は有線LAN接続におけるipアドレスを固定します.
まずはYAMLファイルを作成します

$ touch ~/etc/netplan/[好きなファイル名].yml

次に,お好きなエディタでこのファイルを編集します.私はnanoでやりました.

$ nano ~/etc/netplan/[好きなファイル名].yml

YAMLファイルに以下のように記述します.インデントの数に注意してください.アドレスは適当です.

network:                        # この設定ファイル全体が'network'設定であることを示す
  ethernets:                    # Ethernetsデバイスに関する設定であることを示す.
    eno1:                       # Ethernetsインターフェースの名前
      dhcp4: false              # IPv4の動的ホスト構成プロトコルを無効
      dhcp6: false              # IPv6の動的ホスト構成プロトコルを無効
      addresses: [1.1.1.1]      # このマシンに割り当てるipアドレス
      gateway4: 1.1.1.1         # このインターフェースから外部ネットワークにアクセスするためのルータのアドレス
      nameservers:
        addresses: [1.1.1.1]
  version: 2
  renderer: NetworkManager      # デスクトップを構築した場合GUI操作が可能

Ethernetsインターフェースは通常'eth0','eth1','eno1'の様な名前がついています.以下コマンドにより調べます.

$ ip link show

YAMLファイルを編集後,以下コマンドによりNetplanの設定を適用します.

$ sudo netplan apply

その後ip aコマンドで設定したipアドレスに固定されているか確認してください.以上でipアドレス固定は完了です.

ローカルDify

次はローカル環境でのDify構築です.今回使用するLLMはローカル駆動ではないため★自己満足★です.

dockerインストール

dockerのインストールに関しては公式ドキュメントを参考に進めていきます.
まずはUbuntuにsudo権限を持つユーザでアクセスしてください.
次に,curlによって最新のdockerパッケージを取得します

$ curl -fsSL https://get.docker.com/ | sh

dockerのインストールが正常かどうか確認します.

$ docker run hello-world

sudoを付けないとdockerコマンドが実行できない場合は以下によりユーザをdockerグループに所属させてください.

# dockerグループの確認
$ getent group docker

# dockerグループがなければ作る
$ sudo groupadd docker

# $USERの追加
$ sudo gpasswd -a $USER docker

Dify初期設定

こちらを参考に進めていきます.
まずはgitリポジトリのダウンロードです.

$ git clone https://github.com/langgenius/dify.git

もしgitがない場合はgitをインストールしてください.gitのglobal configの設定も必要かもしれません.
dockerコンテナの起動前にdocker-compose.ymlファイルを編集してください.以下画像の525行目でポート番号を設定してください.

編集したらdokerコンテナを起動します.

# dockerコンテナの起動
$ docker compose up -d

(docker-composeとdocker composeの違いは何なんでしょうか...)
起動したら同じネットワーク内のマシンからhttp://[設定したipアドレス]:8080/installにアクセスしてください.Difyサーバを起動したマシンからアクセスする場合はhttp://localhost/installにアクセスしてください.
以下の様な画面が表示されるはずです.メールアドレスはhoge@gmail.comのようになんでもいいです.管理者のログイン情報は忘れると大変なのでメモしておいてください.

管理者アカウント設定により,Difyでアプリケーションを作る準備は完了しました.

LLMのapiキー設定

今回のDifyで使用するLLMのapiキーを取得します.Groqは現在β版のため一定の範囲内では無料で使用することができます(カード情報を登録するしないので使い過ぎたら課金されるというわけでもないです).
まずはGroqのサイトにアクセスし,アカウント登録をしてください.
次にapiキーをこのサイトで取得してください.
取得したapiキーをDifyの設定のモデルプロバイダーで設定してください.

これによってDify上でLLMを使うことができるようになりました.ChatGPTのapiキーを使う場合はapiキーの情報のみ設定すれば大丈夫です(2024年3月から前払い方式に変わりました).

Difyでチャットボットの作成

最後にチャットボットを作成します.
チャットボットの作成についてはこのサイトを参考に頑張ってください.
作成したチャットボットは公開するボタンにより外部アクセスが可能になります.webアプリケーションとして外部からアクセスするには概要で示されるアドレスにアクセスします(グローバルで公開してないのでアクセスできませんが,何となくipアドレスは隠しました).

注意点として先ほど設定したポート番号をアドレスに加えてください.

http://[ipアドレス]:[ポート番号]/hogehoge

以上でローカルDify環境を構築し外部マシンからDifyアプリケーションにアクセスできるようになったかと思います.

Zenn初投稿で駄文が続き失礼いたします.

GitHubで編集を提案

Discussion