Generovanie kódu s použitím lokálnych modelov LLM – praktické príklady
V súčasnosti umelé neurónové siete, zvlášť veľké jazykové modely (LLM), sa stávajú stále populárnejšími pri generovaní kódu. Dík možnosti spustenia modelov lokálne, programátori môžu využívať ich potenciál bez nutnosti používať cloudové riešenia. V tomto článku sa pozrieme na to, ako využiť lokálne modely LLM na generovanie kódu, a ukážeme si praktické príklady.
Prečo lokálne modely LLM?
Používanie lokálnych modelov LLM má niekoľko výhod:
- Súkromie: Zdrojové kódy a dáta neopustia váš počítač.
- Kontrola: Plná kontrola nad prostredím vykonávajúcim.
- Náklady: Žiadne poplatky za cloudové API.
Príprava prostredia
Aby ste mohli začať, potrebujete:
- Model LLM: Napríklad
Mistral-7BaleboLlama-2. - Knihovnice:
transformersaacceleratez knihovnice Hugging Face. - Podpora GPU: Pre lepšiu výkonnosť.
Inštalácia potrebných knihovníc
pip install transformers accelerate torch
Príklad 1: Generovanie jednoduchého kódu Python
Nižšie je príklad generovania jednoduchého kódu Python pomocou lokálneho modelu LLM.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Načítanie modelu a tokenizéra
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Príprava promptu
prompt = "Napíšte funkciu Python, ktorá vypočíta sumu dvoch čísel:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Generovanie kódu
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)
Výsledok
def sum_two_numbers(a, b):
return a + b
Príklad 2: Generovanie kódu s použitím knihovnice requests
V tomto príklade ukážeme, ako model môže vygenerovať kód používajúci knihovnicu requests na vykonanie HTTP žiadosti.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Načítanie modelu a tokenizéra
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Príprava promptu
prompt = "Napíšte kód Python, ktorý vykoná žiadost GET k API JSONPlaceholder:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Generovanie kódu
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)
Výsledok
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.json())
Príklad 3: Generovanie kódu s použitím triedy v Pythone
V tomto príklade ukážeme, ako model môže vygenerovať kód definujúci triedu v Pythone.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Načítanie modelu a tokenizéra
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Príprava promptu
prompt = "Vytvorte triedu Python, ktorá reprezentuje obdĺžnik:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Generovanie kódu
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)
Výsledok
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)
Optimalizácia generovania kódu
Aby ste zlepšili kvalitu generovaného kódu, môžete použiť niekoľko techník:
- Presné prompty: Presné opisovanie, čo očekávate.
- Kontrola dĺžky: Nastavenie vhodnej dĺžky generovaného kódu.
- Viacnásobné generovanie: Generovanie viacerých verzií kódu a výber najlepšej.
Záver
Generovanie kódu pomocou lokálnych modelov LLM je silným nástrojom pre programátorov. Dík možnosti spustenia modelov lokálne, môžete sa tešiť súkromiu a kontrole nad kódom. V tomto článku sme vám ukázali niekoľko praktických príkladov, ktoré ukazujú, ako môžete využiť tieto technológie v každejdennej práci.
Pamätajte, že kvalita generovaného kódu závisí od kvality modelu a presnosti promptov. Experimentujte s rôznymi modelmi a technikami, aby ste dosiahli najlepšie výsledky.