スクリーンショット 2025-02-08 7.47.23

先日はMacローカルでDeepSeek-R1の日本語強化モデルを動かして、その性能の高さに驚きましたが、今度はDeepSeek-R1を使って、プログラミングに活用してみました。DeepSeekはセキュリティ面で懸念されていますが、ローカルでモデルを動かすだけなら安心ですからね。課金を気にせずガンガン使えるのも良いです。

スクリーンショット 2025-02-07 17.50.11

まずはVSCodeのプラグイン「Roo Code」(旧Roo Cline)を拡張機能で検索してインストール。他の同種のプラグインも試してみましたが、これが一番使いやすそうでした。

スクリーンショット 2025-02-07 17.50.37

Roo Codeをインストールして、左のロケットのようなアイコンを押すと設定画面になります。ここでAPI Providerを設定すれば、AI開発者として指示を出せばプログラムを提案してくれる感じです。
先日使ったLM StudioもAPIで接続できるのですがうまく動作しなかったので、生成AIをローカル動作させるためOllamaを使います。

スクリーンショット 2025-02-07 18.10.46

Ollamaをダウンロードして実行します。

スクリーンショット 2025-02-07 18.10.54

Installします。

スクリーンショット 2025-02-07 18.11.08

色々な生成AIに対応しているので、モデルを選んで実行します。
最初は自動的にダウンロードしてくれます。

スクリーンショット 2025-02-07 18.32.41

日本語対応のDeepSeek-R1モデルを使うため、ターミナルで下記を実行しました。(ここから失敗例なのでスキップ可)

ollama run hf.co/bluepen5805/DeepSeek-R1-Distill-Qwen-14B-Japanese-gguf:Q5_K_M

10GBくらいのモデルファイルがダウンロードされ、自動的にAPIサーバとして動作します。
>>>のあとにプロンプトを入力してもAIが回答します。/byeを入力すると終了します。

スクリーンショット 2025-02-07 18.33.09

Roo Codeの設定で、API ProviderにOllamaを設定し、Base URLにはhttp://localhost:11434を入力します。
するとModel IDでモデルを選べます。Doneを押して、Type a messageの蘭に指示を入力します。

AIが高速に回答しますが、いくら言っても禅問答のように同じ回答を繰り返してプログラムを書いてくれません。

スクリーンショット 2025-02-07 19.08.06

コンテキストウィンドウサイズが小さすぎるということが分かったので、別のターミナルで下記コマンドを実行して、コンテキストウィンドウサイズを大きくしたモデルを作成しました。

curl http://localhost:11434/api/create -d '{
  "name": "deepseek-extended",
  "from": "hf.co/bluepen5805/DeepSeek-R1-Distill-Qwen-14B-Japanese-gguf:Q5_K_M", 
  "parameters": {
    "num_ctx": 32768,
    "temperature": 0.7
  }
}'
スクリーンショット 2025-02-07 19.26.52

回答まで少し時間がかかるようになりましたが、しっかりプログラミングもしてくれました。
ただ、プログラムを左側のウィンドウに書くことがあります。どうやら変に日本語や全角文字が混じってしまうことで、上手くVSCodeを操作できていない感じでした。

ということで、日本語版でなく、オリジナルのDeepSeek-R1を使うことに。

不要なモデルの消去は下記のようにします。(サイズが大きいですからね)

ollama rm (モデル名)

(スキップここまで)
改めてDeepSeek-R1 14Bを実行(こちらも9GBくらいのモデルが自動ダウンロードされます)

ollama run deepseek-r1:14b
スクリーンショット 2025-02-07 22.03.03

さらに別のターミナルでコンテキストウィンドウサイズを大きくしたモデルを作成

curl http://localhost:11434/api/create -d '{
  "name": "deepseek-extended2",
  "from": "deepseek-r1:14b",
  "parameters": {
    "num_ctx": 32768,
    "temperature": 0.7
  }
}'
スクリーンショット 2025-02-07 22.09.33

このモデルを設定すると、思考は英語になりますが、指示は日本語でも大丈夫。かなり指示通りにプログラムを作ってくれますし、すでにプログラムがある場合は、プログラムの内容を理解して、修正案を作ってくれます。(基本的に自動で書き換えなどはせず、確認を求めてきます)

スクリーンショット 2025-02-07 22.10.20

まだうまく使えておらず、AIが要らない修正までしようとしたり、同じ作業を繰り返したりすることがあります。
指示の仕方によって変わるみたいなので、ちょっと試行錯誤してみようと思います。

スクリーンショット 2025-02-08 7.47.23

これを利用して、CSVファイルから店舗情報・位置情報などを読み込んで、地図上に表示するWEBサイトを作ってみました。index.htmlとCSVファイル、画像ファイルだけで動く簡易なものですが、leaflet (OpenStreetMap)や端末の位置情報を使ったりという基本的な部分はほぼAIが作ってくれました。細部まで指示でカスタマイズをするのは時間がかかりそうだったので、自分でカスタマイズ。AIが生成したコードを理解する必要はありますが、かなり早く実装できてとても便利ですね。

作ったのは下記記事で紹介している「すみきっさ」というすみだの喫茶店マップです。