0
respostas

[Sugestão] Sugestão de ajuste no código do exercício

Fique com uma dúvida na resposta informada como correta, então eu gostaria de colocar uma sugestão

arquivo_csv = "./dados/lista_de_compras_100_clientes.csv"

dados_usuario = carrega(arquivo_csv)

lista_tokens = codificador.encode(dados_usuario)

numero_tokens = len(lista_tokens)

modelo = "GPT-3.5-turbo" if numero_tokens < 4096 else "GPT-4"

Ele não deveria ter na condicional um numero menor que 4096? Eu entendo que na verdade a metade dele, porque dentro do limite da versão GPT-3.5-turbo, deve-se considerar a quantidade de token do envio + retorno. No exercío se o a quantidade de tokens da chamada form de 4095 ele vai rodar mas não vai retornar nada, ou somente 1 token porque terá estourado o limete de 4096. Meu entendimento está correto?

Então, seguindo as boas práticas, eu gostaria de sugerir uma melhoria no código do exercício, porque não faz sentido mandar uma prompt para o Chat GPT que não poderá receber uma resposta, como é o do meu exemplo.

O cenário ideal seria garantir que sempre haja espaço para a resposta, e não apenas a garantia de envio do prompt, da forma como está, pode levar a essa situação problemática.

Sugestão de correção:

import tiktoken

def carrega(nome_do_arquivo):
try:
with open(nome_do_arquivo, "r") as arquivo:
dados = arquivo.read()
return dados
except IOError as e:
print(f"Erro: {e}")
return None

def escolher_modelo(dados_usuario):
"""
Escolhe o modelo adequado com base no número de tokens do prompt do usuário,
garantindo espaço para uma resposta razoável dentro do limite de tokens.
"""
codificador = tiktoken.encoding_for_model("gpt-3.5-turbo")
lista_tokens = codificador.encode(dados_usuario)
numero_tokens = len(lista_tokens)

tamanho_esperado_saida = 1024  # Estimar o tamanho da resposta
limite_gpt3_5 = 4096 - tamanho_esperado_saida

if numero_tokens < limite_gpt3_5:
    return "gpt-3.5-turbo"
else:
    return "gpt-4"

Uso do código

arquivo_csv = "./dados/lista_de_compras_100_clientes.csv"
dados_usuario = carrega(arquivo_csv)

if dados_usuario:
modelo_escolhido = escolher_modelo(dados_usuario)
print(f"Modelo escolhido: {modelo_escolhido}")
else:
print("Não foi possível carregar os dados do usuário.")