diff --git a/notebooks/conversations-openai.ipynb b/notebooks/conversations-openai.ipynb index e2628b6..92ce72f 100644 --- a/notebooks/conversations-openai.ipynb +++ b/notebooks/conversations-openai.ipynb @@ -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" ] }, { diff --git a/supabase/functions/create-chat-conversation/index.ts b/supabase/functions/create-chat-conversation/index.ts index 99cff86..cbb3572 100644 --- a/supabase/functions/create-chat-conversation/index.ts +++ b/supabase/functions/create-chat-conversation/index.ts @@ -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) {