Como alternativa, eu fiz usando o ollama, localmente com gemma4:e4b, o modelo funcionou muito bem. Me custa zero. Vou colocar aqui somente o que interessa pro exercício, porque implementei features a mais como contador de custos de tokens, thread com spinner e outras coisas, porém pro exercício o que interessa esta abaixo:
from openai import OpenAI
from dotenv import load_dotenv
import os
import sys
import time
import threading
load_dotenv()
API_KEY = os.getenv("OLLAMA_API_KEY")
OLLAMA_HOST = os.getenv("OLLAMA_BASE_URL")
def get_ollama_client() -> OpenAI:
return OpenAI(
api_key=API_KEY, # Necessário para a biblioteca, mesmo sendo ignorado pelo Ollama
base_url=OLLAMA_HOST
)
def main():
# Inicializa o cliente localmente
client = get_ollama_client()
try:
response = client.chat.completions.create(
model="gemma4:e4b",
messages=[
{
"role" : "system",
"content" :"Listar apenas os nomes dos produtos, sem considerar descrição."
},
{
"role" : "user",
"content" :"Liste 3 produtos sustentáveis"
}
],
temperature=0.7,
)
print("\n")
#print(response)
print("\n")
print(response.choices[0].message.content)
print("\n")
except Exception as e:
print(f"Erro ao conectar com o Ollama: {e}")
if __name__ == "__main__":
main()
Saída:
Escova de dente de bambu
Garrafa reutilizável
Roupas de algodão orgânico