💬

Dify+Phi-4でローカル環境でチャットボット構築

2025/03/03に公開

2月は久々に海外出張ということで、久々にタイに行きましたが、物価がかなり高くなっていて、びっくりしました。。(食事代は日本とほとんど変わらない。。)

ところで、今年早々に中国産LLMのDeepSeekが話題となり、OpenAIのo1モデルと同等ながら、小さいリソースで動き、かつオープンソースであることが特徴で、小型LLMへの期待感が高まってきてますね。今回、DeepSeekとMicrosoftの小型モデルPhi-4を私のMacbook air(M1チップ)で動かしてみます。生成AIのノーコードツールのDifyと連携させてAIアプリを作るところを目指したいと思います。

Ollamaのインストール

Ollamaは大規模言語モデルを実装するためのプラットフォームで、LlamaやDeepSeekなどがサポートされていて、ローカルで動かす環境を構築できます。
まず、Ollamの公式サイトからOllamaをインストールします。zipファイルをダウンロードして解凍し、インストールするだけです。これだけで、ローカルでLLMが動きます。

DeepSeek R1のインストール

以下のコマンドで、DeepSeek R1を実行します。今回は8GBのモデルを使ってみます。

ollama run deepseek-r1:8b

日本語でお勧めの日本食について聞いてみました。WiFiをOffしてもローカルで動いてます。

注意)DeepSeekはオプトアウト機能がないようなので、ローカル環境でない限りはデータは学習に使われる可能性があります。また、データは中国のサーバーに保存されます。

日本語がかなり今ひとつだったので、Lightblue社とサイバーエージェント社の公開している日本語追加学習モデルを実行してみました。こちらがLightblue社の7Bのモデルです。こちらの精度は中国の漢字が混じっている上、文章もかなり不自然でした。

ollama run hf.co/mmnga/lightblue-DeepSeek-R1-Distill-Qwen-7B-Japanese-gguf

サイバーエージェント社の14Bのモデルも以下で実行してみましたが、14BだとM1のMacbookではちょっと重すぎたようで、回答が待てないぐらい遅く使えませんでした。

ollama run hf.co/mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-14B-Japanese-gguf:Q8_0

ちなみに使わないモデルを残しておくとストレージの容量を使ってしまうので、以下のコマンドで削除しておきます。

ollama rm <モデル名>

Phi-4のインストール

MicrosoftのPhi-4が小型モデルで日本語の性能がかなりいいという話なので、Phi-4で実行してみます。

ollama run hf.co/dahara1/unsloth-phi-4-gguf-japanese-imatrix:IQ3_XXS

かなり自然な日本語です。速度はDeepSeek-R1の7Bよりかは若干遅いですが、許容範囲内です。

Dify Community Editionのインストール

今回はノーコードツールのDifyからPhi-4を使えるようにするので、DifyをDocker環境にインストールしていきます。

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

ブラウザーからhttp://localhostでパスワードを設定して、ログインします。

Dify+Phi-4のチャットボット

次にDifyにOllama経由でPhi-4を登録します。プロファイルの設定からモデルプロバイダーを選択し、Ollamaを追加します。そこでPhi-4のモデル名と起動するサーバーを登録します。モデル名は、Ollamaで実行したときのモデル名をそのまま追加します。

これでPhi-4が登録できたので、Difyでチャットボットを作成してみます。アプリのアイコンと名前を登録して作成ボタンを押します。

以下のような画面が立ち上がり、無事チャットボットが構築できました。ただコマンドラインでチャットしている時に比べると、Difyの環境はかなり遅いですね。私のMacbook air(M1)だと実用的な速度とはならない感じです。

ただ、半年前にllamaをローカル環境で動かしたときは性能面でかなり厳しいなという印象でしたが、進化が速いですね。

CODブログ

Discussion