Ollama+Difyで誰でも爆速で話題のDeepSeekアプリケーションを作る方法

# なにこれ
本記事では、[Ollama](https://ollama.com/)というLLM (自然言語処理)推論フレームワークと、[Dify](https://dify.ai/jp)というAIアプリ構築プラットフォームを用いて、生成AIアプリケーションを作る方法を記載した記事です。その際に、話題のDeepSeekも使えるようにします。

# どんなことができるようになるのか
1. 話題のDeepSeek (生成AIモデル)を動かせるようになる
1. ローカルで生成AIモデルをつかったチャットボットがつくれるようになる

具体的には以下のようなものが最終的な完成形です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/b2df75c9-7dd8-ea9d-c301-602a86c4e816.png)

では、さっそく作っていきましょう１

# Ollamaのインストール
以下のollamaの公式ダウンロードページから、ご自身の環境に合わせたOllamaをインストールしてください
https://ollama.com/download

もし、brewやscoopなどがインストールされているのであれば、そちらでも導入することも可能です。
```bash
brew install ollama
```

## 動作確認
ターミナルを起動して、以下のコマンドを打ってみてください。
```bash
ollama serve
```
これでollamaサーバーがlocalhost:11434に立ち上がります。その状態のまま別ターミナルを立ちあげて、
```bash
ollama run deepseek-r1:32b 
```
を行い、チャットができれば、問題なくインストールできています。(インストールに時間がかかることもあるかと思います)。


### 補足
#### ollamaのその他のモデル
`ollama run hoge`を実行した時点で、modelのpullが完了していますが、llama2やllama3などその他のモデルを使用したい場合もあると思います。その場合は、
```
ollama pull llama3
```
のようにして、モデルをpullすることができます。

欲しいモデルがollamaにあるかどうかは、
https://ollama.com/library
を参照ください。なお、hugging faceにのみあるモデルを使用することも可能で、その場合は以下を参考に進めてみてください。
https://huggingface.co/docs/hub/ollama


インストール済みのモデルは`ollama list`で確認することができます。
```
ollama list
NAME               ID              SIZE      MODIFIED
deepseek-r1:32b    38056bbcbb2d    19 GB     21 hours ago
llama2:latest      78e26419b446    3.8 GB    25 hours ago
```

#### Linuxユーザー
linuxユーザーの方systemdファイルを編集することが必要となります。
```
sudo vim /etc/systemd/system/ollama.service  
```
において、環境変数として
```
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
```
を追加したのち、
```
sudo systemctl daemon-reload
sudo systemctl restart ollama.service
```
によって設定を適用させてください。

#### gpuの利用
もしGPUを積んでいて、ollamaで使用したい場合は、基本的には自動で判別されますが、もしうまくいかない場合は、以下にかいた、NNVIDIA toolを参考に導入してみてください。
https://qiita.com/haruotsu/items/274aecc84a7c42b1efb2

# Difyのダウンロード
DifyのGitHubリポジトリ
https://github.com/langgenius/dify
をお好きなディレクトリでクローンします。
```
git clone https://github.com/langgenius/dify
```
クローンしたリポジトリに移動し、dockerディレクトリに入ります。
```
cd dify
cd docker
```
環境変数が記載されているファイルがあるので、それを読み込むように変更したうえで、dockerを立ち上げます。
```
cp .env.example .env
docker compose up -d
```

Dockerがインストールされていない場合
以下の公式サイトを参考に、インストールをしてください。
https://www.docker.com/get-started/


## 動作確認
dockerにより、仮想環境が立ち上がったため、以下にアクセスしてください。
http://localhost/install
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/069cba3a-b587-4154-be35-6e1b3d6d26f1.png)

会員登録画面に遷移するかと思いますので、お好きなアドレスとパスワードを入れて登録をしてください。
これにてDifyの動作確認は完了です。

# OllamaをDifyに読み込ませる
Difyを起動した状態で右上のアイコンから設定を開いてください。
![IMG_0698.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/5c54b4aa-532b-7080-3c29-c6bd085bf35d.jpeg)


設定項目の中に、モデルプロバイダーがあるのでそのカラムをクリックし、その中からollamaを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/f1f94056-22dd-1c6c-9cb4-841234fabfd6.png)

モデルを追加するを押したのち、以下のように入力し保存してください。
```
Model Name: deepseek-r1:32b (ここはollama listで表示されているご自身が使いたいモデルをいれてください)
Base URL: http://host.docker.internal:11434
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/ae688381-2c60-b921-250d-04ac8cee51ec.png)


## チャットボットの作成
ollamaとの接続が完了したら、Difyのホームに移動して、アプリを作成するの項目の最初から作成をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/ed900ca5-7ed7-985e-48aa-5e18d0ad6b20.png)

項目はたくさんありますが、今回はチャットボットを作ることが目的なので、名前をつけてチャットボットを選択してください。(ワークフローでいろいろするのも楽しいのでぜひ遊んでみてください)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/15e4496d-8be7-6380-5747-b00bbc1d6efc.png)

もうここまで来たらできたようなもんです。


以下のような画面になるかと思います。右上にモデルを選択する部分があるのでそこでollamaのご自身が登録したモデルを選択してください。(もしここで表示されていなかったら、再度モデルプロバイダーのところから、設定を見直してみてください。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/d1de8c85-7488-6992-fc21-86c70a735f5f.png)

その後、右上の公開ボタンを押して、アプリを実行を押せば、チャットボットの完成です🎉🎉
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224463/b2df75c9-7dd8-ea9d-c301-602a86c4e816.png)

# おわりに
今回は、Ollama+Difyを用いてローカルでチャットボットを作成する方法を書いてみました。今回はローカルでのみの開発となりましたが、ubuntuを用いてサーバー上に同じ手法でアプリケーションを立ち上げることもできますし、DifyクライアントをAPIとして使用することも可能です。このチュートリアルを経由して、個々人で活用の幅が広がったらうれしいです