Update app.py
Browse files
app.py
CHANGED
@@ -2,7 +2,7 @@ import gradio as gr
|
|
2 |
import pandas as pd
|
3 |
import matplotlib.pyplot as plt
|
4 |
import seaborn as sns
|
5 |
-
from
|
6 |
import json
|
7 |
import os
|
8 |
|
@@ -28,17 +28,14 @@ def increment_counter():
|
|
28 |
|
29 |
# Configuração do modelo local
|
30 |
def load_model():
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
trust_remote_code=True
|
37 |
)
|
38 |
-
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
39 |
-
return pipeline('text-generation', model=model, tokenizer=tokenizer)
|
40 |
|
41 |
-
# Questões DISC
|
42 |
perguntas = {
|
43 |
'D': [
|
44 |
"Eu sou direto e vou direto ao ponto",
|
@@ -66,7 +63,6 @@ perguntas = {
|
|
66 |
]
|
67 |
}
|
68 |
|
69 |
-
# Funções existentes mantidas iguais...
|
70 |
def calcular_disc(respostas):
|
71 |
resultados = {'D': 0, 'I': 0, 'S': 0, 'C': 0}
|
72 |
|
@@ -92,7 +88,7 @@ def criar_grafico(resultados):
|
|
92 |
|
93 |
return plt
|
94 |
|
95 |
-
def gerar_analise_llm(
|
96 |
prompt = f"""<s>[INST] Como um especialista em análise comportamental DISC, faça uma análise detalhada do seguinte perfil:
|
97 |
|
98 |
Resultados percentuais:
|
@@ -120,19 +116,11 @@ Forneça:
|
|
120 |
5. Ambientes de trabalho mais adequados
|
121 |
[/INST]"""
|
122 |
|
123 |
-
|
124 |
-
prompt,
|
125 |
-
max_new_tokens=1024,
|
126 |
-
temperature=0.7,
|
127 |
-
top_p=0.95,
|
128 |
-
repetition_penalty=1.15
|
129 |
-
)[0]['generated_text']
|
130 |
-
|
131 |
-
return resposta.split("[/INST]")[1].strip()
|
132 |
|
133 |
class DiscAnalyzer:
|
134 |
def __init__(self):
|
135 |
-
self.
|
136 |
|
137 |
def avaliar_disc(self, values):
|
138 |
# Incrementa o contador
|
@@ -146,7 +134,7 @@ class DiscAnalyzer:
|
|
146 |
|
147 |
resultados = calcular_disc(respostas)
|
148 |
fig = criar_grafico(resultados)
|
149 |
-
analise = gerar_analise_llm(self.
|
150 |
|
151 |
return fig, analise, counter_text
|
152 |
|
|
|
2 |
import pandas as pd
|
3 |
import matplotlib.pyplot as plt
|
4 |
import seaborn as sns
|
5 |
+
from ctransformers import AutoModelForCausalLM
|
6 |
import json
|
7 |
import os
|
8 |
|
|
|
28 |
|
29 |
# Configuração do modelo local
|
30 |
def load_model():
|
31 |
+
return AutoModelForCausalLM.from_pretrained(
|
32 |
+
'TheBloke/Mistral-7B-Instruct-v0.1-GGUF',
|
33 |
+
model_file='mistral-7b-instruct-v0.1.Q4_K_M.gguf',
|
34 |
+
model_type='mistral',
|
35 |
+
gpu_layers=0 # CPU only
|
|
|
36 |
)
|
|
|
|
|
37 |
|
38 |
+
# Questões DISC
|
39 |
perguntas = {
|
40 |
'D': [
|
41 |
"Eu sou direto e vou direto ao ponto",
|
|
|
63 |
]
|
64 |
}
|
65 |
|
|
|
66 |
def calcular_disc(respostas):
|
67 |
resultados = {'D': 0, 'I': 0, 'S': 0, 'C': 0}
|
68 |
|
|
|
88 |
|
89 |
return plt
|
90 |
|
91 |
+
def gerar_analise_llm(llm, resultados, respostas_brutas):
|
92 |
prompt = f"""<s>[INST] Como um especialista em análise comportamental DISC, faça uma análise detalhada do seguinte perfil:
|
93 |
|
94 |
Resultados percentuais:
|
|
|
116 |
5. Ambientes de trabalho mais adequados
|
117 |
[/INST]"""
|
118 |
|
119 |
+
return llm(prompt, max_new_tokens=1024, temperature=0.7)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
|
121 |
class DiscAnalyzer:
|
122 |
def __init__(self):
|
123 |
+
self.llm = load_model()
|
124 |
|
125 |
def avaliar_disc(self, values):
|
126 |
# Incrementa o contador
|
|
|
134 |
|
135 |
resultados = calcular_disc(respostas)
|
136 |
fig = criar_grafico(resultados)
|
137 |
+
analise = gerar_analise_llm(self.llm, resultados, respostas)
|
138 |
|
139 |
return fig, analise, counter_text
|
140 |
|