Ir al contenido
learn

2. Un experimento reproducible y de coste acotado

El experimento parte de una pregunta falsable:

¿Puede una recomendación probabilística tipada entrar en una gate al estilo Gaia sin permitir que el proveedor cree autoridad ni coste ilimitado?

La hipótesis es estrecha: la misma política determinista debe aceptar una respuesta cerrada válida, rechazar una opción inventada, rechazar probabilidades mal formadas y mandar a revisión humana cuando falte autoridad explícita. Una llamada en vivo solo mediría después el comportamiento del modelo.

Ventana de terminal
cd code/typesafe-ai-system-one
python typesafe_lab.py mock
python -m unittest -v

Medido localmente el 20 de septiembre de 2026 con Python 3.14.2:

{
"mode": "mock",
"model": "mock-jev-course/1",
"decision": "human_review:no_explicit_authority",
"request_sha256": "67c1ee4bcd36b497f60872c0715d435b364c3b7743ad06f9be543071af044a1b"
}
Ran 14 tests in 0.078s
OK

Las catorce pruebas solo demuestran propiedades locales: la fixture valida, la ausencia de autoridad impide el despacho, un Choice desconocido se rechaza, las probabilidades y el Score son coherentes, el modelo queda fijado y la evidencia no se sobrescribe. No demuestran que TypeSafe produjera la fixture, que los umbrales estén calibrados ni que la opción conocida sea correcta.

No pegues la clave en un argumento. Define TYPESAFE_API_KEY con el mecanismo de secretos de tu sistema y ejecuta:

Ventana de terminal
python typesafe_lab.py live --out live-result.json

El script:

  • se niega antes de la red si falta la variable;
  • construye una sola solicitud para jev-1.13.0;
  • cuenta bytes UTF-8 de solicitud como proxy local de tamaño, no como estimación de tokens facturados;
  • se niega por encima de 2.500 bytes o de su proxy de coste por bytes de 0,000105 $ con la tarifa consultada el 22 de septiembre de 2026;
  • envía exactamente una solicitud con timeout de 20 segundos;
  • rechaza redirecciones para mantener el bearer token ligado al origen API configurado;
  • no reintenta automáticamente tras 429, 529, timeout o error de red;
  • nunca imprime ni escribe el encabezado de autorización;
  • valida la respuesta y exige el modelo fijado exacto antes de enrutar;
  • exige autoridad verificada por código local de confianza, nunca por la respuesta Noul del modelo;
  • registra fecha, modelo concreto, uso, digest, proxy previo y decisión, pero no la respuesta completa del proveedor.

El conteo de bytes limita el tamaño local de la solicitud. No es un límite demostrado de tokens o dólares facturados: el encuadre del servidor y los controles de gasto de la cuenta son distintos. El coste observado debe usar usage.input_tokens y el precio oficial vigente. Una llamada de pago requiere autorización separada.

Detente si falta la clave o aparece en una salida, se supera el límite local de bytes/proxy, el contrato es inválido, llega 401/422/429/529 o un estado inesperado, cambia el modelo concreto, la decisión podría autorizar/fusionar/desplegar/publicar/eliminar, o la entrada contiene secretos o datos no aprobados. Una sola llamada no garantiza un techo en dólares.

Campo Evidencia Estado
identidad SHA-256 de la solicitud solo mock
modelo model concreto vivo no probado
uso y coste tokens × precio actual vivo no probado
latencia elapsed_ms vivo no probado
forma validador correcto mock correcto; vivo no probado
decisión valor exacto mock rechazó el despacho
calidad resultado contra etiqueta previa no probado

Una llamada correcta es conectividad, no evaluación. Después hace falta un corpus versionado con casos claros, fronterizos y contraejemplos, puntuado antes de mover umbrales.

  1. ¿Por qué fijar jev-1.13.0 en vez de jev-latest?
Solución

Porque un alias puede cambiar sin modificar el código. Umbrales y mediciones pertenecen al modelo concreto.

  1. El SDK puede reintentar, pero esta sonda no. ¿Es un error?
Solución

No. El presupuesto es exactamente una llamada. Un reintento ocultaría el coste y el número de observaciones. En producción, intentos y coste máximo deben ser explícitos.