Skip to content
DigitalNeuron
Herramientas y productos

Claude y OpenAI han lanzado sendas formas de obligar a un modelo a generar JSON válido: estas son sus diferencias

Ambos laboratorios ofrecen ahora un modo estricto que garantiza una salida válida conforme al esquema, en lugar de confiar en que el modelo le dé el formato correcto. Las reglas de configuración son específicas, y las directrices oficiales de OpenAI siguen limitando cuántas herramientas conviene proporcionar al modelo a la vez.

Por DigitalNeuron Desk4 min de lectura

Respuesta rápida

¿Cómo recomiendan Claude y OpenAI obtener una salida estructurada que no sea necesario validar ni volver a intentar?

Ambos ofrecen un modo estricto: Claude utiliza `strict: true` en la definición de una herramienta; OpenAI, Structured Outputs con `strict: true` en el formato de respuesta. OpenAI exige `additionalProperties: false` y que todos los campos figuren como obligatorios; los campos opcionales deben admitir valores nulos en lugar de omitirse. Ambas guías advierten además de que las descripciones imprecisas de las funciones y un exceso de herramientas disponibles reducen discretamente la precisión.

Claves

  • Structured Outputs de OpenAI y el uso estricto de herramientas de Claude garantizan que se respete el esquema; el antiguo estilo del «modo JSON» no lo hace y todavía puede devolver una salida mal formada.
  • El esquema estricto de OpenAI exige `additionalProperties: false` y que todos los campos figuren en `required`; no existe un campo opcional que pueda excluirse de esa lista: debe definirse como anulable.
  • Las propias directrices de OpenAI aconsejan mantener el número de funciones disponibles por debajo de 20 al comienzo de un turno, porque cada definición cuenta como tokens de entrada y un mayor número de opciones reduce la precisión.
  • Claude documenta una diferencia real de fiabilidad entre sus modelos: cuando falta un parámetro obligatorio en el prompt, Opus tiende más a preguntar; Sonnet tiende más a inferir un valor plausible.
  • Ambas plataformas facturan las definiciones de herramientas o funciones como tokens de entrada ordinarios en cada llamada, y Claude publica la sobrecarga exacta de tokens que esto añade en cada modelo.

Conseguir que un LLM llame a una función o devuelva JSON siempre ha funcionado la mayoría de las veces, un problema peor que si nunca funcionara: los fallos aparecen más adelante, en un analizador que se bloquea en la llamada número diez mil, no en las noventa y nueve que se probaron a mano. Tanto Claude como OpenAI publican ahora un modo que elimina el «la mayoría de las veces» de esa frase, y las reglas oficiales de configuración de cada uno son lo bastante específicas como para seguirlas directamente, sin tener que hacer conjeturas.

Modo estricto en ambas plataformas

La versión de Claude: se añade strict: true a la definición de una herramienta personalizada, y se garantiza que la llamada de Claude a la herramienta se ajustará al esquema. La versión de OpenAI, denominada Structured Outputs, se configura mediante text: { format: { type: "json_schema", strict: true, schema: … } }. OpenAI la presenta expresamente como la sucesora del antiguo «modo JSON»: este nunca garantizaba que se respetara el esquema; Structured Outputs sí.

Escriba la descripción de la función para un desconocido

El propio consejo de OpenAI es redactar los nombres de las funciones, las descripciones de los parámetros y las instrucciones de uso con la claridad suficiente para superar lo que denomina «la prueba del becario»: una persona recién incorporada debería poder utilizar correctamente la función basándose únicamente en la documentación, sin más contexto. Esto incluye indicar explícitamente en el prompt del sistema cuándo debe y cuándo no debe llamarse a una función, con ejemplos de casos límite; no basta con explicar qué hace la función cuando resulta evidente que es la opción adecuada.

Menos herramientas, mayor precisión

Resulta tentador proporcionar al modelo todas las herramientas disponibles y dejar que determine cuál corresponde. Las directrices de OpenAI se oponen directamente a ello: para mejorar la precisión, recomiendan mantener el número de funciones disponibles por debajo de unas 20 al comienzo de un turno y recordar que cada definición de función cuenta como tokens de entrada, se utilice o no durante ese turno. Si un conjunto de funciones se llama siempre en la misma secuencia, OpenAI aconseja combinarlas en una sola operación, en vez de obligar al modelo a encadenar correctamente varias llamadas en cada ocasión.

Los modelos de Claude no fallan de la misma manera

La documentación de Claude incluye una observación específica sobre la fiabilidad de cada modelo que conviene tener en cuenta al planificar, en lugar de descubrirla en producción: cuando falta un parámetro obligatorio en lo que el usuario ha escrito, Opus tiene muchas más probabilidades de detectar la carencia y formular una pregunta aclaratoria, mientras que Sonnet tiende más a inferir por su cuenta un valor plausible; por ejemplo, a adivinar una ubicación en vez de preguntar cuál. Este comportamiento no está garantizado en ninguno de los dos sentidos, pero refleja la tendencia de cada modelo y se agrava con prompts ambiguos y modelos menos capaces.

Forzar la llamada y ejecutar varias a la vez

Ambas plataformas permiten prescindir de la decisión predeterminada de Claude u OpenAI sobre si debe utilizarse alguna herramienta. Claude ofrece tool_choice para forzar una llamada, en lugar de mantener el valor predeterminado {"type": "auto"}. OpenAI admite llamadas a funciones en paralelo en GPT-5 y versiones posteriores para sus herramientas integradas, así como parallel_tool_calls: false si se desea específicamente un máximo de una llamada por turno; cabe destacar que las herramientas integradas no pueden agruparse para ejecutarse en paralelo, con independencia de ese ajuste.

Compruebe la fecha. La propia documentación de OpenAI recomienda gpt-5.6 para nuevos proyectos con Structured Outputs e indica que la búsqueda de herramientas solo está disponible en gpt-5.4 y versiones posteriores; la sobrecarga de tokens por el uso de herramientas de Claude se publica para cada generación vigente de modelos. Ambas cifras cambian a medida que aparecen nuevos modelos: consulte directamente las páginas enlazadas en lugar de considerar permanentes los datos anteriores.

Preguntas frecuentes

¿Es Structured Outputs lo mismo que el antiguo modo JSON?
No. OpenAI describe Structured Outputs como una evolución del modo JSON: este último no garantiza que se respete el esquema; Structured Outputs sí. La propia tabla comparativa de OpenAI recomienda el modo JSON heredado únicamente para modelos anteriores a gpt-4o-2024-08-06.
¿Qué exige realmente el modo estricto en el esquema?
En OpenAI: `additionalProperties: false` en todos los objetos y todas las propiedades incluidas en `required`; los campos opcionales se expresan mediante un tipo anulable, en lugar de eliminarlos de la lista de campos obligatorios. En Claude: añadir `strict: true` a la definición de la herramienta.
¿Disponer de más herramientas siempre ayuda al modelo?
No. Las directrices de OpenAI recomiendan expresamente mantenerse por debajo de unas 20 funciones disponibles por turno para preservar la precisión, y señalan que cada definición se factura como tokens de entrada, se utilice o no durante ese turno.
¿Puedo limitarme a obligar al modelo a llamar a una herramienta concreta?
Sí, en ambas plataformas. Claude lo permite mediante el parámetro `tool_choice`, documentado en el apartado sobre cómo forzar el uso de herramientas; el ajuste `parallel_tool_calls: false` de OpenAI también puede combinarse con la elección explícita de una herramienta para obtener exactamente una llamada.

Fuentes

  1. Tool use with ClaudeAnthropic
  2. Function callingOpenAI
  3. Structured model outputsOpenAI
  4. Introduction to Structured OutputsOpenAI
Etiquetasclaudechatgptfunction-callingstructured-outputapidocumentation

Lecturas relacionadas

Cinco hábitos de prompting que Anthropic y OpenAI incluyen en su propia documentación

Ambos laboratorios publican el mismo consejo principal: escribe la instrucción como una orden en lugar de una pregunta, da al modelo permiso explícito para decir que no sabe, pon el contexto antes de la pregunta, mantén una tarea por prompt y dile al modelo cuán proactivo debe ser. El hilo común es que cada uno de ellos elimina la ambigüedad; ninguno de ellos es una frase que pegas para desbloquear una calidad oculta.

5 min de lectura

Cuándo un Proyecto de Claude o un Proyecto de ChatGPT realmente justifica su coste, según las páginas de ayuda de cada empresa

Ambas empresas presentan los Proyectos de la misma manera: como espacios de trabajo que reúnen su propio historial de chats, archivos de referencia subidos e instrucciones permanentes, para evitar tener que explicar de nuevo el contexto en cada sesión. Claude limita las cuentas gratuitas a 5 proyectos y amplía hasta 10 veces la capacidad de conocimiento en los planes de pago; ChatGPT restringe la memoria de un proyecto exclusivamente a los chats incluidos en él, no a toda la cuenta.

3 min de lectura

Anthropic lanza Claude Science, un entorno de trabajo para investigadores

Anthropic presentó Claude Science, un entorno de trabajo para la investigación que reúne herramientas científicas, agentes especializados, bases de datos y recursos informáticos. La versión beta está disponible en macOS y Linux para usuarios de Claude Pro, Max, Team y Enterprise, con funciones para realizar análisis reproducibles, revisar bibliografía, elaborar figuras y manuscritos y gestionar tareas informáticas.

3 min de lectura