Un lote de humo de 2 pedidos contra la Batch API confirmó el camino completo
—crear, consultar estado, recoger, normalizar— y dejó dos cosas a corregir:
- El costo estimado se redondeaba a 2 decimales, así que un trabajo chico
informaba US$ 0.0. Pasa a 4 decimales: en una prueba de humo importa saber
que gastaste algo, no que gastaste nada.
- cache_read_input_tokens quedó en 0. La causa es que el mínimo cacheable de
Opus 5 son 512 tokens y el prompt de sistema de la prueba tenía 86: la marca
cache_control no hace nada por debajo de ese umbral, y no avisa. Queda
documentado en el código y en la config, con cómo detectarlo.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Un patrón sin "/" inicial en .gitignore matchea cualquier directorio con ese
nombre en cualquier nivel. "data/" y "runs/" estaban excluyendo, además de lo
que se quería:
enlace/data/ los cargadores de datos (ByteStream, ShardStream)
configs/data/ corpus.yaml, smoke.yaml, distill.yaml
configs/runs/ todos los configs ejecutables
Es decir que el repo commiteado no contenía ni la capa de datos ni un solo
config con el que arrancar un entrenamiento. Como scripts/remote.sh sincroniza
por git push/pull, el servidor habría recibido un paquete que falla al
importar, y el síntoma habría aparecido recién allá.
Se anclan las cuatro rutas con "/" inicial y se documenta el porqué en el
propio archivo.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>