Generierung von Code mit lokalen LLM-Modellen – praktische Beispiele
In der heutigen Zeit werden künstliche neuronale Netze, insbesondere große Sprachmodelle (LLM), immer beliebter bei der Codegenerierung. Dank der Möglichkeit, Modelle lokal auszuführen, können Programmierer deren Potenzial nutzen, ohne auf Cloud-Lösungen angewiesen zu sein. In diesem Artikel besprechen wir, wie lokale LLM-Modelle zur Codegenerierung genutzt werden können, und stellen praktische Beispiele vor.
Warum lokale LLM-Modelle?
Die Nutzung lokaler LLM-Modelle bietet mehrere Vorteile:
- Datenschutz: Quellcodes und Daten verlassen Ihren Computer nicht.
- Kontrolle: Vollständige Kontrolle über die Ausführungsumgebung.
- Kosten: Keine Gebühren für Cloud-APIs.
Vorbereitung der Umgebung
Um zu beginnen, benötigen Sie:
- LLM-Modell: Zum Beispiel
Mistral-7BoderLlama-2. - Bibliotheken:
transformersundacceleratevon der Hugging Face-Bibliothek. - GPU-Unterstützung: Für bessere Leistung.
Installation der erforderlichen Bibliotheken
pip install transformers accelerate torch
Beispiel 1: Generierung eines einfachen Python-Codes
Nachfolgend finden Sie ein Beispiel zur Generierung eines einfachen Python-Codes mit einem lokalen LLM-Modell.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Laden des Modells und Tokenizers
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Vorbereitung des Prompts
prompt = "Schreibe eine Python-Funktion, die die Summe zweier Zahlen berechnet:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Generierung des Codes
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)
Ergebnis
def sum_two_numbers(a, b):
return a + b
Beispiel 2: Generierung von Code mit der Bibliothek requests
In diesem Beispiel zeigen wir, wie das Modell Code generieren kann, der die Bibliothek requests zur Ausführung einer HTTP-Anfrage verwendet.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Laden des Modells und Tokenizers
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Vorbereitung des Prompts
prompt = "Schreibe Python-Code, der eine GET-Anfrage an die JSONPlaceholder-API ausführt:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Generierung des Codes
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)
Ergebnis
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.json())
Beispiel 3: Generierung von Code mit einer Klasse in Python
In diesem Beispiel zeigen wir, wie das Modell Code generieren kann, der eine Klasse in Python definiert.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Laden des Modells und Tokenizers
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Vorbereitung des Prompts
prompt = "Erstelle eine Python-Klasse, die ein Rechteck darstellt:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Generierung des Codes
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)
Ergebnis
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)
Optimierung der Codegenerierung
Um die Qualität des generierten Codes zu verbessern, können Sie mehrere Techniken anwenden:
- Präzise Prompts: Präzise Beschreibung, was Sie erwarten.
- Kontrolle der Länge: Festlegung einer geeigneten Länge des generierten Codes.
- Mehrfache Generierung: Generierung mehrerer Codeversionen und Auswahl der besten.
Zusammenfassung
Die Generierung von Code mit lokalen LLM-Modellen ist ein mächtiges Werkzeug für Programmierer. Dank der Möglichkeit, Modelle lokal auszuführen, können Sie Datenschutz und Kontrolle über den Code genießen. In diesem Artikel haben wir mehrere praktische Beispiele vorgestellt, die zeigen, wie Sie diese Technologien in der täglichen Arbeit nutzen können.
Denken Sie daran, dass die Qualität des generierten Codes von der Qualität des Modells und der Präzision der Prompts abhängt. Experimentieren Sie mit verschiedenen Modellen und Techniken, um die besten Ergebnisse zu erzielen.