![見出し画像](https://assets.st-note.com/production/uploads/images/142092048/rectangle_large_type_2_49c9d7c8493cd668784637cd7b8c7ad7.png?width=1200)
Llama3で開発チーム向けのCopilotを構築する
Building Private Copilot for Development Teams with Llama3
https://pub.towardsai.net/building-private-copilot-for-development-teams-with-llama3-c749bf19c235
多くの開発者がGitHub Copilotを使用して、コーディングをより簡単にし、プログラミングの方法を変えています。Metaは最近、Llama3という新しいオープンソースツールをリリースし、多くのプログラミングツールやフレームワークがこれを利用しています。今日は、Llama3を使用して独自のプライベートCopilotを作成する方法について説明します。これにより、チームの連携を強化し、コードのセキュリティを確保することができます。
Copilot: あなたのプログラミングアシスタント
GitHubとOpenAIが共同で開発したCopilotは、コーディングのヘルパーツールです。AIを活用して優れたコードスニペットや情報を提供します。従来のツールとは異なり、Copilotはよりスマートで長いコード片、さらには関数やクラス全体を生成することができます。これにより、開発者の時間と労力を節約できます。また、質問に答えたり、コードを説明したり、言語を翻訳したり、ユニットテストを作成したりすることもできます。現在、Copilotを使用する方法はいくつかあります。
オンラインサービス
![](https://assets.st-note.com/img/1716857827774-yVNtg5M9qy.png)
GitHub Copilotのようなオンラインサービスはコーディングを支援します。コーディングプログラム(IDE)にプラグインをインストールするだけで利用できます。CopilotはGitHubのコードをトレーニングに使用しているため、高品質なコードを提案できます。しかし、コードをサーバーにアップロードするため、コードのプライバシーには注意が必要です。
他のCopilotに類似したツールには以下のものがあります:
Codeium: このツールは、開発者がよりスマートかつ迅速にコーディングできるよう支援します。40以上のIDEで動作し、個人利用は無料です。
CodeGeeX: 清華大学が提供するこの無料ツールは、多くのプログラミング言語をサポートしています。
CodeWhisperer: AWSのツールで、コーディングを支援します。無料でセキュリティ問題をチェックします。
Tongyi Lingma: Alibaba Cloudのツールで、AlibabaのQwenモデルを使用し、多くの言語をサポートしています。こちらも無料です。
これらのツールを活用することで、コーディングの効率を向上させることができます。各ツールには独自の特徴があり、プロジェクトのニーズに応じて最適なツールを選択することが重要です。
ローカルサービス
![](https://assets.st-note.com/img/1716857841831-ZbhzeexjGi.png)
二つ目の形式はローカルサービスです。ここでは、LLM(大規模言語モデル)がローカルにデプロイされ、IDEプラグインがローカルのLLM APIサービスを呼び出します。ローカルLLMをデプロイするための多くのツールが利用可能であり、OllamaやLocalAIなどがあります。これらのツールは、CPUマシン上でLLMを実行することをサポートしています。
ローカルサービスの利点は次の通りです:
オフライン使用: インターネット接続がなくても使用できます。
コードプライバシーの確保: コードを外部サーバーにアップロードする必要がありません。
ただし、各開発者がローカルにLLMをインストールする必要があります。
これにより、プライバシーを守りながら高度なコード補完や生成機能を利用することができます。特に、企業内でのセキュリティ要件が厳しい場合には、このアプローチが非常に有効です。
プライベートサービス
![](https://assets.st-note.com/img/1716857856251-xxS7GymXWp.png)
プライベートサービスはローカルサービスの一種です。しかし、ローカルサービスとは異なり、開発者が個別にローカルLLMをインストールする必要はありません。代わりに、開発チームが共同でLLMサービスをデプロイし、開発者はIDEプラグインを介してチームの内部LLMサービスにアクセスします。このアプローチはコードプライバシーを保護し、チームの生産性を向上させるもので、今日の議論の焦点となります。
プライベートサービスの利点
コードプライバシーの保護: コードが外部サーバーに送信されないため、セキュリティリスクが低減されます。
チームの生産性向上: チーム全体でLLMを共有することで、個々の開発者が個別に設定する手間を省き、効率的に作業を進めることができます。
統一された環境: チーム全員が同じLLM環境を使用するため、開発プロセスが統一され、コラボレーションが容易になります。
導入手順
LLMの選定: チームのニーズに合ったLLMを選びます(例:Llama3)。
デプロイメント: 選定したLLMをチームのサーバーにデプロイします。
IDEプラグインの設定: 開発者のIDEにプラグインをインストールし、内部LLMサービスに接続します。
運用とメンテナンス: 定期的にLLMを更新し、運用状況をモニタリングします。
プライベートサービスを導入することで、セキュリティと生産性のバランスを取りながら、高度なコーディング支援機能を活用することができます。次回のブログでは、実際にLlama3を使用してプライベートCopilotを構築する具体的な手順について詳しく解説します。それまで、安全に作業を進め、引き続きコーディングを楽しんでください。
Llama3 デプロイ
Llama3を使用してチームのためのプライベートCopilotを構築するには、まずLlama3をデプロイする必要があります。ここでは、Llama3をデプロイするためにvllmを使用します。vllmは、LLM推論とサービス提供のための効率的で使いやすいライブラリです。OpenAI APIと互換性のあるサービスをデプロイすることができます。類似製品と比較して、vllmの主な特徴には高スループット、低レイテンシー、そして高速性があります。
まず、Llama3モデルをダウンロードします。Llama3はHuggingFaceからダウンロードできますが、事前に申請が必要です。承認後、HuggingFace CLIを使用してモデルをダウンロードできます。次のコマンドを使用してMeta-Llama-3-8B-Instructモデルをダウンロードします:
huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --token YOUR_HF_TOKEN
次に、pipを介してvllmをインストールします:
conda create -n vllm python=3.9 -y
conda activate vllm
pip install vllm
インストール後、vllmのコマンドを使用してOpenAI APIサービスを起動します:
python -m vllm.entrypoints.openai.api_server \\\\
--model meta-llama/Meta-Llama-3-8B-Instruct \\\\
--gpu-memory-utilization 0.85
ここで、gpu-memory-utilizationはサービス起動後のGPUメモリ使用率を85%に設定します。
サービスが起動すると、サービスアドレスはhttp://localhost:8000になります。curlコマンドを使用してAPIサービスを確認できます:
curl <http://localhost:8000/v1/chat/completions> \\
-H "Content-Type: application/json" \\
-d '{
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"messages": \\[
{
"role": "user",
"content": "Hello!"
}
\\]
}'
\\# Result
{
"id": "cmpl-01cb80c24d4a4e32992b6328fbf09794",
"created": 1714901485,
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"object": "chat.completion",
"choices": \\[
{
"finish_reason": "stop",
"logprobs": null,
"index": 0,
"message": {
"content": "Hello! It's nice to meet you. Is there something I can help you with, or would you like to chat?",
"role": "assistant"
}
}
\\],
"usage": {
"prompt_tokens": 13,
"completion_tokens": 26,
"total_tokens": 39
}
}
IDEプラグイン: Continue
サーバーサイドをデプロイした後、クライアントサイドをインストールしましょう。Continueは、開発者がモジュール化されたAIソフトウェア開発システムを簡単に作成できるようにするIDEプラグインです。VSCodeやJetBrainsなどのIDEをサポートし、コード生成、コードの説明、AI Q&Aなどの一般的なCopilot機能を提供します。
プラグインインストール
VSCodeを例にとると、VSCode拡張機能マーケットプレイスでContinueプラグインを検索し、インストールをクリックします。
![](https://assets.st-note.com/img/1716857873571-Xss0AuAXsM.png)
設定の変更
次に、Continueの設定を変更します。ショートカットキーを使用してプラグイン設定ファイルを開きます:cmd/ctrl + shift + Pを押し、"Continue config"と入力して、Open config.jsonを選択します。
次に、設定ファイルを更新します。ContinueはデフォルトでローカルのLLMデプロイにOllamaを使用します。しかし、既にLLMサービスをデプロイしている場合は、modelsおよびtabAutocompleteModelの設定を変更して独自のLLMサービスを使用することができます。例えば:
"models": \\[
{
"title": "llama3-8b",
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"apiBase": "<http://your-llama3-api-host:8000/v1>",
"provider": "openai",
"apiKey": "empty"
}
\\]
"tabAutocompleteModel": {
"title": "Tab Autocomplete Model",
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"apiBase": "<http://your-llama3-api-host:8000/v1>",
"provider": "openai",
"apiKey": "empty"
}
LLM設定でproviderにopenaiを記入し、OpenAIの形式を利用します。
apiBaseには、デプロイしたLLMサービスのアドレスを記入します。例:http://your-llama3-api-host:8000/v1(必ず末尾にv1パスを含めること)。
modelには、ダウンロードしたLlama3モデルを記入します。例:meta-llama/Meta-Llama-3-8B-Instruct。
apiKeyは任意の値を入力できます。
titleはプラグインに表示されるモデル名です。
modelsは、AI Q&Aおよびコード生成機能で利用可能なモデルを指定します。
tabAutocompleteModelは、コード自動補完に使用するモデルを指定します。
次に、Continueプラグインでllama3-8bモデルを選択し、Llama3の使用を開始します:
使用方法の紹介
まず、AI Q&A機能を探索してみましょう。質問を入力すると、LLMが回答を生成します:
![](https://assets.st-note.com/img/1716857887334-ZHlBrudxZQ.png)
次に、コード生成機能を試してみましょう。コードを選択し、cmd/ctrl + Iを押すと、入力ボックスが表示され、LLMがメソッドを補完します:
![](https://assets.st-note.com/img/1716857899008-s2TgCMSAUv.png)
![](https://assets.st-note.com/img/1716857911107-OqVPiiYBQ6.png)
コードの説明も行えます。コードを選択し、cmd/ctrl + Lを押すと、選択されたコードが質問ボックスにコピーされます。LLMはコードに基づいて回答を生成します:
![](https://assets.st-note.com/img/1716857922376-OLgIvS6BhU.png)
単体テストの生成もコード生成機能の一部であり、以前の操作と同様です。
![](https://assets.st-note.com/img/1716857935572-6Ga3stDJ54.png)
![](https://assets.st-note.com/img/1716857947278-LmzFGasdbJ.png)
Continueプラグインのさらなる使用方法については、公式ドキュメントを参照してください。
注意事項
使用中にLlama3の出力が終了しない場合は、設定ファイルにcompletionOptionsを追加してこの問題を修正します:
{
"title": "llama3-8b",
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"apiBase": "<http://your-llama3-api-host:8000/v1>",
"provider": "openai",
"apiKey": "empty",
"completionOptions": {
"stop": [""]
}
}
Llama3に加えて、コード支援のための他のオープンソースLLMも利用可能です。例えば、CodeQwen1.5–7B-Chatは良い選択肢です。
結論
オープンソースのLLMをチームのコード支援ツールとして使用することで、開発効率を向上させ、コードのプライバシーを保護することができます。現在、オープンソースのLLMはGitHub Copilotなどの企業所有のオンラインLLMに遅れを取っていますが、オープンソースのLLMが進化し続けるにつれて、そのギャップは縮小すると期待されています。
この記事が気に入ったらサポートをしてみませんか?