Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -24,7 +24,7 @@ model_name = "gpt2" # or "gpt2-medium", "gpt2-large", "gpt2-xl"
|
|
24 |
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
|
25 |
model = GPT2LMHeadModel.from_pretrained(model_name).to(device)
|
26 |
|
27 |
-
# Function to generate text using GPT-2
|
28 |
def evaluar_prompt(prompt):
|
29 |
try:
|
30 |
# Encode the prompt
|
@@ -45,43 +45,50 @@ def evaluar_prompt(prompt):
|
|
45 |
# Decode the generated text
|
46 |
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
47 |
|
48 |
-
# Initialize variables to store detailed advice
|
49 |
claridad_consejo = ""
|
50 |
logica_consejo = ""
|
51 |
relevancia_consejo = ""
|
52 |
evidencia_consejo = ""
|
53 |
-
|
54 |
# Evaluate clarity
|
55 |
if len(prompt.split()) < 5:
|
56 |
claridad_consejo = "Tu prompt es muy corto, lo que puede generar ambigüedad. Intenta expandirlo para proporcionar más contexto o detalles específicos."
|
|
|
|
|
|
|
57 |
# Evaluate logic
|
58 |
if any(word in prompt.lower() for word in ["mejor", "peor", "único"]):
|
59 |
logica_consejo = f"Palabras como '{', '.join([w for w in ['mejor', 'peor', 'único'] if w in prompt.lower()])}' sugieren una perspectiva subjetiva. Reformula el prompt para enfocarte en criterios objetivos."
|
|
|
|
|
|
|
60 |
# Evaluate relevance
|
61 |
-
if
|
62 |
-
relevancia_consejo = "
|
|
|
|
|
|
|
63 |
# Evaluate evidence request
|
64 |
-
if
|
65 |
-
evidencia_consejo = "
|
|
|
|
|
66 |
|
67 |
# Compile suggestions
|
68 |
sugerencias = "### Sugerencias para Mejorar:\n"
|
69 |
-
|
70 |
-
#
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
if relevancia_consejo:
|
76 |
-
sugerencias += f"\n* **Relevancia:** {relevancia_consejo}"
|
77 |
-
if evidencia_consejo:
|
78 |
-
sugerencias += f"\n* **Evidencia:** {evidencia_consejo}"
|
79 |
|
80 |
# If no advice is necessary, indicate that the prompt is strong
|
81 |
if not any([claridad_consejo, logica_consejo, relevancia_consejo, evidencia_consejo]):
|
82 |
sugerencias += "\nTu prompt está bien construido y no presenta áreas importantes para mejorar."
|
83 |
|
84 |
-
return sugerencias,
|
85 |
|
86 |
except Exception as e:
|
87 |
return str(e), "Error"
|
|
|
24 |
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
|
25 |
model = GPT2LMHeadModel.from_pretrained(model_name).to(device)
|
26 |
|
27 |
+
# Function to generate text using GPT-2 and evaluate the prompt
|
28 |
def evaluar_prompt(prompt):
|
29 |
try:
|
30 |
# Encode the prompt
|
|
|
45 |
# Decode the generated text
|
46 |
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
47 |
|
48 |
+
# Initialize variables to store detailed advice
|
49 |
claridad_consejo = ""
|
50 |
logica_consejo = ""
|
51 |
relevancia_consejo = ""
|
52 |
evidencia_consejo = ""
|
53 |
+
|
54 |
# Evaluate clarity
|
55 |
if len(prompt.split()) < 5:
|
56 |
claridad_consejo = "Tu prompt es muy corto, lo que puede generar ambigüedad. Intenta expandirlo para proporcionar más contexto o detalles específicos."
|
57 |
+
else:
|
58 |
+
claridad_consejo = "Tu prompt es claro y está bien definido, lo que facilita un análisis efectivo."
|
59 |
+
|
60 |
# Evaluate logic
|
61 |
if any(word in prompt.lower() for word in ["mejor", "peor", "único"]):
|
62 |
logica_consejo = f"Palabras como '{', '.join([w for w in ['mejor', 'peor', 'único'] if w in prompt.lower()])}' sugieren una perspectiva subjetiva. Reformula el prompt para enfocarte en criterios objetivos."
|
63 |
+
else:
|
64 |
+
logica_consejo = "El prompt evita términos subjetivos, lo que ayuda a mantener un enfoque objetivo."
|
65 |
+
|
66 |
# Evaluate relevance
|
67 |
+
if any(word in prompt.lower() for word in ["cliente", "experiencia", "empresa", "servicio"]):
|
68 |
+
relevancia_consejo = "El prompt es relevante y está alineado con el objetivo de mejorar la experiencia del cliente."
|
69 |
+
else:
|
70 |
+
relevancia_consejo = "El prompt podría no estar directamente relacionado con el objetivo principal. Asegúrate de que aborde claramente la cuestión principal."
|
71 |
+
|
72 |
# Evaluate evidence request
|
73 |
+
if any(word in prompt.lower() for word in ["evidencia", "pruebas", "demuestra", "ejemplos"]):
|
74 |
+
evidencia_consejo = "El prompt ya solicita evidencia, lo cual es positivo para un análisis detallado."
|
75 |
+
else:
|
76 |
+
evidencia_consejo = "Considera pedir explícitamente ejemplos específicos o evidencia sobre cómo mejorar la experiencia del cliente, para obtener respuestas más detalladas y fundamentadas."
|
77 |
|
78 |
# Compile suggestions
|
79 |
sugerencias = "### Sugerencias para Mejorar:\n"
|
80 |
+
|
81 |
+
# Combine the feedback into suggestions
|
82 |
+
sugerencias += f"\n* **Claridad:** {claridad_consejo}"
|
83 |
+
sugerencias += f"\n* **Lógica:** {logica_consejo}"
|
84 |
+
sugerencias += f"\n* **Relevancia:** {relevancia_consejo}"
|
85 |
+
sugerencias += f"\n* **Evidencia:** {evidencia_consejo}"
|
|
|
|
|
|
|
|
|
86 |
|
87 |
# If no advice is necessary, indicate that the prompt is strong
|
88 |
if not any([claridad_consejo, logica_consejo, relevancia_consejo, evidencia_consejo]):
|
89 |
sugerencias += "\nTu prompt está bien construido y no presenta áreas importantes para mejorar."
|
90 |
|
91 |
+
return sugerencias, 85 # Returning suggestions and an arbitrary score as an example
|
92 |
|
93 |
except Exception as e:
|
94 |
return str(e), "Error"
|