Primera fase: se construyen las funciones para las primeras 12 preguntas
This commit is contained in:
298
extraccion/agentes_entidades.py
Normal file
298
extraccion/agentes_entidades.py
Normal file
@@ -0,0 +1,298 @@
|
||||
from llm.context import LLMContext
|
||||
from llm.config import LLMConfig
|
||||
from extraccion.schemas_entidades import (
|
||||
Acciones,
|
||||
Temas,
|
||||
Estrategias,
|
||||
Factores,
|
||||
Entidades,
|
||||
Competencias,
|
||||
Herramientas,
|
||||
Mecanismos,
|
||||
)
|
||||
import yaml
|
||||
|
||||
|
||||
# Cargar la configración de prompts desde el archivo .yaml
|
||||
def load_prompts_config(file_path):
|
||||
with open(file_path, "r") as file:
|
||||
prompts_config = yaml.safe_load(file)
|
||||
return prompts_config
|
||||
|
||||
|
||||
path_prompts = "extraccion/prompts.yaml"
|
||||
prompts_config = load_prompts_config(path_prompts)
|
||||
|
||||
context = LLMContext()
|
||||
|
||||
|
||||
def extractor_pre_1(respuesta: str) -> Acciones:
|
||||
prompt = prompts_config["prompts"]["pregunta_1"]["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(Acciones)
|
||||
|
||||
acciones: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_acciones = acciones.acciones
|
||||
|
||||
for accion in lista_acciones:
|
||||
print("-" * 100)
|
||||
print(accion.accion)
|
||||
print("-" * 100)
|
||||
|
||||
return acciones
|
||||
|
||||
|
||||
def extractor_pre_2(respuesta: str) -> Acciones:
|
||||
prompt = prompts_config["prompts"]["pregunta_2"]["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(Acciones)
|
||||
|
||||
acciones: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_acciones = acciones.acciones
|
||||
|
||||
for accion in lista_acciones:
|
||||
print("-" * 100)
|
||||
print(accion.accion)
|
||||
print("-" * 100)
|
||||
|
||||
return acciones
|
||||
|
||||
|
||||
# El caso de este agente debe analizar se bien posteriormente para afinar bien el schema de datos
|
||||
def extractor_pre_3(respuesta: str) -> Temas:
|
||||
prompt = prompts_config["prompts"]["pregunta_3"]["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(Temas)
|
||||
|
||||
temas: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_temas = temas.temas
|
||||
|
||||
for tema in lista_temas:
|
||||
print("-" * 100)
|
||||
print(tema.tema)
|
||||
print("-" * 100)
|
||||
|
||||
return temas
|
||||
|
||||
|
||||
def extractor_pre_4(respuesta: str) -> Temas:
|
||||
prompt = prompts_config["prompts"]["pregunta_4"]["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(Temas)
|
||||
|
||||
temas: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_temas = temas.temas
|
||||
|
||||
for tema in lista_temas:
|
||||
print("-" * 100)
|
||||
print(tema.tema)
|
||||
print("-" * 100)
|
||||
|
||||
return temas
|
||||
|
||||
|
||||
def extractor_pre_5(respuesta: str) -> Estrategias:
|
||||
prompt = prompts_config["prompts"]["pregunta_5"]["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(Estrategias)
|
||||
|
||||
estrategias: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_estrategias = estrategias.estrategias
|
||||
|
||||
for estrategia in lista_estrategias:
|
||||
print("-" * 100)
|
||||
print(estrategia.estrategia)
|
||||
print("-" * 100)
|
||||
|
||||
return estrategias
|
||||
|
||||
|
||||
def extractor_pre_6(respuesta: str) -> Mecanismos:
|
||||
prompt = prompts_config["prompts"]["pregunta_6"]["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(Mecanismos)
|
||||
|
||||
mecanismos: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_mecanismos = mecanismos.mecanismos
|
||||
|
||||
for mecanismo in lista_mecanismos:
|
||||
print("-" * 100)
|
||||
print(mecanismo.mecanismo)
|
||||
print("-" * 100)
|
||||
|
||||
return mecanismos
|
||||
|
||||
|
||||
def extractor_pre_7(respuesta: str) -> Estrategias:
|
||||
prompt = prompts_config["prompts"]["pregunta_7"]["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(Estrategias)
|
||||
|
||||
estrategias: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_estrategias = estrategias.estrategias
|
||||
|
||||
for estrategia in lista_estrategias:
|
||||
print("-" * 100)
|
||||
print(estrategia.estrategia)
|
||||
print("-" * 100)
|
||||
|
||||
return estrategias
|
||||
|
||||
|
||||
def extractor_pre_8(respuesta: str) -> Factores:
|
||||
prompt = prompts_config["prompts"]["pregunta_8"]["prompt"].format(
|
||||
respuesta=respuesta
|
||||
)
|
||||
|
||||
config = LLMConfig(provider="anthropic", model_name="claude-sonnet-4-5")
|
||||
|
||||
context.set_strategy(config)
|
||||
llm = context.get_llm()
|
||||
|
||||
llm_so = llm.with_structured_output(Factores)
|
||||
|
||||
factores: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_factores = factores.factores
|
||||
|
||||
for factor in lista_factores:
|
||||
print("-" * 100)
|
||||
print(factor.factor)
|
||||
print("-" * 100)
|
||||
|
||||
return factores
|
||||
|
||||
|
||||
def extractor_pre_9(respuesta: str) -> Entidades:
|
||||
prompt = prompts_config["prompts"]["pregunta_9"]["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(Entidades)
|
||||
|
||||
entidades: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_entidades = entidades.entidades
|
||||
|
||||
for entidad in lista_entidades:
|
||||
print("-" * 100)
|
||||
print(entidad.entidad)
|
||||
print("-" * 100)
|
||||
|
||||
return entidades
|
||||
|
||||
|
||||
def extractor_pre_10(respuesta: str) -> Competencias:
|
||||
prompt = prompts_config["prompts"]["pregunta_10"]["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(Competencias)
|
||||
|
||||
competencias: Competencias = llm_so.invoke(prompt)
|
||||
|
||||
print("\n Competencias extraídas:")
|
||||
print(f"Básicas: {competencias.basicas}")
|
||||
print(f"Socioemocionales: {competencias.socioemocionales}")
|
||||
print(f"Ciudadanas: {competencias.ciudadanas}")
|
||||
print(f"Siglo XXI: {competencias.siglo_xxi}")
|
||||
|
||||
return competencias
|
||||
|
||||
|
||||
def extractor_pre_11(respuesta: str) -> Herramientas:
|
||||
prompt = prompts_config["prompts"]["pregunta_11"]["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(Herramientas)
|
||||
|
||||
herramientas: list = llm_so.invoke(prompt)
|
||||
|
||||
lista_herramientas = herramientas.herramientas
|
||||
|
||||
for herramienta in lista_herramientas:
|
||||
print("-" * 100)
|
||||
print(herramienta.herramienta)
|
||||
print("-" * 100)
|
||||
|
||||
return herramientas
|
||||
|
||||
|
||||
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
|
||||
"""
|
||||
extractor_pre_6(respuesta)
|
||||
Reference in New Issue
Block a user