Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] [Bug] Try Except não identifica o erro da chave API

Olá, Pessoal!

Minha aplicação não está caindo no Try Except quando eu coloco uma API inválida. Consegui capturar o erro na alteração do modelo, porém não da API. A Aplicação retorna o print "Inicou a análise de sentimentos do produto" porém como resultado o arquivo não é gerado/atualizado pois a API está incorreta, mais um fator que indica que ele teria que cair no try except.

Tentei identificar com o Iuri mas não consegui :/

Poderiam me ajudar?

Segue meu código:

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

load_dotenv()

cliente = OpenAI(api_key=os.getenv("kldsja"))
modelo = "gpt-3.5-turbo-0125"


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, "a", encoding="utf-8") as arquivo:
            arquivo.write(f'{conteudo}\n\n')
    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
    """

    prompt_usuario = carrega(f"./dados/{produto}.txt")
    print(f"Inicou a análise de sentimentos do produto {produto}")

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

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

        texto_resposta = resposta.choices[0].message.content
        salva(f"./dados/analise-{produto}.txt", texto_resposta)
    except openai.AuthenticationError as e:
        print(f"Erro de Autenticação: {e}")
    except openai.APIError as e:
        print(f"Erro de API: {e}")


analisador_sentimentos("mouse_ortopedico")
2 respostas
solução!

Olá, Gabriel! Tudo bem?

Nessa linha cliente = OpenAI(api_key=os.getenv("kldsja")) você não está caindo na Exception porque você continua utilizando o os.getenv que busca uma variável de ambiente em um arquivo .env, mas como esse é apenas um texto aleatório, vai causar um erro no método getenv e não no OpenAI, impossibilitando assim que caia no Exception definido para erro de API.

A forma correta para que testar essa Exception seria da seguinte forma:

cliente = OpenAI(api_key="kldsja")

Dessa forma, a Exception ocorrerá no dentro do método OpenAI e retornará o erro formatado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Muito obrigado! :)

Faz sentido, consegui resolver o problema!