Inference Unlimited

Generowanie kodu z użyciem lokalnych modeli LLM – praktyczne przykłady

W dzisiejszych czasach sztuczne sieci neuronowe, zwłaszcza duże modele językowe (LLM), stają się coraz popularniejsze w generowaniu kodu. Dzięki możliwości uruchamiania modeli lokalnie, programiści mogą korzystać z ich potencjału bez konieczności korzystania z chmurowych rozwiązań. W tym artykule omówimy, jak wykorzystać lokalne modele LLM do generowania kodu, przedstawiając praktyczne przykłady.

Dlaczego lokalne modele LLM?

Korzystanie z lokalnych modeli LLM ma kilka zalet:

Przygotowanie środowiska

Aby rozpocząć, potrzebujesz:

  1. Model LLM: Na przykład Mistral-7B lub Llama-2.
  2. Biblioteki: transformers i accelerate z biblioteki Hugging Face.
  3. Obsługa GPU: Dla lepszej wydajności.

Instalacja wymaganych bibliotek

pip install transformers accelerate torch

Przykład 1: Generowanie prostego kodu Python

Poniżej znajduje się przykład generowania prostego kodu Python za pomocą lokalnego modelu LLM.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Ładowanie modelu i tokenizera
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Przygotowanie promptu
prompt = "Napisz funkcję Python, która oblicza sumę dwóch liczb:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids

# Generowanie kodu
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)

Wynik

def sum_two_numbers(a, b):
    return a + b

Przykład 2: Generowanie kodu z użyciem biblioteki requests

W tym przykładzie pokażemy, jak model może wygenerować kod używający biblioteki requests do wykonania żądania HTTP.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Ładowanie modelu i tokenizera
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Przygotowanie promptu
prompt = "Napisz kod Python, który wykonuje żądanie GET do API JSONPlaceholder:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids

# Generowanie kodu
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)

Wynik

import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.json())

Przykład 3: Generowanie kodu z użyciem klasy w Pythonie

W tym przykładzie pokażemy, jak model może wygenerować kod definiujący klasę w Pythonie.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Ładowanie modelu i tokenizera
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Przygotowanie promptu
prompt = "Stwórz klasę Python, która reprezentuje prostokąt:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids

# Generowanie kodu
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)

Wynik

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)

Optymalizacja generowania kodu

Aby poprawić jakość generowanego kodu, można zastosować kilka technik:

  1. Dokładne prompty: Precyzyjne opisanie, czego oczekujesz.
  2. Kontrola długości: Ustawienie odpowiedniej długości generowanego kodu.
  3. Wielokrotne generowanie: Generowanie kilku wersji kodu i wybór najlepszej.

Podsumowanie

Generowanie kodu za pomocą lokalnych modeli LLM jest potężnym narzędziem dla programistów. Dzięki możliwości uruchamiania modeli lokalnie, można cieszyć się prywatnością i kontrolą nad kodem. W tym artykule przedstawiliśmy kilka praktycznych przykładów, które pokazują, jak wykorzystać te technologie w codziennej pracy.

Pamiętaj, że jakość generowanego kodu zależy od jakości modelu i precyzji promptów. Eksperymentuj z różnymi modelami i technikami, aby osiągnąć najlepsze rezultaty.

Język: PL | Wyświetlenia: 7

← Powrót do listy artykułów