Geração de código usando modelos locais LLM – exemplos práticos
Nos dias de hoje, redes neurais artificiais, especialmente grandes modelos de linguagem (LLM), estão se tornando cada vez mais populares na geração de código. Graças à possibilidade de executar modelos localmente, programadores podem aproveitar seu potencial sem a necessidade de usar soluções em nuvem. Neste artigo, discutiremos como usar modelos locais LLM para gerar código, apresentando exemplos práticos.
Por que modelos locais LLM?
O uso de modelos locais LLM tem várias vantagens:
- Privacidade: Os códigos-fonte e dados não saem do seu computador.
- Controle: Controle total sobre o ambiente de execução.
- Custos: Ausência de taxas por API em nuvem.
Preparação do ambiente
Para começar, você precisa de:
- Modelo LLM: Por exemplo,
Mistral-7BouLlama-2. - Bibliotecas:
transformerseaccelerateda biblioteca Hugging Face. - Suporte a GPU: Para melhor desempenho.
Instalação das bibliotecas necessárias
pip install transformers accelerate torch
Exemplo 1: Geração de código Python simples
Abaixo está um exemplo de geração de código Python simples usando um modelo local LLM.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Carregando o modelo e o tokenizador
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Preparando o prompt
prompt = "Escreva uma função Python que calcula a soma de dois números:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Gerando o código
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)
Resultado
def sum_two_numbers(a, b):
return a + b
Exemplo 2: Geração de código usando a biblioteca requests
Neste exemplo, mostraremos como o modelo pode gerar código usando a biblioteca requests para fazer uma requisição HTTP.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Carregando o modelo e o tokenizador
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Preparando o prompt
prompt = "Escreva um código Python que faz uma requisição GET para a API JSONPlaceholder:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Gerando o código
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)
Resultado
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.json())
Exemplo 3: Geração de código usando uma classe em Python
Neste exemplo, mostraremos como o modelo pode gerar código definindo uma classe em Python.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Carregando o modelo e o tokenizador
model_name = "mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Preparando o prompt
prompt = "Crie uma classe Python que representa um retângulo:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
# Gerando o código
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)
Resultado
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)
Otimização da geração de código
Para melhorar a qualidade do código gerado, podem ser aplicadas várias técnicas:
- Prompts precisos: Descrever com precisão o que você espera.
- Controle de comprimento: Definir o comprimento apropriado do código gerado.
- Geração múltipla: Gerar várias versões de código e escolher a melhor.
Resumo
A geração de código usando modelos locais LLM é uma ferramenta poderosa para programadores. Com a possibilidade de executar modelos localmente, pode-se desfrutar de privacidade e controle sobre o código. Neste artigo, apresentamos vários exemplos práticos que mostram como usar essas tecnologias no trabalho diário.
Lembre-se de que a qualidade do código gerado depende da qualidade do modelo e da precisão dos prompts. Experimente com diferentes modelos e técnicas para alcançar os melhores resultados.