Primera fase: se completan las funciones para las 15 preguntas abiertas.

This commit is contained in:
Mongar28
2025-10-30 19:39:03 -05:00
parent 878ff1e9f3
commit a27b87e97b
4 changed files with 331 additions and 26 deletions

View File

@@ -2,6 +2,8 @@ from llm.context import LLMContext
from llm.config import LLMConfig
from extraccion.schemas_entidades import (
Acciones,
Expectativa,
Opinion,
Temas,
Estrategias,
Factores,
@@ -9,6 +11,8 @@ from extraccion.schemas_entidades import (
Competencias,
Herramientas,
Mecanismos,
Opiniones,
Expectativas,
)
import yaml
@@ -38,7 +42,7 @@ def extractor_pre_1(respuesta: str) -> Acciones:
llm_so = llm.with_structured_output(Acciones)
acciones: list = llm_so.invoke(prompt)
acciones = llm_so.invoke(prompt)
lista_acciones = acciones.acciones
@@ -62,7 +66,7 @@ def extractor_pre_2(respuesta: str) -> Acciones:
llm_so = llm.with_structured_output(Acciones)
acciones: list = llm_so.invoke(prompt)
acciones = llm_so.invoke(prompt)
lista_acciones = acciones.acciones
@@ -86,7 +90,7 @@ def extractor_pre_3(respuesta: str) -> Temas:
llm_so = llm.with_structured_output(Temas)
temas: list = llm_so.invoke(prompt)
temas = llm_so.invoke(prompt)
lista_temas = temas.temas
@@ -110,7 +114,7 @@ def extractor_pre_4(respuesta: str) -> Temas:
llm_so = llm.with_structured_output(Temas)
temas: list = llm_so.invoke(prompt)
temas = llm_so.invoke(prompt)
lista_temas = temas.temas
@@ -134,7 +138,7 @@ def extractor_pre_5(respuesta: str) -> Estrategias:
llm_so = llm.with_structured_output(Estrategias)
estrategias: list = llm_so.invoke(prompt)
estrategias = llm_so.invoke(prompt)
lista_estrategias = estrategias.estrategias
@@ -158,7 +162,7 @@ def extractor_pre_6(respuesta: str) -> Mecanismos:
llm_so = llm.with_structured_output(Mecanismos)
mecanismos: list = llm_so.invoke(prompt)
mecanismos = llm_so.invoke(prompt)
lista_mecanismos = mecanismos.mecanismos
@@ -182,7 +186,7 @@ def extractor_pre_7(respuesta: str) -> Estrategias:
llm_so = llm.with_structured_output(Estrategias)
estrategias: list = llm_so.invoke(prompt)
estrategias = llm_so.invoke(prompt)
lista_estrategias = estrategias.estrategias
@@ -206,7 +210,7 @@ def extractor_pre_8(respuesta: str) -> Factores:
llm_so = llm.with_structured_output(Factores)
factores: list = llm_so.invoke(prompt)
factores = llm_so.invoke(prompt)
lista_factores = factores.factores
@@ -230,7 +234,7 @@ def extractor_pre_9(respuesta: str) -> Entidades:
llm_so = llm.with_structured_output(Entidades)
entidades: list = llm_so.invoke(prompt)
entidades = llm_so.invoke(prompt)
lista_entidades = entidades.entidades
@@ -276,7 +280,7 @@ def extractor_pre_11(respuesta: str) -> Herramientas:
llm_so = llm.with_structured_output(Herramientas)
herramientas: list = llm_so.invoke(prompt)
herramientas = llm_so.invoke(prompt)
lista_herramientas = herramientas.herramientas
@@ -288,11 +292,108 @@ def extractor_pre_11(respuesta: str) -> Herramientas:
return herramientas
def extractor_pre_12(respuesta: str) -> Opiniones:
prompt = prompts_config["prompts"]["pregunta_12"]["prompt"].format(
respuesta=respuesta
)
config = LLMConfig(provider="anthropic", model_name="claude-haiku-4-5")
context.set_strategy(config)
llm = context.get_llm()
llm_so = llm.with_structured_output(Opiniones)
opiniones = llm_so.invoke(prompt)
lista_opiniones = opiniones.opiniones
for opinion in lista_opiniones:
print("-" * 100)
print(opinion.opinion)
print("-" * 100)
return opiniones
def extractor_pre_13(respuesta: str) -> Expectativas:
prompt = prompts_config["prompts"]["pregunta_13"]["prompt"].format(
respuesta=respuesta
)
config = LLMConfig(provider="anthropic", model_name="claude-haiku-4-5")
context.set_strategy(config)
llm = context.get_llm()
llm_so = llm.with_structured_output(Expectativas)
expectativas = llm_so.invoke(prompt)
lista_expectativas = expectativas.expectativas
for expectativa in lista_expectativas:
print("-" * 100)
print(expectativa.expectativa)
print("-" * 100)
return expectativas
def extractor_pre_14(respuesta: str) -> Opiniones:
prompt = prompts_config["prompts"]["pregunta_14"]["prompt"].format(
respuesta=respuesta
)
config = LLMConfig(provider="anthropic", model_name="claude-haiku-4-5")
context.set_strategy(config)
llm = context.get_llm()
llm_so = llm.with_structured_output(Opiniones)
opiniones = llm_so.invoke(prompt)
lista_opiniones = opiniones.opiniones
for opinion in lista_opiniones:
print("-" * 100)
print(opinion.opinion)
print("-" * 100)
return opiniones
def extractor_pre_15(respuesta: str) -> Opiniones:
prompt = prompts_config["prompts"]["pregunta_14"]["prompt"].format(
respuesta=respuesta
)
config = LLMConfig(provider="anthropic", model_name="claude-haiku-4-5")
context.set_strategy(config)
llm = context.get_llm()
llm_so = llm.with_structured_output(Opiniones)
opiniones = llm_so.invoke(prompt)
lista_opiniones = opiniones.opiniones
for opinion in lista_opiniones:
print("-" * 100)
print(opinion.opinion)
print("-" * 100)
return opiniones
respuesta = """
Cada semestre en nuestra programación están estipuladas dos capacitaciones según
las necesidades que los profesores expresen. Cuando algunos profesores participan
en fotos o seminarios deben de comprometerse a compartir lo aprendido sacando para
ello un espacio en la reunión de profesores, también deben de enviar un correo con
el certificado
A la fecha no conocemos si se ha realizado o no, ya que no
hemos tenido conocimiento si el rector las conoce o está gestionando.
Desde el núcleo de ciencias naturales en el año 2022 se realizó una
alianza con cornare y la UMATA, dicha invitación a participar se hizo
por la página de la secretaria departamental, donde a partir de un
infograma explicaba paso a paso como participar y además contaba con linea telefónica.
"""
extractor_pre_6(respuesta)
# extractor_pre_15(respuesta)