Ingeniería LLM · Media · 15 min

Saca el JSON de la respuesta de un LLM

Pides JSON y el modelo contesta con una frase, un bloque ```json y a veces llaves sueltas. Extrae el primer objeto válido o devuelve null.

Escribe extractJson(reply) que devuelva el primer objeto JSON válido que haya en reply, o null si no hay ninguno.

Si hay un bloque de código con tres comillas invertidas (con o sin la etiqueta json) y su contenido es un objeto válido, úsalo. Si no, busca cada { y su } de cierre, teniendo en cuenta llaves anidadas y llaves dentro de cadenas como "a}", y prueba JSON.parse. Si falla, sigue con el siguiente {.

Solo cuentan los objetos: un array o un número no es una respuesta válida.

Un reto más usa LIVE: la salida real de tu propio Ollama si activas «Mi Ollama», o una muestra distinta si no. Ese reto mira la estructura, no las palabras exactas.

Retos 0/5

  • Lee el bloque ```json de REPLY
  • Encuentra el objeto dentro de texto sin bloque
  • Respeta las llaves dentro de cadenas
  • Devuelve null si no hay un objeto válido
  • Lee la respuesta real de tu modelo (Mi Ollama) o otra muestra

function extractJson(reply) {
  // 1. prueba primero con un bloque de código delimitado
  // 2. si no, recorre cada '{' y busca su '}' (las cadenas pueden contener llaves)
  // 3. JSON.parse del fragmento; devuelve el primer objeto plano, o null
  try {
    return JSON.parse(reply);
  } catch (e) {
    return null;
  }
}

console.log(extractJson(REPLY));
La consola aparece aquí (console.log).

Para profundizar: la referencia de Ollama (en inglés) →

¿Esto en producción, con tus datos? Hablemos 15 minutos →