Una integración de edición depende de más que el nombre de un modelo: puede apoyarse en un ajuste de muestreo, en una llamada a función forzada o en un analizador de respuestas. Una actualización de versión puede cambiar las tres cosas antes de cambiar la calidad de la edición.
Elige Sonnet 5 para una integración nueva, Sonnet 5.5 si necesitas respuestas de más de 64 000 tokens, ficción sin censura o el rango de esfuerzo más amplio, y Sonnet 4.6 si quieres controles temperature, top_p o top_k. Sonnet 5 también admite llamadas a herramientas forzadas; 5.5 no. Cambiar solo el ID del modelo rompe la solicitud: Sonnet 5 y 5.5 devuelven un error 400 con los campos de muestreo, y 5.5 además rechaza la elección forzada de herramienta. Quita esos campos según la versión antes de comparar respuestas.
La tabla describe los contratos alojados de SpicyAPI. La guía de migración de Sonnet 5.5 de Anthropic explica los cambios de versión nativos; sus nombres de campos y valores por defecto no son intercambiables con esta interfaz. Los precios de abajo son USD por millón de tokens.
Qué acepta cada versión
| Contrato | Sonnet 4.5 | Sonnet 4.6 | Sonnet 5 | Sonnet 5.5 |
|---|---|---|---|---|
| Límite de entrada | 198 000 tokens | 1 000 000 | 1 000 000 | 1 000 000 |
| Techo de salida | 64 000 | 64 000 | 64 000 | 128 000 |
max_tokens por defecto | 4096 | 4096 | 4096 | 4096 |
reasoning_effort | No disponible | low, medium, high, max | low, medium, high | none, low, medium, high, xhigh, max |
| Esfuerzo por defecto | — | medium | medium | medium |
temperature, top_p, top_k | Disponibles | Disponibles | Rechazados | Rechazados |
tool_choice | auto, none, required o una función con nombre | igual | igual | solo auto o none |
response_format | No se acepta | No se acepta | No se acepta | No se acepta |
| Nivel de contenido | Suavizado | Sin censura | Filtrado | Sin censura |
Los IDs son anthropic/claude-sonnet-4.5/chat, anthropic/claude-sonnet-5/chat, anthropic/claude-sonnet-5.5/chat y anthropic/claude-sonnet-4.6/chat; las páginas son 4.5, 5, 5.5 y 4.6. Las cuatro usan la misma forma de solicitud de /v1/chat/completions y también aceptan stop, tools y parallel_tool_calls.
Sonnet 4.6 es una opción intermedia de migración. Ya tiene la ventana de 1M y reasoning_effort, pero sigue aceptando temperature. Pasar de 4.5 a 4.6 mantiene la forma de la solicitud, sube un 11 % la tarifa de entrada, eleva el nivel de Suavizado a Sin censura y usa por defecto un esfuerzo de razonamiento medio; el paso de 4.6 a 5 es el que elimina el muestreo.
El nivel de contenido importa para la ficción y el rol. Sonnet 5 es Filtrado; Sonnet 4.5 y 4.6 suavizaron o rechazaron a menudo solicitudes de ficción adulta de mayor intensidad en nuestras pruebas. Sonnet 5.5 entregó esas escenas probadas sin suavizarlas ni rechazarlas, por lo que es la mejor opción aquí para trabajos de ficción adulta. Una respuesta suavizada también puede facturarse. SpicyAPI no añade ningún filtro de contenido a nivel de plataforma; indica la escena ficticia y las restricciones de edición en el mensaje de sistema.
Cuál elegir
- Integración de texto nueva, sin contenido adulto: Sonnet 5. Tiene las tarifas más bajas, una ventana de 1M y tres niveles de esfuerzo.
- Entregables largos o ficción orientada a adultos: Sonnet 5.5. Es el único que puede escribir más de 64 000 tokens en una respuesta, el único con
none(sin razonamiento) y es Sin censura. - Controles de muestreo: quédate en una integración fijada a 4.5 o pasa a 4.6 por la ventana de 1M. Llamadas a función forzadas sin muestreo: Sonnet 5 las acepta a tarifas más bajas; úsalo en lugar de 5.5 cuando la llamada deba ser forzada.
- Un manuscrito completo de 300 000 tokens en una sola llamada: es una cuestión de contexto y coste, tratada en la guía de manuscritos largos con Sonnet 4.6.
Precio: ten en cuenta el tokenizador y la salida facturada
| USD por millón de tokens | 4.5 | 4.6 | 5 | 5.5 |
|---|---|---|---|---|
| Entrada | $2.70 | $3 | $1.90 | $2 |
| Entrada en caché | $0.27 | $0.30 | $0.19 | $0.20 |
| Salida | $13.50 | $15 | $9.50 | $10 |
| Escrituras en caché | $3.30 | $3.75 | $2.375 | $2.50 |
Sonnet 5 y 5.5 usan un tokenizador más nuevo. La guía de migración de Anthropic dice que el mismo texto produce alrededor de un 30 % más de tokens que en 4.x, según el contenido, así que compara el coste por tarea, no por token. Para un trabajo ilustrativo de 20 000 tokens de entrada y 2 000 de salida en 4.5, supón un aumento del 30 % en ambos recuentos en 5 y 5.5:
| Modelo | Tokens facturados | Coste |
|---|---|---|
| 4.5 | 20 000 de entrada, 2 000 de salida | $0.081 |
| 4.6 | 20 000 de entrada, 2 000 de salida | $0.090 |
| 5 | unos 26 000 de entrada, 2 600 de salida | unos $0.074 |
| 5.5 | unos 26 000 de entrada, 2 600 de salida | unos $0.078 |
En ese escenario, Sonnet 5 queda un 9 % por debajo de 4.5; el ahorro no es fijo para todos los documentos. Los recuentos de salida deben incluir el razonamiento facturado. Poner el esfuerzo en low puede reducir el razonamiento, pero no lo desactiva; aquí solo 5.5 expone none. Lee el uso de tu tarea real antes de tratar la estimación como presupuesto.
Las tarifas de Sonnet 5.5 son un 5.3 % superiores a las de Sonnet 5, y esa es la diferencia con recuentos facturados y categorías de caché idénticos. Vuelve a contar los prompts largos tras un cambio de tokenizador: un aumento hipotético del 30 % convertiría un prompt de 190 000 tokens en uno de 247 000, aún por debajo del techo de entrada de 1M, pero con otra factura.
Prueba la edición en Playground
Usa esta pequeña edición de verificación de datos antes de migrar un flujo mayor:
Source A: the gallery reopened to staff in April. Source B: the public launch event was in June. Draft: "The gallery reopened to the public in April." Preserve the distinction between staff access and the public event. Return the corrected sentence and one sentence explaining the change.
- Abre la página del modelo Sonnet 5.5 enlazada arriba y elige Playground. Pon las dos fuentes y el borrador en el mensaje de usuario, con "Edit from the supplied sources only" como instrucción de sistema.
- Usa esfuerzo
lowpara esta edición de línea. Ejecútala después de revisar el coste y comprueba que la respuesta mantiene abril para el acceso del personal y junio para el evento público, sin inventar una fecha exacta. - Prueba el mismo texto en Sonnet 5 para un flujo de edición más barato y sin contenido adulto. Deja el texto fuente sin cambios para poder juzgar la edición en sí.
Elige una versión para la edición que realmente entregas
Para una limpieza de un capítulo de 700 palabras con un paquete de fuentes de 20 000 tokens, ninguna de estas versiones necesita su contexto o su margen de salida máximo. Lo útil es decidir si los controles de la solicitud y la idoneidad del contenido encajan. Sonnet 5 es el punto de partida de menor precio para una edición corriente. Un editor de ficción adulta también debería considerar su nivel Filtrado antes de convertirlo en el predeterminado de todo el manuscrito. Por eso, una sinopsis no gráfica y la revisión de una escena madura de la misma aplicación pueden requerir modelos distintos.
Si quieres tres formulaciones alternativas en 4.5 o 4.6, sus controles de muestreo ofrecen una forma aceptada de variar la generación. Eso no significa que subir la temperatura repare una lógica de historia defectuosa. Un párrafo que da a un personaje información que aún no conoce necesita la regla de conocimiento y el pasaje fuente; no necesita más aleatoriedad. En 5 o 5.5, no inventes un campo de muestreo equivalente. Pide tres alternativas con enfoques distintos y explícitos: diálogo más corto, menos exposición o una revelación posterior.
Para una edición asistida por herramientas, imagina que el borrador nombra al empleador de un personaje, pero la base de datos autorizada de la serie tiene el registro actual. En 4.5, 4.6 o 5, la elección de herramienta disponible puede exigir una consulta. En 5.5, auto puede producir una respuesta sin la consulta. Si tu aplicación debe verificar al empleador, haz la lectura antes de pedir la edición o no aceptes una respuesta sin el resultado de consulta requerido. Una frase en el prompt no da a auto la misma garantía que una llamada forzada. Los ejemplos nativos de thinking o output_config de la guía de migración de Anthropic no deben pegarse sin cambios en esta solicitud.
El resultado significativo del ejemplo es una frase que conserve tanto el acceso del personal en abril como el lanzamiento público en junio. "The gallery reopened in June" es demasiado general si el personal ya podía entrar en abril. "The gallery held its public launch in June, after reopening to staff in April" es una corrección humana aceptable. Una versión nueva que produzca una redacción más bonita pero pierda esta distinción no ha mejorado el trabajo de edición.
Migra la solicitud
Una integración con 4.5 puede usar temperature: 0.2, top_p: 0.9 y una función submit_edit forzada. Al pasar a 5 se rechazan los campos de muestreo; al pasar a 5.5 se rechazan tanto el muestreo como la elección forzada de herramienta.
- Quita el muestreo en 5 y 5.5. Elimina
temperature,top_pytop_kde esas solicitudes. Los campos no admitidos devuelven400 unsupported_parameterantes de que se cree o se cobre una tarea; mantén una lista de permitidos por modelo en lugar de enviar un único objeto de parámetros compartido. - Usa una herramienta automática en 5.5. Conserva la función
submit_edity pídela en el prompt de sistema, pero pontool_choiceenauto. Aquí no hayresponse_format, y 5.5 puede omitir la función, así que valida los argumentos devueltos. Si tu flujo requiere una llamada forzada, Sonnet 5 la admite a tarifas más bajas. - Deja espacio para la respuesta. El razonamiento consume parte de
max_tokens: un tope de 1 024 tokens puede agotarse antes de que aparezca texto visible. Usa esfuerzolowpara una edición de línea yhighpara fuentes en conflicto. Sonnet 5 llega hastahigh; no aceptaxhighnimaxde 5.5. - Usa streaming en las ediciones largas. El ejemplo corto de abajo usa una respuesta JSON normal. Las llamadas grandes pueden superar el límite de unos 100 segundos del borde de red; usa streaming para ellas y reconstruye el texto y los argumentos de herramienta por separado. La guía de texto y streaming cubre los eventos de finalización y el uso.
- Termina la conversación con un mensaje de usuario. Al migrar desde 4.5, mueve a la instrucción de sistema el arranque o la pista de formato que quieras, en lugar de terminar con un prefill del asistente.
Los nombres de esfuerzo también cambian de significado. Anthropic recalibró los niveles de 5.5, así que high no es equivalente entre versiones. SpicyAPI pone medium por defecto tanto en 5 como en 5.5, mientras que la API nativa de 5.5 de Anthropic usa high. Para respuestas cortas y limpias, prefiere low a none: con none, 5.5 puede resolver la pregunta en texto visible. none sigue siendo útil para turnos rápidos en personaje.
Ejecuta y valida la edición
Guarda esto como sonnet_edit.py, define SPICY_API_KEY desde API Keys y ejecuta python3 sonnet_edit.py. Usa la biblioteca estándar de Python. Aquí se elige Sonnet 5.5 para demostrar la migración a herramienta automática; si solo cambias el modelo a Sonnet 5, también acepta estos campos. Es una llamada de texto de pago, no una tarea de generación de medios. Las recetas de chat cubren integraciones multiturno y con streaming.
import json
import os
import sys
import uuid
from urllib.error import HTTPError
from urllib.request import Request, urlopen
def read_reply(resp: dict, *, require_edit_tool: bool = False) -> dict:
if resp.get("error"):
raise RuntimeError("API error")
choices = resp.get("choices") or []
if not choices:
raise RuntimeError("no choices in response")
choice = choices[0]
finish = choice.get("finish_reason")
if finish not in {"stop", "tool_calls"}:
raise RuntimeError(f"incomplete or rejected reply: {finish}")
msg = choice.get("message") or {}
calls = msg.get("tool_calls") or []
if calls:
if len(calls) != 1:
raise RuntimeError("expected one submit_edit call")
call = calls[0]
if call.get("type") != "function" or not isinstance(call.get("id"), str) or not call["id"]:
raise RuntimeError("missing function type or call ID")
fn = call.get("function") or {}
if fn.get("name") != "submit_edit":
raise RuntimeError("unexpected function")
args = json.loads(fn.get("arguments") or "")
if not isinstance(args, dict) or any(
not isinstance(args.get(key), str) or not args[key].strip()
for key in ("sentence", "reason")
):
raise RuntimeError("sentence and reason must be nonempty strings")
return {"kind": "tool", "call": calls[0], "edit": args}
if require_edit_tool:
raise RuntimeError("model skipped submit_edit")
text = msg.get("content")
if finish != "stop" or not isinstance(text, str) or not text.strip():
raise RuntimeError("empty or unfinished text")
return {"kind": "text", "text": text}
def main() -> None:
body = {
"model": "anthropic/claude-sonnet-5.5/chat",
"reasoning_effort": "low",
"max_tokens": 8192,
"messages": [
{"role": "system", "content": "Edit from the supplied sources only. Reply by calling submit_edit."},
{"role": "user", "content": 'Source A: the gallery reopened to staff in April. Source B: the public launch event was in June. Draft: "The gallery reopened to the public in April." Keep the staff/public distinction.'},
],
"tools": [{"type": "function", "function": {
"name": "submit_edit",
"description": "Return the corrected sentence and the reason.",
"parameters": {
"type": "object",
"properties": {"sentence": {"type": "string"}, "reason": {"type": "string"}},
"required": ["sentence", "reason"],
},
}}],
"tool_choice": "auto",
}
request = Request(
"https://api.spicyapi.ai/v1/chat/completions",
data=json.dumps(body).encode(),
headers={
"Authorization": f"Bearer {os.environ['SPICY_API_KEY']}",
"Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4()),
"User-Agent": "sonnet-edit-example/1.0",
},
)
try:
with urlopen(request, timeout=80) as response:
task_id = response.headers.get("X-Spicy-Task-Id")
if task_id:
print(f"Task ID: {task_id}", file=sys.stderr)
result = read_reply(json.load(response), require_edit_tool=True)
except HTTPError as error:
task_id = error.headers.get("X-Spicy-Task-Id")
print(f"HTTP {error.code}; task ID: {task_id or 'not returned'}", file=sys.stderr)
raise
print(json.dumps(result["edit"], indent=2))
if __name__ == "__main__":
main()Una edición válida conserva abril para el acceso del personal y junio para el evento público. El analizador rechaza una respuesta vacía, un truncamiento y una llamada a función omitida o mal formada; aun así, los argumentos válidos necesitan esa comprobación de datos. Un informe de migración de Sonnet describe un resultado de respaldo vacío que llegó a los usuarios como si fuera un éxito.
Si finish_reason es length, usa más espacio de salida o una tarea más pequeña en una nueva llamada. Conserva cualquier resultado parcial y el ID de tarea antes de volver a gastar. En un flujo de herramientas de varios turnos, devuelve el resultado de la herramienta con su tool_call_id correspondiente antes del siguiente turno. Incluye en tus comprobaciones de migración una contradicción, un dato sin cambios, una respuesta "unknown" y un resultado de herramienta "no match"; en extracciones más largas, comprueba que estén presentes las secciones requeridas además de que el JSON sea válido.
Deja que un Agent prepare la integración
Usa un Agent cuando quieras que adapte un editor existente en lugar de pegar tú mismo una solicitud. Mantén las mismas fuentes de la galería y el mismo borrador en su encargo.
- CLI: tras definir
SPICY_API_KEY, deja que inspeccione el contrato elegido connpx @spicyapi/cli models get anthropic/claude-sonnet-5.5/chat --json. La guía de CLI documenta ese comando de solo lectura. - MCP: con el servidor MCP de SpicyAPI conectado, pregunta: "Use
spicyapi_model_getforanthropic/claude-sonnet-5.5/chat, then adapt my gallery edit to its accepted effort and tool-choice settings. Prepare the request without running it." - Skill: instala el Skill oficial de SpicyAPI con
npx skills add spicyapi-ai/spicy-skill, inicia una sesión nueva del Agent y pregunta: "Use the SpicyAPI Skill to migrate my gallery editor from Sonnet 4.5 to 5.5. Keep the source facts and validatesubmit_edit; show me the request before calling it."
CLI y MCP aportan el descubrimiento de modelos para este flujo de texto; la edición en sí usa /v1/chat/completions mediante el programa de arriba o el cliente HTTP de tu Agent. Define un límite de gasto en la clave de API antes de delegar ediciones repetidas.
Preguntas frecuentes
¿Es Sonnet 5.5 más barato que Sonnet 5?
No. Cuesta alrededor de un 5.3 % más por token ($2 y $10 frente a $1.90 y $9.50). Una tarea solo cuesta tanto más cuando los recuentos facturados y las categorías de caché son idénticos. Ese extra compra el techo de respuesta de 128 000 tokens, los esfuerzos none y xhigh y el nivel Sin censura.
¿Es Sonnet 5.5 mejor que Opus 5.5?
No necesariamente. Opus 5.5 cuesta $3.60 de entrada y $18 de salida en SpicyAPI, alrededor de 1.8 veces Sonnet 5.5, con la misma ventana de 1M y el mismo techo de salida de 128 000. Empieza con Sonnet 5.5 y sube solo si tus pasajes más difíciles salen mal; la guía «Claude Opus 5.5 para rol NSFW» cubre esa ruta.
¿Puedo mantener temperature en Sonnet 5.5?
No. Usa el esfuerzo de razonamiento para la profundidad y pon las reglas de tono en el prompt de sistema. Si necesitas controles de muestreo, las opciones son 4.5 y 4.6.









