Ir al contenido principal

Elige una versión de Claude Sonnet API para un flujo de edición

Compara controles, costes en tokens y límites de salida de Sonnet 4.5, 4.6, 5 y 5.5, y migra una solicitud de edición detectando respuestas incompletas.

Autor
Lydia
Publicado
Lectura
15 min de lectura
Actualizado
Dos adultos inventados comentan un guion en un cálido estudio de edición de radio, junto a un micrófono y una grabadora; ilustración editorial independiente.

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

ContratoSonnet 4.5Sonnet 4.6Sonnet 5Sonnet 5.5
Límite de entrada198 000 tokens1 000 0001 000 0001 000 000
Techo de salida64 00064 00064 000128 000
max_tokens por defecto4096409640964096
reasoning_effortNo disponiblelow, medium, high, maxlow, medium, highnone, low, medium, high, xhigh, max
Esfuerzo por defecto—mediummediummedium
temperature, top_p, top_kDisponiblesDisponiblesRechazadosRechazados
tool_choiceauto, none, required o una función con nombreigualigualsolo auto o none
response_formatNo se aceptaNo se aceptaNo se aceptaNo se acepta
Nivel de contenidoSuavizadoSin censuraFiltradoSin 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 tokens4.54.655.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:

ModeloTokens facturadosCoste
4.520 000 de entrada, 2 000 de salida$0.081
4.620 000 de entrada, 2 000 de salida$0.090
5unos 26 000 de entrada, 2 600 de salidaunos $0.074
5.5unos 26 000 de entrada, 2 600 de salidaunos $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.

  1. 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.
  2. Usa esfuerzo low para 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.
  3. 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.

  1. Quita el muestreo en 5 y 5.5. Elimina temperature, top_p y top_k de esas solicitudes. Los campos no admitidos devuelven 400 unsupported_parameter antes 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.
  2. Usa una herramienta automática en 5.5. Conserva la función submit_edit y pídela en el prompt de sistema, pero pon tool_choice en auto. Aquí no hay response_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.
  3. 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 esfuerzo low para una edición de línea y high para fuentes en conflicto. Sonnet 5 llega hasta high; no acepta xhigh ni max de 5.5.
  4. 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.
  5. 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.

python
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 con npx @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_get for anthropic/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 validate submit_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.

También en English · 日本語 · 한국어 · Deutsch · Français · Português (Brasil) · Русский · Italiano · Polski

Pruébalo tú mismo

Pagas solo lo que ejecutas: sin planes ni suscripciones.

Hecho con MiniMax H3 · ByteDance Seedance 2.0 Fast