Search
Close this search box.
CodeGemma: desenvolva códigos com a ajuda da IA
CodeGemma

Posts Relacionados:

CodeGemma é um poderoso conjunto de modelos de IA desenvolvido pelo Google especificamente para tarefas de geração e conclusão de códigos. Aprenda como usá-lo para completar e gerar códigos.

Receba nossa newsletter

CodeGemma: IA para auxiliar no desenvolvimento de códigos

CodeGemma é um poderoso conjunto de modelos de IA desenvolvido pelo Google. Pertencentes à família Gemma, os novos modelos foram projetados especificamente para tarefas de geração e conclusão de códigos. Treinados em mais de 500 bilhões de tokens formados principalmente por documentos em inglês, códigos e matemática, o conjunto de modelos CodeGemma alcança desempenho de última geração. Seus modelos oferecem suporte a várias linguagens de programação, incluindo Python, JavaScript, Java e outras.

Gemma-logo-small

Além dessas vantagens, os modelos CodeGemma possuem um recurso especializado de preenchimento do meio (fill-in-the-middle, FIM). Eles podem inserir códigos com base no contexto circundante, antes e depois da posição do cursor.

O CodeGemma pode ser facilmente integrado a frameworks populares de IA como o KerasNLP. Isso o torna bastante acessível a desenvolvedores já familiarizados com essas ferramentas.

Ao contrário de alguns assistentes de codificação de IA proprietários, o CodeGemma é de código aberto. Porém, para usar os modelos da família, é preciso concordar com os termos de uma licença específica criada pelo Google.

Os modelos CodeGemma podem ser obtidos em vários locais incluindo Hugging Face e Ollama.

Três versões de modelos

A família possui três variantes principais:

CodeGemma 2B: modelo otimizado para conclusão e geração rápidas de código, adequado para sugestões de código em tempo real.

CodeGemma 7B: modelo pré-treinado para conclusão e geração de códigos. Ele se caracteriza por seu forte desempenho superando os modelos básicos do conjunto Gemma em termos de tarefas de codificação.

CodeGemma 7B Instruction-Tuned: versão ajustada para seguir instruções e codificar conversas. Essa variante permite interações em linguagem natural, facilitando a geração de código a partir de descrições em inglês.

CodeGemma com Hugging Face Transformers em Python

O uso do CodeGemma varia com a versão do modelo. Para as versões sem ajuste para instruções, ele funciona principalmente completando e gerando códigos. Os prompts para essas tarefas seguem padrões bem específicos. Os modelos CodeGemma com instruções aceitam prompts linguísticos. Para usar as versões sem ajuste para instruções, é preciso utilizar códigos equivalentes a esse:

				
					from transformers import GemmaTokenizer, AutoModelForCausalLM
import torch

model_id = "google/codegemma-2b"
tokenizer = GemmaTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16
).to("cuda:0")

prompt = '''
<|fim_prefix|>import datetime

def calculate_age(birth_year):
    """Calculates a person's age based on their birth year."""
    current_year = datetime.date.today().year
<|fim_suffix|>
return age<|fim_middle|>
'''

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
prompt_len = inputs["input_ids"].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0][prompt_len:]))
				
			

Esse código executa o CodeGemma 2B obtido na Hugging Face. Para utilizá-lo, consulte a documentação sobre os requisitos de instalação (transformers, PyTorch, etc).

No exemplo acima, o prompt utilizado é um trecho de código que o modelo deve completar. Os seguintes tokens são usados para separar as diferentes partes do prompt: 

<|fim_prefix|> precede o contexto antes da conclusão que queremos executar.

<|fim_suffix|> precede o sufixo. Você precisa colocar esse token exatamente onde o cursor seria posicionado em um editor, pois esse é o local que será concluído pelo modelo. 

<|fim_middle|> é o prompt que convida o modelo a executar a geração. 

<|file_separator|> é usado para fornecer contextos de vários arquivos.

CodeGemma com Ollama em Python

Para usar um dos modelos com Ollama, a versão desejada precisa ser baixada. Por exemplo, para utilizar o modelo 2B, o comando para baixá-lo é:

				
					ollama pull codegemma:2b
				
			

O uso do modelo 2B com Ollama é equivalente ao demonstrado com Hugging Face Transformers. Ele possui os mesmos parâmetros. Veja um exemplo abaixo usando o mesmo prompt mostrado anteriormente:

				
					import ollama

# Inicia o modelo
model = ollama.Client()

# Define um prompt
prompt = '''
<|fim_prefix|>import datetime

def calculate_age(birth_year):
    """Calculates a person's age based on their birth year."""
    current_year = datetime.date.today().year
<|fim_suffix|>
return age<|fim_middle|>
'''
# Gera resposta
response = model.generate(
    model='codegemma:2b',
    prompt=prompt,
    options={
        'num_predict': 128,
        'temperature': 0,
        'top_p': 0.9,
        'stop': ['<|file_separator|>'],
    }
)

# Imprime resposta obtida
print(response['response'])

# resultado
# <|fim_prefix|>
# import datetime

# def calculate_age(birth_year):
#     """Calculates a person's age based on their birth year."""
#     current_year = datetime.date.today().year
#     age = current_year - birth_year
#     return age

# def main():
#     """Main function to run the program."""
#     birth_year = int(input("Enter your birth year: "))
#     age = calculate_age(birth_year)
#     print(f"You are {age} years old.")

# if __name__ == "__main__":
				
			

Para conhecer mais sobre os modelos CodeGemma, uma boa fonte é o artigo oficial descrevendo a família.

Imagem com IA Generativa – Dia 274

IA generativa img 274

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial