VSCode+ローカルLLMでAIコーディング(Cline, qwen2.5-coder)

a computer screen with a bunch of code on it AI

はじめに

ClaudeなどのAIコーディングエージェントを使用する際、API制限や従量課金がネックとなることがあります。一方で、LLM(大規模言語モデル)をローカル環境で動かせば、これらの制約を気にする必要がありません。実際にClineとローカルLLMを使ってAIコーディングを試してみました。

※ハイスペックPC向けの記事です。
※快適に動かすにはGPUが必須です。

実行環境

  • Windows 11
  • RAM: 32GB
  • GPU: NVIDIA RTX 4080 VRAM 16GB

本記事で使うモデルは hhao/qwen2.5-coder-tools:14b です。

32Bのモデルでも一応動きましたが、快適さを選んで14Bモデルにしました。

14BモデルでVRAM 16GBにギリギリ収まるくらいです。

Cline とは

Cline(クライン)は、Visual Studio Code(VS Code)の拡張機能で、AIエージェントを活用して開発作業をサポートするツールです。Clineは、コードの作成・編集、コマンドの実行、ブラウザの操作など、多岐にわたるタスクを自動化し、開発効率を大幅に向上させることができます。

Clineは、OpenAI APIやAnthropic APIなどに加えてOllamaにも対応しています。

VS Code のインストール

こちらからダウンロードしてインストール出来ます。既にインストール済みの方は読み飛ばしてください。

Ollama のインストール

こちらからダウンロードしてインストール出来ます。詳しくは前の記事を参考にしてください。既にインストール済みの方は読み飛ばしてください。

モデルをダウンロード

今回は qwen2.5-coder をベースに、Cline向けにパラメータやテンプレートを調整したモデルの hhao/qwen2.5-coder-tools:14b を使います。

ollama pull コマンドでダウンロードします。

ollama pull hhao/qwen2.5-coder-tools:14b

Clineのインストール

インストール手順

  • VS Code を起動
  • 左側ペインから拡張機能を選択
  • 「Cline」と検索し、インストール
「拡張機能」からClineをインストールする画像

すると、左側ペインにCline のアイコンが追加されます。

Clineアイコンが追加されたことを示す画像

Clineの設定

OllamaのローカルLLMを使うため、Clineの設定は次のようにします。

  • API Provider: Ollama
  • Base URL: 空白
  • Model ID: hhao/qwen2.5-coder-tools:14b
ClineでOllamaを利用する設定をしている画像

Auto-approve を設定することで承認作業も省略できます。

  • Auto-approve: Read
ClineのAuto-approveの場所を示す画像

実際にコーディングさせてみる

最初はインベーダーゲームを作らせてみたのですが、途中で無限ループに入り進まなくなってしまいました。

なので、もっと簡単な数字当てゲームを作成してもらいます。環境を汚されたくないので、一応 venv を使ってほしい旨も追加しておきます。

Pythonで数字当てゲームを作成してください。
venvを使ってください。

タスクを与えたら、あとはClineが書いたコードを確認するだけの作業になります。

結構ざっくりな指示ですが大丈夫でしょうか。

生成結果

クライン君はまず最初にvenv作成してくれるようです。指示通り

python -m venv venv
venv\Scripts\activate && echo "Virtual environment activated."

次に numberguessing_game.py を書いてくれました。

Python
import random

def play_number_guessing_game():
    print("Welcome to the Number Guessing Game!")
    number = random.randint(1, 100)
    attempts = 0

    while True:
        try:
            guess = int(input("Guess a number between 1 and 100: "))
            attempts += 1

            if guess < number:
                print("Too low! Try again.")
            elif guess > number:
                print("Too high! Try again.")
            else:
                print(f"Congratulations! You guessed the number in {attempts} attempts.")
                break
        except ValueError:
            print("Invalid input. Please enter a valid integer.")

if __name__ == "__main__":
    play_number_guessing_game()

ゲームの起動までしてくれるようです。

python numberguess_game.py

以下実行結果。ちゃんと数字当てゲームになっています。すごい

> python numberguess_game.py
Welcome to the Number Guessing Game!
Guess a number between 1 and 100: 50
Too high! Try again.
Guess a number between 1 and 100: 25
Too low! Try again.
Guess a number between 1 and 100: 35
Too low! Try again.
Guess a number between 1 and 100: 40
Too low! Try again.
Guess a number between 1 and 100: 45
Too high! Try again.
Guess a number between 1 and 100: 43
Too high! Try again.
Guess a number between 1 and 100: 42
Too high! Try again.
Guess a number between 1 and 100: 41
Congratulations! You guessed the number in 8 attempts.

まとめ

ローカルLLMでも数字当てゲームくらいのコードなら一発で書いてくれました。
割とざっくり指示しても生成してくれることと、使い放題なのでちょっとしたアイデアを形にするときにも便利そうです。

とはいえ、1タスクが長くなると途中で止まってしまうこともあるので、ローカルLLMを使う際にはタスクを短く分割して指示するなどの工夫が必要かもしれません。

あと、「featureブランチ切って〇〇して」のように指示するとブランチ作成から一連の流れをこなしてくれたのでいい感じでした。

コメント

タイトルとURLをコピーしました