Inference Unlimited

Generování kódu pomocí lokálních modelů LLM – praktické příklady

V dnešní době se umělé neuronové sítě, zejména velké jazykové modely (LLM), stávají stále populárnějšími při generování kódu. Díky možnosti spouštění modelů lokálně mohou programátoři využívat jejich potenciál bez nutnosti používat cloudová řešení. V tomto článku se podíváme na to, jak využít lokální modely LLM pro generování kódu, a představíme praktické příklady.

Proč lokální modely LLM?

Používání lokálních modelů LLM má několik výhod:

Příprava prostředí

Aby začít, potřebujete:

  1. Model LLM: Například Mistral-7B nebo Llama-2.
  2. Knihovny: transformers a accelerate z knihovny Hugging Face.
  3. Podpora GPU: Pro lepší výkon.

Instalace požadovaných knihoven

pip install transformers accelerate torch

Příklad 1: Generování jednoduchého kódu Python

Níže je příklad generování jednoduchého kódu Python pomocí lokálního modelu LLM.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Načtení modelu a tokenizéru
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Příprava promptu
prompt = "Napiš funkci Python, která vypočítá součet dvou čísel:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids

# Generování 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ýsledek

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

Příklad 2: Generování kódu pomocí knihovny requests

V tomto příkladu ukážeme, jak model může vygenerovat kód používající knihovnu requests k provedení HTTP požadavku.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Načtení modelu a tokenizéru
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Příprava promptu
prompt = "Napiš kód Python, který provede GET požadavek na API JSONPlaceholder:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids

# Generování 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ýsledek

import requests

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

Příklad 3: Generování kódu pomocí třídy v Pythonu

V tomto příkladu ukážeme, jak model může vygenerovat kód definující třídu v Pythonu.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Načtení modelu a tokenizéru
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Příprava promptu
prompt = "Vytvoř třídu Python, která reprezentuje obdélník:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids

# Generování 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ýsledek

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)

Optimalizace generování kódu

Aby se zlepšila kvalita generovaného kódu, lze použít několik technik:

  1. Přesné prompty: Přesný popis toho, co očekáváte.
  2. Kontrola délky: Nastavení vhodné délky generovaného kódu.
  3. Vícenásobné generování: Generování několika verzí kódu a výběr nejlepší.

Shrnutí

Generování kódu pomocí lokálních modelů LLM je mocným nástrojem pro programátory. Díky možnosti spouštění modelů lokálně můžete užívat soukromí a kontrolu nad kódem. V tomto článku jsme představili několik praktických příkladů, které ukazují, jak využít tyto technologie v každodenní práci.

Pamatujte, že kvalita generovaného kódu závisí na kvalitě modelu a přesnosti promptů. Experimentujte s různými modely a technikami, aby jste dosáhli nejlepších výsledků.

Język: CS | Wyświetlenia: 8

← Powrót do listy artykułów