File size: 1,497 Bytes
13859c7
 
 
 
 
77a58f0
13859c7
77a58f0
 
 
13859c7
77a58f0
 
13859c7
 
 
 
 
77a58f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f5b6851
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
python

Executar

Copiar
import os
import shutil
from transformers import LlamaTokenizer, LlamaForCausalLM
import torch

# Definir o diretório de cache para o modelo
os.environ['TRANSFORMERS_CACHE'] = '/tmp/model_cache'

# Limpar o diretório de cache, se existir
cache_dir = '/tmp/model_cache'
if os.path.exists(cache_dir):
    shutil.rmtree(cache_dir)

def carregar_modelo():
    tokenizer = LlamaTokenizer.from_pretrained("lzw1008/Emollama-7b")
    model = LlamaForCausalLM.from_pretrained("lzw1008/Emollama-7b", device_map="auto")
    return tokenizer, model

tokenizer, model = carregar_modelo()

def analise_sentimento(texto: str) -> str:
    prompt = f"""Humano:
Tarefa: Categorize a emoção expressada no texto como 'neutro ou sem emoção' ou identifique a presença de uma ou mais emoções das listadas (raiva, confusão, ansiedade, desgosto, medo, alegria, amor, otimismo, pessimismo, tristeza, surpresa, confiança).
Texto: {texto}
Esse texto contém a emoção:

Assistente:"""

    inputs = tokenizer(prompt, return_tensors="pt", padding=True).to(model.device)

    with torch.no_grad():
        generate_ids = model.generate(
            inputs["input_ids"],
            attention_mask=inputs["attention_mask"],
            max_length=256,
            do_sample=True,
            top_p=0.95,
            temperature=0.7,
            pad_token_id=tokenizer.eos_token_id
        )

    resposta = tokenizer.decode(generate_ids[0], skip_special_tokens=True)
    
    return resposta