ローカルモデルLLMを使用したコード生成 – 実用的な例
現在、人工知能ニューラルネットワーク、特に大規模言語モデル(LLM)は、コード生成においてますます人気を集めています。ローカルでモデルを実行できることで、プログラマーはクラウドソリューションを利用せずにその潜在能力を活用できます。この記事では、ローカルモデルLLMを使用してコードを生成する方法と、実用的な例を紹介します。
ローカルモデルLLMの利点
ローカルモデルLLMを使用する利点は以下の通りです:
- プライバシー:ソースコードとデータはあなたのコンピュータから出ません。
- 制御:実行環境に対する完全な制御。
- コスト:クラウドAPIの料金がかかりません。
環境の準備
開始するには、以下が必要です:
- LLMモデル:例えば、
Mistral-7BまたはLlama-2。 - ライブラリ:Hugging Faceの
transformersとaccelerate。 - GPUサポート:より高いパフォーマンスのため。
必要なライブラリのインストール
pip install transformers accelerate torch
例1:シンプルなPythonコードの生成
以下は、ローカルモデルLLMを使用してシンプルなPythonコードを生成する例です。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# モデルとトークナイザーの読み込み
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# プロンプトの準備
prompt = "Python関数を書いてください。2つの数字の合計を計算する関数:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# コードの生成
output = model.generate(input_ids, max_length=100, num_return_sequences=1)
generated_code = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_code)
結果
def sum_two_numbers(a, b):
return a + b
例2:requests ライブラリを使用したコードの生成
この例では、モデルが requests ライブラリを使用してHTTPリクエストを実行するコードを生成する方法を示します。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# モデルとトークナイザーの読み込み
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# プロンプトの準備
prompt = "JSONPlaceholder APIにGETリクエストを実行するPythonコードを書いてください:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# コードの生成
output = model.generate(input_ids, max_length=150, num_return_sequences=1)
generated_code = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_code)
結果
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.json())
例3:Pythonクラスを使用したコードの生成
この例では、モデルがPythonクラスを定義するコードを生成する方法を示します。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# モデルとトークナイザーの読み込み
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# プロンプトの準備
prompt = "長方形を表すPythonクラスを作成してください:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# コードの生成
output = model.generate(input_ids, max_length=200, num_return_sequences=1)
generated_code = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_code)
結果
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
コード生成の最適化
生成されたコードの品質を向上させるために、以下の技術を適用できます:
- 正確なプロンプト:期待する内容を正確に記述する。
- 長さの制御:生成されたコードの適切な長さを設定する。
- 複数回の生成:複数のコードバージョンを生成し、最適なものを選択する。
まとめ
ローカルモデルLLMを使用したコード生成は、プログラマーにとって強力なツールです。モデルをローカルで実行できることで、コードのプライバシーと制御を享受できます。この記事では、日常の作業でこれらの技術を活用する方法を示すいくつかの実用的な例を紹介しました。
生成されたコードの品質は、モデルの品質とプロンプトの正確さに依存します。異なるモデルと技術を試し、最良の結果を得るために実験してください。