Ollama と Continue: オープンソース AI コードアシスタントのセットアップ

Ollama と Continue は、ノートパソコンやリモートサーバー上でローカルに動作する、完全なオープンソースの AI コーディングアシスタントを作成するためのフレームワークを提供します。この統合により、開発者はコードとデータの制御を維持しながら、Visual Studio Code や JetBrains エディタ内で直接、高度なオートコンプリートとチャット機能にアクセスできます。

チャットとオートコンプリート用のローカルモデル構成

開発者は、利用可能なハードウェアリソース(VRAM)に基づいて、特定のコーディングタスクを処理するために異なる LLM を構成できます。

高パフォーマンスな単一モデル: Codestral 22B

Mistral AI の Codestral 22B は、オートコンプリートとチャットの両方を単一のモデルで処理したいユーザーに推奨されます。プログラミングタスクにおいて非常に高い能力を持っていますが、かなりの VRAM を必要とし、非プロダクションライセンスの対象となるため、使用は研究およびテストに限定されます。

最適化されたマルチモデル構成: DeepSeek Coder と Llama 3

VRAM が限られているユーザーや、特化型モデルを好むユーザーには、分割構成が可能です:

  • オートコンプリート: 効率的なコード補完には DeepSeek Coder 6.7B が推奨されます。
  • チャット: 対話型インターフェースには Llama 3 8B が推奨されます。

Ollama の複数の同時リクエストを処理する能力により、ハードウェアがサポートしていれば、これらのモデルを同時に実行できます。サポートされていない場合は、ローカルモデルとリモートホストまたは SaaS プロバイダーを組み合わせて使用することができます。

ローカルコードベースのコンテキストと検索

Continue は Ollama と統合することで、ローカル RAG (Retrieval-Augmented Generation) 機能を提供し、コードベースのコンテキストがプライベートに保たれることを保証します。

@codebase によるコードベースのインデックス作成

@codebase コンテキストプロバイダーを使用すると、アシスタントはローカルプロジェクトから関連するスニペットを検索できます。これは、Ollama 経由で実行される nomic-embed-text エンベディングと LanceDB を使用したインデックス作成によって実現されます。これにより、開発者は、自身のコード内で特定のモデルのデフォルトのコンテキスト長を照会するといった、プロジェクト固有の質問をすることが可能になります。

@docs によるドキュメントの統合

@docs プロバイダーを使用すると、ユーザーは外部のドキュメントサイトをインデックスできます。URL(Ollama の GitHub README など)を提供することで、アシスタントは特定のドキュメントセクションを検索してチャットクエリのコンテキストとして使用でき、検索プロセスをローカルに保つままにできます。

モデルのファインチューニングとカスタマイズ

Continue は、チームが独自の開発データを利用して AI アシスタントを向上させることを可能にします。

StarCoder 2 のファインチューニング

Continue は、承認されたオートコンプリートの提案を world 含む開発データを .continue/dev_data に自動的に保存します。このデータは、StarCoder 2 のようなモデルをファインチューニングするために使用できます。推奨されるワークフローは以下の通りです:

  1. 承認された tab 提案を Hugging Face Datasets に抽出する。
  2. Hugging Face Supervised Fine-tuning Trainer を使用する。
  3. 結果として得られたファインチューニング済みモデルを Ollama モデルライブラリにプッシュして、チーム全体での展開と承認率の測定を行う。

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • プロジェクト
  • プロジェクト