Files
extractor_tematizador_pregu…/extraccion/agentes_entidades.py

299 lines
7.3 KiB
Python

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)