Visual Studio CodeでContinueとOllamaを使ったAIアシスト機能を試してみる
Visual Studio CodeでGitHub Copilotを使うと、生成AIによるコード開発のアシストを行ってくれます。GitHub Copilotは有料のため、ローカル環境で似た環境を構築できないか試してみました。
構成
- Windows 10 (Visual Studio Code)
- Continue v0.8.60
- vCenter 8.0U3
- ESXi 8.0U3
- Intel NUC NUC7i3BNH
- Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz
- Ubuntu 22.04 (開発サーバー)
- Remote Developmentの接続先
- Ubuntu 22.04 (LLMサーバー)
- provider: ollama 0.5.1
- model: llama3.2 3B
ContinueやOllamaについて
Continueは、GitHub Copilotのようにコーディング支援を行ってくれるVisual Studio Codeの拡張機能になります。
Continueは、コーディング支援に利用するAIは、OpenAIやGemini、Llama、Claudeといったサービスや、ローカルにデプロイしたOllamaやLM Studioなど様々なものを利用できそうでした。
ローカルの場合、Llama 3.1 8Bがおすすめなようです。
Ollamaは、ローカル環境で大規模言語モデルを簡単に使用できるツールになります。
コマンドの使用感はdockerと似ているような気がします。
Ollamaのインストール
Ollamaのインストールを行ってみます。sudo権限を付与したユーザーで実行します。
GPUカードがないため、CPU-only modeで実行されます。
$ curl -fsSL https://ollama.com/install.sh | sh >>> Installing ollama to /usr/local >>> Downloading Linux amd64 bundle ######################################################################## 100.0% >>> Creating ollama user... >>> Adding ollama user to render group... >>> Adding ollama user to video group... >>> Adding current user to ollama group... >>> Creating ollama systemd service... >>> Enabling and starting ollama service... Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service. >>> The Ollama API is now available at 127.0.0.1:11434. >>> Install complete. Run "ollama" from the command line. WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.
サービスが起動しているか確認してみます。
$ systemctl status ollama.service
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-12-07 12:39:59 JST; 5min ago
Main PID: 116500 (ollama)
Tasks: 11 (limit: 4557)
Memory: 60.9M
CPU: 723ms
CGroup: /system.slice/ollama.service
└─116500 /usr/local/bin/ollama serve
Llama 3.2の3B modelsをダウンロードしてみます。ファイルサイズは2GBです。
$ ollama pull llama3.2 pulling manifest pulling dde5aa3fc5ff... 100% : verifying sha256 digest writing manifest success
試しに、手元でllamaを動かしてみます。
すごく遅いですが、応答が返ってきます。
1vCPU、4GBメモリの仮想マシンで試しましたが、稼働中はCPU使用率は100%で張り付いていましたが、何とか動いてそうでした。
$ ollama run llama3.2 >>> こんにちは。 こんにちは!どういたして今日ならなにかお話したいことあるかな?
APIからもコールしてみます。こちらも何とか返ってきます。
$ curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"stream": false,
"messages": [
{ "role": "user", "content": "こんにちは。" }
]
}'
{"model":"llama3.2","created_at":"2024-12-07T05:52:36.252910007Z","message":{"role":"assistant","content":"こんにちは!どういたしまして?どんなことについて話したいですか?"},"done_reason":"stop","done":true,"total_duration":5682315698,"load_duration":33451469,"prompt_eval_count":27,"prompt_eval_duration":321000000,"eval_count":17,"eval_duration":5326000000}
Ollamaのローカルマシン以外からのアクセス許可
ローカルマシン以外からもアクセスできるようにunitファイルを編集して、再起動します。
sudo vi /etc/systemd/system/ollama.service [Service] + Environment="OLLAMA_HOST=0.0.0.0" + Environment="OLLAMA_ORIGINS=192.168.*" sudo systemctl daemon-reload sudo systemctl restart ollama
WindowsのPowerShellから実行できるか試してみます。なぜか、PowerShellだと、英語でメッセージが返ってきました。
> Invoke-RestMethod -Uri "http://10.0.50.60:11434/api/chat" -Method Post -Body '{
"model": "llama3.2",
"stream": false,
"messages": [
{ "role": "user", "content": "こんにちは。" }
]
}'
model : llama3.2
created_at : 2024-12-07T06:27:11.907561159Z
message : @{role=assistant; content=It looks like you're using a mysterious and colorful character to repr
esent your question! Unfortunately, I need a bit more information or context to understand what
you're asking about. Could you please rephrase your question in plain text?}
done_reason : stop
done : True
total_duration : 15139379661
load_duration : 29423999
prompt_eval_count : 27
prompt_eval_duration : 323000000
eval_count : 46
eval_duration : 14786000000
Continueの設定
Continueをインストールしてみます。
Visual Studio Codeで拡張機能からContinueを選択し、Installをクリックします。

左側のバーにContinueのアイコンが表示されます。
歯車マークをクリックすると、config.jsonが開くため、modelsの個所に以下のように追加します。
"models": [
{
"title": "Llama 3.2",
"provider": "ollama",
"model": "llama3.2",
"apiBase": "http://IPアドレス:11434"
}
],
チャットのコンソールにコメントを追加すると、 HTTP 500 Internal Server Error from http://IPアドレス:11434/api/chat というえらが返ってきたため、ログを確認すると、以下のエラーがあり、メモリが不足しているようです。
{"error":"model requires more system memory (7.3 GiB) than is available (4.9 GiB)"}
仮想マシンのスペックを2vCPU、8GBメモリに拡張すると動くようになりました。
ちなみに、llama3.1:8bを利用しようすると、10.8GB以上のメモリを求められます。
{"error":"model requires more system memory (10.8 GiB) than is available (7.8 GiB)"}
使い方
コードを選択して、Ctrl+Lでチャット欄にコードを張りつけることができます。
レスポンスはあまり早くはないですが、サンプル的なコードについての説明を求めると、割と分かりやすい解説を返してくれました。

Context selectionという機能があり、 @ をつけてソースコードのファイルを指定したり、ターミナルの情報をベースにして回答をしてくれます。
Autocompleteの設定
続いて、Autocomplete機能を試してみます。
Autocompleteを試すために、qwen2.5-coderの1.5B modelsをダウンロードしてみます。ファイルサイズは986MBです。
$ ollama pull qwen2.5-coder:1.5b
Continueのconfig.jsonに以下のように追加します。
"tabAutocompleteModel": {
"title": "Qwen2.5-Coder 1.5B",
"model": "qwen2.5-coder:1.5b",
"provider": "ollama",
"apiBase": "http://IPアドレス:11434"
},
コードを選択して、右クリックすると、Continueのメニューが表示され、いくつか機能が表示されます。

試しに、コメントを生成してみると、関数の説明を追加してくれました。
ただし、この処理は重かったのか、CPUがしばらく100%張り付きで稼働していました。
/**
* Creates a new book in the database.
*
* @param ctx The context of the operation.
* @param book The request to create a new book.
* @return A new book schema if successful, or an error if not.
*/
func (u *BookUseCase) Create(ctx context.Context, book *book.CreateRequest) (*book.Schema, error) {
bookID, err := u.bookRepo.Create(ctx, book)
if err != nil {
return nil, err
}
bookFound, err := u.bookRepo.Read(ctx, bookID)
if err != nil {
return nil, err
}
return bookFound, err
}
参考
Ollamaを動かすにあたり、最近の動向がまとまっており参考になりました。