fix: update execution counts and improve message parsing in chat conversation functions

This commit is contained in:
2026-02-13 16:12:23 -06:00
parent 3d407c5b91
commit 9d25203ef6
2 changed files with 34 additions and 39 deletions
+13 -27
View File
@@ -535,7 +535,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 92,
"id": "3e705a02",
"metadata": {},
"outputs": [
@@ -560,7 +560,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 93,
"id": "57e06acc",
"metadata": {},
"outputs": [
@@ -571,9 +571,9 @@
"{\n",
" data: {\n",
" conversation_plan: {\n",
" id: \"afafb048-8108-4b19-b170-8c27f89bfa96\",\n",
" id: \"e9063a5c-c48f-4682-9f9a-1eef805a3e51\",\n",
" plan_estudio_id: \"4660b774-a6e2-44f4-a340-747b41235c7c\",\n",
" openai_conversation_id: \"conv_698f41b0582c819694b1565021a2390c09878265d4aa3f0d\",\n",
" openai_conversation_id: \"conv_698f6651077c8194b9f75e0b65443a7d0bf4bdc062c70308\",\n",
" estado: \"ACTIVA\"\n",
" }\n",
" },\n",
@@ -599,7 +599,7 @@
},
{
"cell_type": "code",
"execution_count": 75,
"execution_count": 94,
"id": "3426d5ff",
"metadata": {},
"outputs": [
@@ -610,13 +610,8 @@
"{\n",
" respuesta: {\n",
" ok: true,\n",
" openai_response_id: \"resp_09878265d4aa3f0d00698f41f461b88196858dc9a9ad31fc38\",\n",
" data: {\n",
" perfil_de_ingreso: \"El aspirante deberá haber concluido el bachillerato con perfil Área 1 (Ciencias Físico-Matemáticas). Debe demostrar sólido dominio de matemáticas, física y química, así como capacidad de razonamiento lógico-abstracto y resolución de problemas complejos. Se espera experiencia en el manejo básico de herramientas computacionales y en la lectura e interpretación de textos científicos, así como habilidad para aprender de forma autónoma y trabajar en equipo. El candidato debe mostrar interés por la física, especialmente en temas teóricos y experimentales, y compromiso con la ética científica, la comunicación técnica y la realización de proyectos con buenas prácticas de investigación. En suma, se valora la curiosidad, la iniciativa, la disciplina y la capacidad para adaptar ideas complejas a contextos interdisciplinarios.\",\n",
" programa_de_investigacion: \"No aplica\",\n",
" \"ai-message\": \"Se mejoró la redacción del perfil de ingreso para mayor claridad y alineación con las competencias esperadas (matemáticas, física, química, razonamiento, herramientas computacionales, aprendizaje autónomo y trabajo en equipo) y se propusieron temas de investigación adecuados para un proyecto de Bachillerato en gravedad cuántica de bucles. Temas de investigación sugeridos: 1) Modelo computacional de una red de espines 2D para estudiar geometría emergente y observables básicos; 2) Protocolo mínimo de reproducibilidad en simulaciones de redes de espines; 3) Análisis conceptual comparando GR y LQG en cosmología a nivel didáctico. Recomendación: ajustar el alcance y recursos con el tutor para asegurar viabilidad y supervisión adecuada.\"\n",
" },\n",
" raw: '{\"perfil_de_ingreso\":\"El aspirante deberá haber concluido el bachillerato con perfil Área 1 (Ciencias Físico-Matemáticas). Debe demostrar sólido dominio de matemáticas, física y química, así como capacidad de razonamiento lógico-abstracto y resolución de problemas complejos. Se espera experiencia en el manejo básico de herramientas computacionales y en la lectura e interpretación de textos científicos, así como habilidad para aprender de forma autónoma y trabajar en equipo. El candidato debe mostrar interés por la física, especialmente en temas teóricos y experimentales, y compromiso con la ética científica, la comunicación técnica y la realización de proyectos con buenas prácticas de investigación. En suma, se valora la curiosidad, la iniciativa, la disciplina y la capacidad para adaptar ideas complejas a contextos interdisciplinarios.\",\"programa_de_investigacion\":\"No aplica\",\"ai-message\":\"Se mejoró la redacción del perfil de ingreso para mayor claridad y alineación con las competencias esperadas (matemáticas, física, química, razonamiento, herramientas computacionales, aprendizaje autónomo y trabajo en equipo) y se propusieron temas de investigación adecuados para un proyecto de Bachillerato en gravedad cuántica de bucles. Temas de investigación sugeridos: 1) Modelo computacional de una red de espines 2D para estudiar geometría emergente y observables básicos; 2) Protocolo mínimo de reproducibilidad en simulaciones de redes de espines; 3) Análisis conceptual comparando GR y LQG en cosmología a nivel didáctico. Recomendación: ajustar el alcance y recursos con el tutor para asegurar viabilidad y supervisión adecuada.\"}'\n",
" openai_response_id: \"resp_0bf4bdc062c7030800698f6653ae5c819490e18346014719d7\",\n",
" raw: '{\"perfil_de_ingreso\":\"El aspirante debe haber concluido el bachillerato con perfil Área 1 (Ciencias Físico-Matemáticas). Se requieren fundamentos sólidos en matemáticas (álgebra lineal, cálculo, análisis), física (mecánica clásica y electromagnetismo a nivel de bachillerato; introducción a la física cuántica) y química básica, así como razonamiento lógico, capacidad de análisis de problemas y habilidades de lectura científica. Se valorará experiencia en actividades de laboratorio y en el manejo de herramientas computacionales para simulación (p. ej., programación en Python, MATLAB u otros). El candidato debe demostrar autonomía en el aprendizaje, claridad en la comunicación escrita y oral, facilidad para trabajar en equipo, ética en la investigación y un interés demostrado por problemáticas complejas de la física teórica y su relación con la tecnología y el modelado computacional. Se espera disposición para abordar conceptos avanzados de forma progresiva, con competencia para supervisar proyectos cortos y colaborar de forma responsable.\",\"programa_de_investigacion\":\"Propuesta de programa de investigación orientado al Bachillerato en Gravedad Cuántica de Bucles: Línea principal: Modelos simplificados de redes de espín para ilustrar la geometría cuántica emergente. Objetivos: (i) implementar simulaciones simples de redes de espín en 2D; (ii) estudiar observables básicos que permitan visualizar la transición entre estructuras discretas y conceptos geométros; (iii) desarrollar recursos didácticos (cuadernos de ejercicios, cuadernos Jupyter) para divulgación y aprendizaje. Vinculación con asignaturas: Física y Matemáticas (bases teóricas), Informática (programación y simulación). Metodología: prácticas computacionales con Python/NumPy, análisis de resultados y presentaciones; evaluación a través de bitácoras, informes reproducibles y presentaciones orales. Perfil docente: docentes con experiencia en física teórica, simulación numérica y didáctica de conceptos complejos. Observaciones: el programa se adecua a un plan de Bachillerato con enfoque pedagógico y reproducibilidad.\",\"ai-message\":\"Se mejoró la redacción del perfil de ingreso para mayor claridad y se propuso un tema de investigación orientado a líneas didácticas y prácticas computacionales para la gravedad cuántica de bucles.\"}'\n",
" },\n",
" error: null\n",
"}\n"
@@ -641,7 +636,7 @@
},
{
"cell_type": "code",
"execution_count": 84,
"execution_count": 89,
"id": "c68073e8",
"metadata": {},
"outputs": [
@@ -651,16 +646,7 @@
"text": [
"{\n",
" \"source\": \"openai\",\n",
" \"items\": [\n",
" {\n",
" \"role\": \"assistant\",\n",
" \"content\": \"{\\\"perfil_de_ingreso\\\":\\\"El aspirante deberá haber concluido el bachillerato con perfil Área 1 (Ciencias Físico-Matemáticas). Debe demostrar sólido dominio de matemáticas, física y química, así como capacidad de razonamiento lógico-abstracto y resolución de problemas complejos. Se espera experiencia en el manejo básico de herramientas computacionales y en la lectura e interpretación de textos científicos, así como habilidad para aprender de forma autónoma y trabajar en equipo. El candidato debe mostrar interés por la física, especialmente en temas teóricos y experimentales, y compromiso con la ética científica, la comunicación técnica y la realización de proyectos con buenas prácticas de investigación. En suma, se valora la curiosidad, la iniciativa, la disciplina y la capacidad para adaptar ideas complejas a contextos interdisciplinarios.\\\",\\\"programa_de_investigacion\\\":\\\"No aplica\\\",\\\"ai-message\\\":\\\"Se mejoró la redacción del perfil de ingreso para mayor claridad y alineación con las competencias esperadas (matemáticas, física, química, razonamiento, herramientas computacionales, aprendizaje autónomo y trabajo en equipo) y se propusieron temas de investigación adecuados para un proyecto de Bachillerato en gravedad cuántica de bucles. Temas de investigación sugeridos: 1) Modelo computacional de una red de espines 2D para estudiar geometría emergente y observables básicos; 2) Protocolo mínimo de reproducibilidad en simulaciones de redes de espines; 3) Análisis conceptual comparando GR y LQG en cosmología a nivel didáctico. Recomendación: ajustar el alcance y recursos con el tutor para asegurar viabilidad y supervisión adecuada.\\\"}\"\n",
" },\n",
" {\n",
" \"role\": \"user\",\n",
" \"content\": \"Dale mejor redacción al perfil de ingreso y sugiere tema de investigación.\"\n",
" }\n",
" ]\n",
" \"items\": []\n",
"}\n"
]
}
@@ -678,7 +664,7 @@
},
{
"cell_type": "code",
"execution_count": 87,
"execution_count": null,
"id": "7fbae7c3",
"metadata": {},
"outputs": [
@@ -688,7 +674,7 @@
"{ ok: \u001b[33mtrue\u001b[39m }"
]
},
"execution_count": 87,
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
@@ -697,11 +683,11 @@
"const { data: respuesta, error } = await supabase.functions.invoke(\n",
" `create-chat-conversation/conversations/${data.conversation_plan.id}/archive`,\n",
" {\n",
" method: \"DELETE\"\n",
" method: \"DELETE\",\n",
" },\n",
");\n",
"\n",
"respuesta\n"
"respuesta;\n"
]
},
{
@@ -157,12 +157,27 @@ app.get(`${prefix}/conversations/:id/messages`, async (c) => {
convRow.openai_conversation_id,
);
const conversacion = items.data.filter((it: any) =>
it.type === "message" && (it.role === "assistant" || it.role === "user")
).map((it: any) => ({
role: it.role,
content: it.content.map((c: any) => c.text).join(""),
}));
const conversacion = items.data
.filter((it: any) =>
it.type === "message" &&
(it.role === "assistant" || it.role === "user")
)
.map((it: any) => {
const rawText = it.content.map((c: any) => c.text).join("");
let parsedContent;
try {
parsedContent = JSON.parse(rawText); // 👈 aquí lo convertimos
} catch {
parsedContent = rawText; // si no es JSON, lo dejamos normal
}
return {
role: it.role,
content: parsedContent,
};
});
return withCors(jsonResponse({ source: "openai", items: conversacion }));
} catch (err) {
@@ -293,15 +308,9 @@ app.post(`${prefix}/conversations/:id/messages`, async (c) => {
],
});
let parsed: any = null;
try {
parsed = JSON.parse(resp.output_text ?? "null");
} catch (_) {}
return withCors(jsonResponse({
ok: true,
openai_response_id: resp.id,
data: parsed,
raw: resp.output_text ?? null,
}));
} catch (err) {