Une intégration d’édition porte plus qu’un nom de modèle : elle peut dépendre d’un réglage d’échantillonnage, d’un appel de fonction forcé ou d’un analyseur de réponses. Un changement de version peut modifier ces trois éléments avant même de changer la qualité de l’édition.
Choisissez Sonnet 5 pour un nouveau projet, Sonnet 5.5 si vous avez besoin de réponses de plus de 64 000 tokens, de fiction sans censure ou de la plus large plage d’effort, et Sonnet 4.6 pour les contrôles temperature, top_p ou top_k. Sonnet 5 prend aussi en charge les appels d’outil forcés ; 5.5 non. Changer seulement l’ID du modèle casse une requête : Sonnet 5 et 5.5 renvoient une erreur 400 pour les champs d’échantillonnage, et 5.5 rejette aussi le choix d’outil forcé. Retirez ces champs version par version avant de comparer les réponses.
Le tableau décrit les contrats hébergés de SpicyAPI. Le guide de migration de Sonnet 5.5 d’Anthropic explique les changements de version natifs ; ses noms de champs et ses valeurs par défaut ne sont pas interchangeables avec cette interface. Les prix ci-dessous sont en USD par million de tokens.
Ce que chaque version accepte
| Contrat | Sonnet 4.5 | Sonnet 4.6 | Sonnet 5 | Sonnet 5.5 |
|---|---|---|---|---|
| Limite d’entrée | 198 000 tokens | 1 000 000 | 1 000 000 | 1 000 000 |
| Plafond de sortie | 64 000 | 64 000 | 64 000 | 128 000 |
max_tokens par défaut | 4096 | 4096 | 4096 | 4096 |
reasoning_effort | Non exposé | low, medium, high, max | low, medium, high | none, low, medium, high, xhigh, max |
| Effort par défaut | — | medium | medium | medium |
temperature, top_p, top_k | Exposés | Exposés | Rejetés | Rejetés |
tool_choice | auto, none, required ou une fonction nommée | identique | identique | auto ou none uniquement |
response_format | Non accepté | Non accepté | Non accepté | Non accepté |
| Niveau de contenu | Atténué | Sans censure | Filtré | Sans censure |
Les IDs sont anthropic/claude-sonnet-4.5/chat, anthropic/claude-sonnet-5/chat, anthropic/claude-sonnet-5.5/chat et anthropic/claude-sonnet-4.6/chat ; les pages sont 4.5, 5, 5.5 et 4.6. Les quatre utilisent la même forme de requête /v1/chat/completions et acceptent aussi stop, tools et parallel_tool_calls.
Sonnet 4.6 est une option de migration intermédiaire. Il dispose déjà de la fenêtre de 1M et de reasoning_effort, mais accepte encore temperature. Passer de 4.5 à 4.6 conserve la forme de la requête, augmente le tarif d’entrée de 11 %, fait passer le niveau d’Atténué à Sans censure et applique par défaut un effort de raisonnement moyen ; c’est le passage de 4.6 à 5 qui supprime l’échantillonnage.
Le niveau de contenu compte pour la fiction et le jeu de rôle. Sonnet 5 est Filtré ; dans nos tests, Sonnet 4.5 et 4.6 ont souvent atténué ou refusé des demandes de fiction pour adultes de plus forte intensité. Sonnet 5.5 a livré ces scènes testées sans atténuation ni refus, ce qui en fait ici le meilleur choix pour la fiction pour adultes. Une réponse atténuée peut quand même être facturée. SpicyAPI n’ajoute aucun filtre de contenu au niveau de la plateforme ; précisez la scène fictive et les contraintes d’édition dans le message système.
Lequel choisir
- Nouvelle intégration texte, sans contenu pour adultes : Sonnet 5. Il a les tarifs les plus bas, une fenêtre de 1M et trois niveaux d’effort.
- Livrables longs ou fiction orientée adultes : Sonnet 5.5. C’est le seul à pouvoir écrire plus de 64 000 tokens en une réponse, le seul avec
none(sans réflexion) et il est Sans censure. - Contrôles d’échantillonnage : restez sur une intégration 4.5 figée ou passez à 4.6 pour la fenêtre de 1M. Appels de fonction forcés sans échantillonnage : Sonnet 5 les accepte à des tarifs plus bas ; utilisez-le plutôt que 5.5 quand l’appel doit être forcé.
- Un manuscrit entier de 300 000 tokens en un seul appel : c’est une question de contexte et de coût, traitée dans le guide du long manuscrit avec Sonnet 4.6.
Prix : tenir compte du tokenizer et de la sortie facturée
| USD par million de tokens | 4.5 | 4.6 | 5 | 5.5 |
|---|---|---|---|---|
| Entrée | $2.70 | $3 | $1.90 | $2 |
| Entrée en cache | $0.27 | $0.30 | $0.19 | $0.20 |
| Sortie | $13.50 | $15 | $9.50 | $10 |
| Écritures en cache | $3.30 | $3.75 | $2.375 | $2.50 |
Sonnet 5 et 5.5 utilisent un tokenizer plus récent. Le guide de migration d’Anthropic indique que le même texte produit environ 30 % de tokens en plus qu’en 4.x, selon le contenu ; comparez donc le coût par tâche, pas par token. Pour un travail illustratif de 20 000 tokens en entrée et 2 000 en sortie sur 4.5, supposez une hausse de 30 % des deux décomptes sur 5 et 5.5 :
| Modèle | Tokens facturés | Coût |
|---|---|---|
| 4.5 | 20 000 en entrée, 2 000 en sortie | $0.081 |
| 4.6 | 20 000 en entrée, 2 000 en sortie | $0.090 |
| 5 | environ 26 000 en entrée, 2 600 en sortie | environ $0.074 |
| 5.5 | environ 26 000 en entrée, 2 600 en sortie | environ $0.078 |
Dans ce scénario, Sonnet 5 revient environ 9 % moins cher que 4.5 ; l’économie n’est pas fixe pour tous les documents. Les décomptes de sortie doivent inclure le raisonnement facturé. Régler l’effort sur low peut réduire la réflexion, mais ne la désactive pas ; ici, seul 5.5 expose none. Lisez la consommation de votre tâche réelle avant de traiter l’estimation comme un budget.
Les tarifs de Sonnet 5.5 sont environ 5.3 % au-dessus de ceux de Sonnet 5 : c’est l’écart à décomptes facturés et catégories de cache identiques. Recomptez les longs prompts après un changement de tokenizer : une hausse hypothétique de 30 % transformerait un prompt de 190 000 tokens en 247 000, encore sous le plafond d’entrée de 1M, mais avec une autre facture.
Essayer l’édition dans Playground
Utilisez cette petite édition de vérification des faits avant de migrer un workflow plus important :
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.
- Ouvrez la page du modèle Sonnet 5.5 liée plus haut et choisissez Playground. Placez les deux sources et le brouillon dans le message utilisateur, avec "Edit from the supplied sources only" comme instruction système.
- Utilisez l’effort
lowpour cette retouche de ligne. Lancez-la après avoir vérifié le coût, puis contrôlez que la réponse garde avril pour l’accès du personnel et juin pour l’événement public, sans inventer de date exacte. - Essayez le même texte sur Sonnet 5 pour un workflow d’édition moins coûteux, sans contenu pour adultes. Gardez le texte source inchangé afin de juger l’édition elle-même.
Choisir une version pour l’édition que vous livrez réellement
Pour un nettoyage de chapitre de 700 mots avec un dossier de sources de 20 000 tokens, aucune de ces versions n’a besoin de son contexte ou de sa sortie maximale. Le choix utile est de savoir si les contrôles de la requête et l’adéquation du contenu conviennent. Sonnet 5 est le point de départ au prix le plus bas pour une édition ordinaire. Un éditeur de fiction pour adultes devrait aussi tenir compte de son niveau Filtré avant d’en faire le défaut pour tout le manuscrit. La même application peut donc avoir besoin de modèles différents pour un synopsis non explicite et pour la relecture d’une scène mature.
Si vous voulez trois formulations alternatives sur 4.5 ou 4.6, leurs contrôles d’échantillonnage offrent un moyen accepté de faire varier la génération. Cela ne signifie pas qu’augmenter la température répare une logique d’histoire défaillante. Un paragraphe qui donne à un personnage une information qu’il ne connaît pas encore a besoin de la règle de connaissance et du passage source, pas de plus de hasard. Sur 5 ou 5.5, n’inventez pas de champ d’échantillonnage équivalent. Demandez trois alternatives avec des approches énoncées différentes : dialogue plus court, moins d’exposition ou révélation plus tardive.
Pour une édition assistée par outil, imaginez que le brouillon nomme l’employeur d’un personnage alors que la base de données de référence de la série contient l’enregistrement actuel. Sur 4.5, 4.6 ou 5, le choix d’outil exposé peut imposer une consultation. Sur 5.5, auto peut produire une réponse sans cette consultation. Si votre application doit vérifier l’employeur, effectuez la lecture avant de demander l’édition, ou refusez toute réponse sans le résultat de consultation requis. Une phrase dans le prompt ne donne pas à auto la même garantie qu’un appel forcé. Les exemples natifs thinking ou output_config du guide de migration d’Anthropic ne doivent pas être collés tels quels dans cette requête.
Le résultat significatif de l’exemple est une phrase qui préserve à la fois l’accès du personnel en avril et le lancement public en juin. "The gallery reopened in June" est trop large si le personnel pouvait déjà entrer en avril. "The gallery held its public launch in June, after reopening to staff in April" est une correction humaine acceptable. Une nouvelle version qui produit une formulation plus jolie mais perd cette distinction n’a pas amélioré le travail d’édition.
Migrer la requête
Une intégration 4.5 peut utiliser temperature: 0.2, top_p: 0.9 et une fonction submit_edit forcée. Passer à 5 rejette les champs d’échantillonnage ; passer à 5.5 rejette à la fois l’échantillonnage et le choix d’outil forcé.
- Retirer l’échantillonnage sur 5 et 5.5. Supprimez
temperature,top_pettop_kde ces requêtes. Les champs non pris en charge renvoient400 unsupported_parameteravant qu’une tâche ne soit créée ou facturée ; tenez une liste d’autorisation par modèle plutôt que d’envoyer un objet de paramètres partagé. - Utiliser un outil automatique sur 5.5. Gardez la fonction
submit_editet demandez-la dans le prompt système, mais régleztool_choicesurauto. Il n’y a pas deresponse_formatici et 5.5 peut ignorer la fonction : validez donc les arguments renvoyés. Si votre workflow exige un appel forcé, Sonnet 5 le prend en charge à des tarifs plus bas. - Laisser de la place à la réponse. Le raisonnement consomme une partie de
max_tokens: un plafond de 1 024 tokens peut être épuisé avant l’apparition de texte visible. Utilisez l’effortlowpour une retouche de ligne ethighpour des sources contradictoires. Sonnet 5 s’arrête àhigh; il n’accepte pasxhighnimaxde 5.5. - Utiliser le streaming pour les éditions plus longues. Le court exemple ci-dessous utilise une réponse JSON normale. Les gros appels peuvent dépasser la limite d’environ 100 secondes en bordure de réseau ; utilisez le streaming dans ce cas et assemblez séparément le texte et les arguments d’outil. Le guide du texte et du streaming couvre les événements de fin et l’usage.
- Terminer la conversation par un message utilisateur. En quittant 4.5, déplacez l’amorce ou l’indication de format voulue dans l’instruction système plutôt que de finir par un prefill de l’assistant.
Les noms d’effort changent aussi de sens. Anthropic a recalibré les niveaux de 5.5, donc high n’est pas équivalent d’une version à l’autre. SpicyAPI règle par défaut 5 et 5.5 sur medium, alors que l’API native 5.5 d’Anthropic utilise high par défaut. Pour des réponses courtes et propres, préférez low à none : avec none, 5.5 peut dérouler la question dans le texte visible. none reste utile pour des tours rapides en personnage.
Exécuter et valider l’édition
Enregistrez ceci sous sonnet_edit.py, définissez SPICY_API_KEY depuis API Keys, puis lancez python3 sonnet_edit.py. Il utilise la bibliothèque standard de Python. Sonnet 5.5 est choisi ici pour montrer la migration vers l’outil automatique ; en changeant uniquement le modèle pour Sonnet 5, ces champs sont aussi acceptés. C’est un appel texte payant, pas une tâche de génération de médias. Les recettes de chat couvrent les intégrations multi-tours et en 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()Une édition valide garde avril pour l’accès du personnel et juin pour l’événement public. L’analyseur rejette une réponse vide, une troncature et un appel de fonction omis ou mal formé ; des arguments valides exigent tout de même cette vérification factuelle. Un rapport de migration Sonnet décrit un repli vide parvenu aux utilisateurs comme un résultat réussi.
Si finish_reason vaut length, prévoyez plus de place en sortie ou une tâche plus petite pour un nouvel appel. Conservez tout résultat partiel et l’ID de tâche avant de dépenser à nouveau. Dans un workflow d’outils multi-tours, renvoyez le résultat de l’outil avec le tool_call_id correspondant avant le tour suivant. Incluez dans vos contrôles de migration une contradiction, un fait inchangé, une réponse "unknown" et un résultat d’outil "no match" ; pour les extractions plus longues, vérifiez que les sections requises sont présentes en plus de la validité du JSON.
Laisser un Agent préparer l’intégration
Utilisez un Agent quand vous voulez qu’il adapte un éditeur existant plutôt que de coller vous-même une requête. Gardez les mêmes sources de galerie et le même brouillon dans sa mission.
- CLI : après avoir défini
SPICY_API_KEY, laissez-le inspecter le contrat choisi avecnpx @spicyapi/cli models get anthropic/claude-sonnet-5.5/chat --json. Le guide de la CLI documente cette commande en lecture seule. - MCP : une fois le serveur MCP SpicyAPI connecté, demandez : "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 : installez le Skill officiel SpicyAPI avec
npx skills add spicyapi-ai/spicy-skill, lancez une nouvelle session d’Agent, puis demandez : "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."
La CLI et MCP assurent la découverte des modèles pour ce workflow texte ; l’édition elle-même passe par /v1/chat/completions, via le programme ci-dessus ou le client HTTP de votre Agent. Fixez une limite de dépense sur la clé d’API avant de déléguer des éditions répétées.
FAQ
Sonnet 5.5 est-il moins cher que Sonnet 5 ?
Non. Il coûte environ 5.3 % de plus par token ($2 et $10 contre $1.90 et $9.50). Une tâche ne coûte autant de plus que si les décomptes facturés et les catégories de cache sont identiques. Ce supplément achète le plafond de réponse de 128 000 tokens, les efforts none et xhigh et le niveau Sans censure.
Sonnet 5.5 est-il meilleur qu’Opus 5.5 ?
Pas en règle générale. Opus 5.5 coûte $3.60 en entrée et $18 en sortie sur SpicyAPI, soit environ 1.8 fois Sonnet 5.5, avec la même fenêtre de 1M et le même plafond de sortie de 128 000. Commencez avec Sonnet 5.5 et ne montez en gamme que si vos passages les plus difficiles reviennent faux ; le guide « Claude Opus 5.5 pour le jeu de rôle NSFW » traite cette voie.
Puis-je garder temperature sur Sonnet 5.5 ?
Non. Utilisez l’effort de raisonnement pour la profondeur et placez les règles de ton dans le prompt système. Si vous avez besoin de contrôles d’échantillonnage, 4.5 et 4.6 sont les options.









