Migrar desde Jev
Sonoe implementa la misma API HTTP que Jev de TypeSafe: el mismo endpoint, las mismas preguntas y las mismas respuestas. El código escrito para Jev pasa a Sonoe cambiando dos ajustes.
En corto
export TYPESAFE_BASE_URL="https://api.sonoeai.com"
export TYPESAFE_API_KEY="sk_sonoe_..." # una key de la consola de SonoeEso es todo. Los SDK oficiales de TypeSafe leen las dos variables, así que mandan las mismas solicitudes a Sonoe y reciben respuestas que entienden. Los probamos contra Sonoe tal como son:
| SDK | Versión probada | Qué comprobamos |
|---|---|---|
typesafe-sdk (Python) | 0.7.5 | system_one síncrono y asíncrono, nouls / choices / scores, request_id, models.list(), cuerpos comprimidos con zstd, errores 401 y 422 |
@typesafe-ai/sdk (JavaScript) | 0.7.0 | systemOne, withResponse(), models.list(), cuerpos comprimidos con zstd |
Si llamas a la API HTTP directamente, cambia el host de api.typesafe.ai a api.sonoeai.com y la key. La ruta (POST /v1/systemone), el cuerpo y las respuestas se quedan igual.
Nombres de modelo
No tienes que cambiar el campo model. Sonoe acepta los nombres de Jev como alias de su modelo actual:
| Mandas | Sonoe usa |
|---|---|
jev-latest (el predeterminado de los SDK) | sonoe-latest |
jev-preview | sonoe-preview |
cualquier jev-1.x.y, como jev-1.13.0 | sonoe-latest |
sonoe-latest, sonoe-preview, sonoe-1.1.0 | Sonoe 1.1 |
El campo model de la respuesta dice qué contestó de verdad: sonoe-1.1.0. Cualquier otro nombre devuelve 404. Cuando quieras, define TYPESAFE_DEFAULT_MODEL=sonoe-latest (o defaultModel en el cliente de JS) para que tus registros digan lo que significan.
Lo que se queda igual
POST /v1/systemoneconstate,modelyquestions;GET /v1/modelsdevuelve{ "models": [...] }.Authorization: Bearer <key>.- Preguntas Noul, Choice y Score, con
instructionsycriteriacomo texto, objetos o listas. - Respuestas:
noul;choice+probabilities+confidence;score+legend+probabilities+confidence. Vuelven bajo los ids de pregunta que elegiste. usage.input_tokensyusage.output_tokens.- Cuerpos comprimidos con
Content-Encoding: zstd(lo que mandan los SDK desde 1 KiB) ogzip. - Un encabezado
x-typesafe-request-iden cada respuesta. - Códigos de estado:
401por una key mala,422por una pregunta inválida (con la ruta del campo),429cuando pasas un límite, conRetry-Afterpara que los SDK esperen lo justo.
Lo que cambia
| Jev | Sonoe | |
|---|---|---|
| Imágenes y preguntas Box | Sí (en preview) | No: 422. Sonoe solo lee texto. |
| Contexto | 64k tokens por solicitud | Sonoe lee hasta 256 tokens por cada par (estado + pregunta, opción). Un estado más largo se corta al final. |
| Cuerpo de la solicitud | Hasta 32 MiB | Hasta 64 KiB (después de descomprimir), o 413. |
| Preguntas por solicitud | Sin límite fijo | Hasta 64. |
| Opciones de Choice | Hasta 255 | De 2 a 255. |
| Niveles de Score | Hasta 10 | De 2 a 10. |
usage.input_tokens | Tokens leídos | Tokens leídos: el estado y la pregunta se leen una vez por opción, así que muchas opciones o un estado largo cuestan más. |
usage.output_tokens | Pocos | Siempre 0. |
| Encabezado de contexto largo | TypeSafe-Danger-Zone-Long-Context | No existe; el encabezado se ignora. |
| Confianza | Derivada de las probabilidades | 1 − entropía normalizada de las probabilidades: 0 = no sabe, 1 = seguro. Comparable entre 2 y 200 opciones. |
| Mensajes de error | Inglés | Inglés por defecto; manda Accept-Language: es, pt o fr para recibirlos en ese idioma. |
| Cuerpo de los errores | JSON | error.type y error.message, más detail (al estilo FastAPI). Los dos SDK los leen. |
Detalles más pequeños:
- Se aceptan
instructionsausentes o ennull: un Noul usa entonces suscriteria; un Choice o un Score preguntan qué opción o nivel encaja mejor. criteria.trueycriteria.falsede un Noul se leen como parte de la pregunta («Yes means: …», «No means: …»).- Los campos desconocidos del nivel superior se ignoran.
Comprueba la precisión con tus datos
Sonoe 1.1 es un modelo multilingüe pequeño (un cross-encoder de 118M de parámetros basado en multilingual-e5-small). Es rápido y está calibrado, pero es sensible a la redacción de maneras en que un modelo más grande no lo es. Por ejemplo, con el estado «I was charged twice. Please help ASAP.»:
- «Is this about billing?» sacó una probabilidad baja, muy por debajo de 0.5.
- «Is this about a payment or a charge?» sacó cerca de 0.97.
Así que, antes de cambiar:
- Toma unos cientos de solicitudes reales de las que ya sepas la respuesta correcta.
- Mándalas a Sonoe (solo cambia la URL base) y compáralas con tus etiquetas y con Jev.
- Donde Sonoe se equivoque, prueba palabras más simples en
instructionsy dale a cada opción de Choice una descripción corta encriteriaen vez denull. - Mira la
confidencede los errores: muchas veces puedes mandar las respuestas de confianza baja a una persona o a otra regla en vez de confiar en ellas.
Lista de pasos
- Crea una cuenta y una key en sonoeai.com.
- Define
TYPESAFE_BASE_URL=https://api.sonoeai.comyTYPESAFE_API_KEY=sk_sonoe_…(o cambia el host y la key en tu cliente HTTP). - Quita las imágenes y las preguntas Box, o deja esas solicitudes en Jev.
- Mantén cada estado corto: Sonoe lee hasta 256 tokens por opción.
- Mantén los cuerpos por debajo de 64 KiB y las solicitudes por debajo de 64 preguntas.
- Compara la precisión con tus propios datos etiquetados.
- Revisa tu cuota y tu límite por minuto en Errores y límites.
- Si quieres, cambia el modelo predeterminado a
sonoe-latest.