##Desafio Final (usando uma IDE):
##1 - Carregar um arquivo .txt, onde cada linha será um elemento de uma lista do Python
lista_resenhas = []
with open("resenhas.txt","r",encoding="utf-8") as arquivo:
for linha in arquivo:
lista_resenhas.append(linha)
##2 - Mandá-la ao modelo que você está rodando localmente para extrair, em formato JSON, onde cada item terá "usuario", "resenha original", "resenha_pt", "avaliacao" (Positiva, Negativa, Neutra)
from openai import OpenAI
client = OpenAI
client_openai = OpenAI(
base_url="http://127.0.0.1:1234/v1",
api_key="lm-studio"
)
resposta = client_openai.chat.completions.create(
model="google/gemma-3n-e4b",
messages = [
{"role":"system", "content": "Você é um assistente de IA prestativo"},
{"role":"user", "content": """Preciso que leia esta lista de resenhas e retorne para mim APENAS, em formato JSON, onde cada item terá 'usuario', 'resenha original', 'resenha_pt', 'avaliacao' (Positiva, Negativa, Neutra), NÃO RETORNE NENHUM OUTRO TIPO DE COMENTÁRIO.
use o formato
```json[
{"usuario": 'conteudo da lista', 'resenha original': 'conteudo da lista', 'resenha_pt': 'conteudo da lista', 'avaliacao': 'conteudo da lista'}
{"usuario": 'conteudo da lista', 'resenha original': 'conteudo da lista', 'resenha_pt': 'conteudo da lista', 'avaliacao': 'conteudo da lista'}
...
{"usuario": 'conteudo da lista', 'resenha original': 'conteudo da lista', 'resenha_pt': 'conteudo da lista', 'avaliacao': 'conteudo da lista'}
]```
segue a lista:""".join(lista_resenhas) }
## tive que fazer um pouco de prompt engeniering pra fazer o retorno vir correto rsrs
],
temperature=1.0,
)
resposta = resposta.choices[0].message.content
##3 - Transformar a resposta do modelo em uma lista de dicionários Python
import json
json_de_resenhas_classificadas_limpo = resposta.replace("```json", "").replace("```", "")
dicionario_de_resenhas = json.loads(json_de_resenhas_classificadas_limpo)
##4 - Criar uma função que, dada uma lista de dicionários, percorre a lista faz 2 coisas:
##a) conta a quantidade de avaliações positivas, negativas e neutras;
##b) une cada item dessa lista em uma variável do tipo string com algum separador.
##Ao final, retorna ambas as coisas.
def analisa_resenhas(lista_dics):
negativas = 0
positivas = 0
neutras = 0
for dicionario in lista_dics:
if dicionario['avaliacao'] == 'Positiva':
positivas += 1
elif dicionario['avaliacao'] == 'Negativa':
negativas += 1
else:
neutras += 1
lista_de_dicionarios_str = [str(dicionario) for dicionario in lista_dics]
textos_unidos = "###".join(lista_de_dicionarios_str)
return textos_unidos, positivas, negativas, neutras
texto, positivas, negativas, neutras = analisa_resenhas(dicionario_de_resenhas)
print(texto)
print(f"Análise das resenhas\n Positivas: {positivas}\n Negativas: {negativas}\n Neutras: {neutras}")