Da forma como estava no exemplo da aula não funcionou fiz assim pra funcionar.
import os
import google.generativeai as genai
from dotenv import load_dotenv
load_dotenv()
CHAVE_API_GOOGLE = os.getenv("GEMINI_API_KEY")
genai.configure(api_key=CHAVE_API_GOOGLE)
# MODELO_ESCOLHIDO = "gemini-1.5-flash" # Esta variável não é usada na lógica abaixo
MODELO_FLASH = "gemini-1.5-flash"
MODELO_PRO = "gemini-1.5-pro"
CUSTO_ENTRADA_FLASH = 0.075
CUSTO_SAIDA_FLASH = 0.30
CUSTO_ENTRADA_PRO = 1.25
CUSTO_SAIDA_PRO = 5.00
LIMITE_TOKENS = 3000 # Definindo o limite de tokens mais cedo
def carrega(nome_do_arquivo):
try:
# Usando forward slash para compatibilidade com múltiplos sistemas
with open(nome_do_arquivo, "r") as arquivo:
dados = arquivo.read()
return dados
except IOError as e:
print(f"Erro ao carregar arquivo '{nome_do_arquivo}': {e}")
return None # Retorna None em caso de erro
prompt_sistema = """
Identifique o perfil de compra para cada cliente a seguir.
O formato de saída deve ser:
cliente - descreva o perfil do cliente em 3 palavras
"""
# Carrega os dados do usuário usando o caminho corrigido
prompt_usuario = carrega("dados/lista_de_compras_100_clientes.csv")
# --- Lógica de Seleção do Modelo ---
# Verifica se os dados foram carregados com sucesso antes de continuar
if prompt_usuario is None:
print("Não foi possível carregar os dados do usuário. Encerrando a seleção do modelo e geração.")
else:
# Inicializa a variável 'modelo' com o modelo padrão ANTES de usá-la
modelo = MODELO_FLASH
# Cria uma instância do modelo inicial para contar tokens
# Usamos o modelo inicial (Flash) para a contagem, pois é o que assumimos primeiro
modelo_para_contagem = genai.GenerativeModel(model_name=f"models/{modelo}")
# Conta os tokens no prompt do usuário
# O método count_tokens geralmente aceita a string diretamente
try:
qtd_tokens = modelo_para_contagem.count_tokens(prompt_usuario)
# Verifica se a quantidade de tokens excede o limite
if qtd_tokens.total_tokens >= LIMITE_TOKENS:
modelo = MODELO_PRO # Se exceder, muda para o modelo Pro
print(f"O modelo selecionado foi: {modelo}")
# Cria a instância do modelo FINAL que será usada para a geração,
# usando o nome do modelo decidido na lógica acima.
llm = genai.GenerativeModel(
model_name=modelo, # Usa o nome do modelo (Flash ou Pro)
system_instruction=prompt_sistema # Usa o prompt de sistema
)
# Gera a resposta usando o prompt do usuário
resposta = llm.generate_content(prompt_usuario)
print(f"Resposta: {resposta.text}")
except Exception as e:
# Captura erros que podem ocorrer durante a contagem ou geração da resposta
print(f"Ocorreu um erro durante a interação com o modelo: {e}")