feat: add definitions for perishables and origin schemas in new notebook
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": 1,
|
||||
"id": "89b3fffb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
@@ -636,7 +636,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 89,
|
||||
"execution_count": 100,
|
||||
"id": "c68073e8",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -646,7 +646,20 @@
|
||||
"text": [
|
||||
"{\n",
|
||||
" \"source\": \"openai\",\n",
|
||||
" \"items\": []\n",
|
||||
" \"items\": [\n",
|
||||
" {\n",
|
||||
" \"role\": \"assistant\",\n",
|
||||
" \"content\": {\n",
|
||||
" \"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.\",\n",
|
||||
" \"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.\",\n",
|
||||
" \"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",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"role\": \"user\",\n",
|
||||
" \"content\": \"Dale mejor redacción al perfil de ingreso y sugiere tema de investigación.\"\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
"}\n"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"id": "902bff53",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import { load } from \"jsr:@std/dotenv\";\n",
|
||||
"import OpenAI from \"jsr:@openai/openai\";\n",
|
||||
"\n",
|
||||
"const env = await load({\n",
|
||||
" export: true,\n",
|
||||
"});\n",
|
||||
"\n",
|
||||
"const openai = new OpenAI();"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "68f89168",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"const perishables = {\n",
|
||||
" expiryDate: { type: \"string\", format: \"date\" },\n",
|
||||
" batchNumber: {\n",
|
||||
" type: \"string\",\n",
|
||||
" maxLength: 20,\n",
|
||||
" description: \"Puede ser inventado\",\n",
|
||||
" },\n",
|
||||
" storageTempC: {\n",
|
||||
" type: \"number\",\n",
|
||||
" minimum: -30,\n",
|
||||
" maximum: 10,\n",
|
||||
" description: \"Temperatura de almacenamiento en grados Celsius\",\n",
|
||||
" },\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"const origen = {\n",
|
||||
" country: { type: \"string\", maxLength: 50 },\n",
|
||||
" city: { type: \"string\", maxLength: 50 },\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"// Transformar las definiciones: poner en properties, agregar required, y additionalProperties: false\n",
|
||||
"\n",
|
||||
"const perishablesWithMetadata = {\n",
|
||||
" ...perishables,\n",
|
||||
" type: \"object\",\n",
|
||||
" required: Object.keys(perishables),\n",
|
||||
" additionalProperties: false,\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"const origenWithMetadata = {\n",
|
||||
" ...origen,\n",
|
||||
" type: \"object\",\n",
|
||||
" required: Object.keys(origen),\n",
|
||||
" additionalProperties: false,\n",
|
||||
"};\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"const combinedSchema = {\n",
|
||||
" type: \"object\",\n",
|
||||
" $defs: {\n",
|
||||
" perishables: perishablesWithMetadata,\n",
|
||||
" origen: origenWithMetadata,\n",
|
||||
" },\n",
|
||||
" properties: {\n",
|
||||
" nombre: { type: \"string\", maxLength: 100 },\n",
|
||||
" fabricante: { type: \"string\", maxLength: 100 },\n",
|
||||
"\n",
|
||||
" // Agregar campo del preset\n",
|
||||
" perishables: { $ref: \"#/$defs/perishables\" },\n",
|
||||
" origen: { $ref: \"#/$defs/origen\" },\n",
|
||||
" },\n",
|
||||
" required: [\"nombre\", \"fabricante\", \"perishables\", \"origen\"],\n",
|
||||
" additionalProperties: false,\n",
|
||||
"};\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 26,
|
||||
"id": "1403c789",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"const combinedSchema = {\n",
|
||||
" type: \"object\",\n",
|
||||
" $defs: {\n",
|
||||
" perishables: {\n",
|
||||
" type: \"object\",\n",
|
||||
" properties: {\n",
|
||||
" expiryDate: { type: \"string\", format: \"date\" },\n",
|
||||
" batchNumber: {\n",
|
||||
" type: \"string\",\n",
|
||||
" maxLength: 20,\n",
|
||||
" description: \"Puede ser inventado\",\n",
|
||||
" },\n",
|
||||
" storageTempC: {\n",
|
||||
" type: \"number\",\n",
|
||||
" minimum: -30,\n",
|
||||
" maximum: 10,\n",
|
||||
" description:\n",
|
||||
" \"Temperatura de almacenamiento en grados Celsius\",\n",
|
||||
" },\n",
|
||||
" },\n",
|
||||
" required: [\"expiryDate\", \"batchNumber\", \"storageTempC\"],\n",
|
||||
" additionalProperties: false,\n",
|
||||
" },\n",
|
||||
" origen: {\n",
|
||||
" type: \"object\",\n",
|
||||
" properties: {\n",
|
||||
" country: { type: \"string\", maxLength: 50 },\n",
|
||||
" city: { type: \"string\", maxLength: 50 },\n",
|
||||
" },\n",
|
||||
" required: [\"country\", \"city\"],\n",
|
||||
" additionalProperties: false,\n",
|
||||
" },\n",
|
||||
" },\n",
|
||||
" properties: {\n",
|
||||
" nombre: { type: \"string\", maxLength: 100 },\n",
|
||||
" fabricante: { type: \"string\", maxLength: 100 },\n",
|
||||
"\n",
|
||||
" // Agregar campo del preset\n",
|
||||
" perishables: { $ref: \"#/$defs/perishables\" },\n",
|
||||
" origen: { $ref: \"#/$defs/origen\" },\n",
|
||||
"\n",
|
||||
" perecedero: { type: \"null\", \"x-column\": \"perishable\", const: null },\n",
|
||||
" },\n",
|
||||
" required: [\"nombre\", \"fabricante\", \"perishables\", \"origen\", \"perecedero\"],\n",
|
||||
" additionalProperties: false,\n",
|
||||
"};\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 27,
|
||||
"id": "1fbda124",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"const result = await openai.responses.create({\n",
|
||||
" model: \"gpt-5-nano\",\n",
|
||||
" input:\n",
|
||||
" \"Genera un producto con el siguiente formato JSON, sin texto adicional:\",\n",
|
||||
" text: {\n",
|
||||
" format: {\n",
|
||||
" type: \"json_schema\",\n",
|
||||
" name: \"producto\",\n",
|
||||
" schema: combinedSchema,\n",
|
||||
" },\n",
|
||||
" },\n",
|
||||
"});\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 28,
|
||||
"id": "85e7967a",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{\n",
|
||||
" nombre: \u001b[32m\"Galletas de avena premium\"\u001b[39m,\n",
|
||||
" fabricante: \u001b[32m\"Industrias Gourmet S.L.\"\u001b[39m,\n",
|
||||
" perishables: {\n",
|
||||
" expiryDate: \u001b[32m\"2026-12-31\"\u001b[39m,\n",
|
||||
" batchNumber: \u001b[32m\"BATCH-00123\"\u001b[39m,\n",
|
||||
" storageTempC: \u001b[33m4\u001b[39m\n",
|
||||
" },\n",
|
||||
" origen: { country: \u001b[32m\"España\"\u001b[39m, city: \u001b[32m\"Valencia\"\u001b[39m },\n",
|
||||
" perecedero: \u001b[1mnull\u001b[22m\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
"execution_count": 28,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"JSON.parse(result.output_text)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "dae842ad",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Deno",
|
||||
"language": "typescript",
|
||||
"name": "deno"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "typescript",
|
||||
"file_extension": ".ts",
|
||||
"mimetype": "text/x.typescript",
|
||||
"name": "typescript",
|
||||
"nbconvert_exporter": "script",
|
||||
"pygments_lexer": "typescript",
|
||||
"version": "5.9.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in New Issue
Block a user