Inference Unlimited

Генерація коду з використанням локальних моделей LLM – практичні приклади

У сучасний час штучні нейронні мережі, зокрема великі мовні моделі (LLM), стають все популярнішими у генерації коду. Дякуючи можливості запуску моделей локально, програмісти можуть користуватися їхнім потенціалом без необхідності використання хмарних рішень. У цій статті ми розглянемо, як використати локальні моделі LLM для генерації коду, надаючи практичні приклади.

Чому локальні моделі LLM?

Використання локальних моделей LLM має кілька переваг:

Підготовка середовища

Аби почати, вам знадобиться:

  1. Модель LLM: Наприклад, Mistral-7B або Llama-2.
  2. Бібліотеки: transformers і accelerate з бібліотеки Hugging Face.
  3. Підтримка GPU: Для кращої продуктивності.

Встановлення необхідних бібліотек

pip install transformers accelerate torch

Приклад 1: Генерація простого коду Python

Нижче наведено приклад генерації простого коду Python за допомогою локальної моделі LLM.

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=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 = "Напишіть код Python, який виконує запит GET до API JSONPlaceholder:"
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)

Оптимізація генерації коду

Аби покращити якість згенерованого коду, можна застосувати кілька технік:

  1. Точні промпти: Точний опис того, що ви очікуєте.
  2. Контроль довжини: Встановлення відповідної довжини згенерованого коду.
  3. Множинна генерація: Генерація кількох версій коду і вибір найкращої.

Підсумок

Генерація коду за допомогою локальних моделей LLM є потужним інструментом для програмістів. Дякуючи можливості запуску моделей локально, можна користуватися приватністю і контролем над кодом. У цій статті ми надали кілька практичних прикладів, які показують, як використати ці технології у щоденній роботі.

Пам'ятайте, що якість згенерованого коду залежить від якості моделі і точності промптів. Експериментуйте з різними моделями і техніками, аби досягти найкращих результатів.

Język: UK | Wyświetlenia: 6

← Powrót do listy artykułów