Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Alternativa ao GPT, usei OLLAMA com gemma4:e4b

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
1 resposta

Olá, Marcelo! Como vai?

Parabéns pela realização das atividades!

Vi que você apresentou uma solução prática ao integrar o Ollama com chamadas compatíveis da biblioteca OpenAI, demonstrou com clareza como configurar o cliente local e ainda mostrou a saída do modelo gemma4:e4b com resultados consistentes. Essa abordagem evidencia domínio técnico, criatividade para adaptar ferramentas e foco em manter os custos zero sem perder funcionalidade.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Funções utilitárias: criar wrappers para facilitar chamadas repetitivas e padronizar parâmetros.
  • Escalabilidade: testar modelos maiores ou diferentes configurações para comparar desempenho e qualidade.
  • Validação de saída: garantir que o retorno esteja sempre no formato esperado, evitando erros em integrações.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ah uma pergunta: O que você considera mais vantajoso para evoluir esse experimento, investir em funções utilitárias para simplificar integrações ou explorar modelos maiores para melhorar a qualidade das respostas?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!