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!

0
respostas

[Projeto] Eu fiz o exercício da aula com Ollama e gemma4:e4b

Fiz usando ollama e ficou bacana apesar do tempo de resposta não ser tão bom com meu equipamento. Funcionou nos conformes.

from openai import OpenAI
from dotenv import load_dotenv
import os
import openai

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
    )

cliente = get_ollama_client()
modelo = "gemma4:e4b"

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}")

def salva(nome_do_arquivo, conteudo):
    try:
        with open(nome_do_arquivo, "w", encoding="utf-8") as arquivo:
            arquivo.write(conteudo)
    except IOError as e:
        print(f"Erro ao salvar arquivo: {e}")


def analisador_sentimentos(produto):
    prompt_sistema = f"""
        Você é um analisador de sentimentos de avaliações de produtos.
        Escreva um parágrafo com até 50 palavras resumindo as avaliações e 
        depois atribua qual o sentimento geral para o produto.
        Identifique também 3 pontos fortes e 3 pontos fracos identificados a partir das avaliações.

        # Formato de Saída

        Nome do Produto:
        Resumo das Avaliações:
        Sentimento Geral: [utilize aqui apenas Positivo, Negativo ou Neutro]
        Ponto fortes: lista com três bullets
        Pontos fracos: lista com três bullets
    """  # noqa: F541

    prompt_usuario = carrega(f"./dados/avaliacoes-{produto}.txt")

    print(f"Iniciou a análise de sentimentos do produto {produto}")

    lista_mensagens = [
        {
            "role": "system",
            "content": prompt_sistema
        },
        {
            "role": "user",
            "content": prompt_usuario
        }
    ]

    try:
        resposta = cliente.chat.completions.create(
                messages=lista_mensagens,
                model=modelo
            )

        texto_resposta = resposta.choices[0].message.content
        salva(f"./dados/analise-{produto}.txt", texto_resposta)
      
        print(f"Análise de sentimentos do produto {produto} concluída e salva em ./dados/analise-{produto}.txt")


    except openai.AuthenticationError as e:
        print(f"Erro de Autenticação: {e}")
    except openai.APIError as e:
        print(f"Erro de API: {e}")


# Processamento único  
analisador_sentimentos("Maquiagem mineral")


# Processamento em lotes
lista_de_produtos = ["Camisetas de algodão orgânico", "Jeans feitos com materiais reciclados", "Maquiagem mineral"]

for produto in lista_de_produtos:
    analisador_sentimentos(produto)