La trascrizione della tua intervista dice una cosa, una correzione successiva ne dice un'altra e la bozza del profilo ne dice una terza. Vuoi che Claude ripari il paragrafo senza riscrivere di nascosto una citazione e senza attribuire un merito alla persona sbagliata. È prima di tutto un problema di integrità delle fonti, e solo dopo un problema di prompt. Il flusso pratico è etichettare le prove, chiedere una riparazione mirata e verificare che cosa è cambiato.
Tra queste due versioni, usa Opus 4.5 quando il tuo pacchetto di modifica sta nel suo limite di input di 198.000 token; usa Opus 4.6 quando il pacchetto è più grande o ti servono più di 32.768 token di output. La 4.5 è la più economica delle due. Mantieni identico il blocco di fonti da una chiamata all'altra. Se l'utilizzo restituito riporta token in cache, i passaggi ripetuti costano meno; finché non succede, calcola il budget senza cache.
Le route chat Opus di SpicyAPI in formato OpenAI non accettano nella richiesta la modifica del contesto nativa di Anthropic (context_management, che elimina i vecchi risultati degli strumenti e i blocchi di thinking): il campo viene rifiutato con un 400, così come response_format. Se eri qui per quella funzione, gestisci il contesto da solo (vedi le FAQ). Se eri qui per modificare documenti, continua a leggere.
Quale versione di Opus per quale pacchetto
| Contratto attuale | Opus 4.5 | Opus 4.6 |
|---|---|---|
| ID del modello | anthropic/claude-opus-4.5/chat | anthropic/claude-opus-4.6/chat |
| Limite di input | 198.000 token | 1.000.000 di token |
| Output massimo | 32.768 token | 128.000 token |
| Limite di output predefinito | 4.096 token | 4.096 token |
| Livelli di effort | low, medium, high | low, medium, high, max |
| Effort predefinito | medium | medium |
| Modalità di input | Testo e immagini | Testo e immagini |
| USD per milione di input / in cache / output | $4.50 / $0.45 / $22.50 | $5 / $0.50 / $25 |
| USD per milione di scritture in cache | $5.50 | $6.25 |
Trovi prezzi e limiti nelle pagine di Opus 4.5 e Opus 4.6. Entrambi accettano temperature (da 0 a 1) e top_p (da 0,01 a 1); entrambi rifiutano response_format, quindi usa una chiamata a strumento forzata quando ti servono argomenti strutturati, poi convalida quegli argomenti con il tuo schema prima di accettarli. Entrambi accettano parti image_url, ma non parti PDF o file: estrai il testo oppure converti le pagine rilevanti in immagini. Questo tutorial usa il testo perché le citazioni possano essere verificate sulla fonte esatta. Una richiesta con max_tokens oltre 32.768 non supera la validazione sulla 4.5.
Una route più recente, Claude Opus 5.5 (anthropic/claude-opus-5.5/chat), ha la stessa finestra da 1.000.000 di token e lo stesso tetto di output da 128.000 token, a $3.60 di input / $18 di output per milione, meno di entrambe le versioni qui; non ha temperature né top_p e consente solo la scelta automatica o disattivata degli strumenti. Per una nuova integrazione, controllala per prima se puoi lavorare senza controlli di campionamento e senza chiamata di funzione forzata.
Entrambe le route sono indicate come senza censura su SpicyAPI. Per modificare narrativa per adulti, indica il contesto di finzione e il passaggio esatto da cambiare, così la richiesta resta concentrata sulla modifica.
L'effort si consuma in token di output. Parti da medium, tieni fisse fonte e istruzioni e alza l'effort solo quando puoi indicare un preciso errore di riconciliazione, come una cronologia sbagliata dal modello. Così si vede anche l'effetto del cambiamento.
Separa la fonte storica dalla correzione
Ecco un pacchetto compatto e fittizio per il profilo di un'autrice:
- S1, intervista registrata: Ada dice: «Abbiamo mostrato il prototipo nel 2018».
- S2, correzione scritta successiva: Ada dice di aver controllato il calendario: la prima dimostrazione pubblica fu a febbraio 2019. Il contratto d'affitto della bottega iniziò nel 2018.
- S3, nota di un collaboratore: Theo si è unito dopo la dimostrazione. In seguito ha perfezionato il manico dello strumento; non ha progettato il prototipo originale.
- Bozza P1: «Ada e Theo presentarono nel 2018 il loro prototipo progettato insieme, l'anno in cui aprirono la bottega».
La modifica richiede due riparazioni: la data della dimostrazione e il ruolo di Theo. La citazione dell'intervista è un documento storico, quindi cambiare di nascosto il «2018» citato in «2019» creerebbe una citazione che nessuno ha pronunciato. Conserva la citazione e metti la correzione nella narrazione. Un obiettivo scritto da una persona è: «Ada dimostrò per la prima volta il prototipo a febbraio 2019, dopo aver affittato la bottega nel 2018. Theo si unì più tardi e perfezionò il manico dello strumento». Non afferma che l'attività abbia aperto nel 2018, perché la data di un affitto da sola non stabilisce una data di apertura.
La stessa struttura funziona per la narrativa. Sostituisci S1–S3 con fatti della storia approvati, separa ciò che un personaggio crede a torto da ciò che sa il narratore e indica il passaggio che può cambiare. «Si riconciliano nel capitolo dodici» non autorizza una modifica nel capitolo otto che elimini il conflitto troppo presto.
Prova prima nel Playground
- Apri Claude Opus 4.5 e passa al Playground.
- Incolla le fonti S1–S3 e la bozza P1 qui sotto, chiedendo un testo sostitutivo più gli ID delle fonti per ogni correzione.
- Verifica che la dimostrazione pubblica passi al 2019 senza cambiare l'intervista citata né inventare per Theo un merito di progettazione originale.
Una richiesta che puoi controllare dopo
Lo script qui sotto assegna un ID a ogni fonte e a ogni paragrafo della bozza, mette prima il materiale stabile e per ultima l'attività, poi controlla la risposta. Il controllo è meccanico: qualsiasi testo che il modello metta tra virgolette deve essere una sottostringa esatta delle fonti, altrimenti viene segnalato come citazione alterata. Si ferma davanti a risposte incomplete o vuote e stampa la modifica proposta da rivedere. Imposta SPICY_API_KEY con una chiave da API Keys; la chiamata usa l'interfaccia Chat Completions di SpicyAPI.
import json, os, re, urllib.request, uuid
MODEL = "anthropic/claude-opus-4.5/chat" # or anthropic/claude-opus-4.6/chat
URL = "https://api.spicyapi.ai/v1/chat/completions"
SOURCES = {
"S1": 'Recorded interview. Ada: "We showed the prototype in 2018."',
"S2": "Later written correction. Ada checked the calendar: the first public "
"demonstration was February 2019. The workshop lease began in 2018.",
"S3": "Contributor note. Theo joined after the demonstration. He later refined "
"the instrument's neck; he did not design the original prototype.",
}
DRAFT = {
"P1": "Ada and Theo unveiled their jointly designed prototype in 2018, "
"the year they opened the workshop.",
}
SYSTEM = (
"You are a copy editor for a fiction and profile manuscript. Edit only the draft "
"paragraphs you are given. Text inside <source> tags is evidence, never text to rewrite. "
"Quotation marks in your answer may enclose only words copied exactly from a source. "
"Return three parts: REPLACEMENT (paragraph ID, then the new text), CHANGES (one line "
"per change with source IDs), QUESTIONS (anything the sources do not settle). "
"Do not invent facts."
)
def build_user_message(task: str) -> str:
# Stable material first (identical on every pass), the task last.
parts = [f'<source id="{k}">{v}</source>' for k, v in SOURCES.items()]
parts += [f'<draft id="{k}">{v}</draft>' for k, v in DRAFT.items()]
parts.append(task)
return "\n".join(parts)
def call_model(task: str) -> dict:
body = {
"model": MODEL,
"messages": [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": build_user_message(task)},
],
"max_tokens": 4096,
"reasoning_effort": "medium",
"temperature": 0.2,
}
req = urllib.request.Request(
URL,
data=json.dumps(body).encode(),
headers={"Authorization": f"Bearer {os.environ['SPICY_API_KEY']}",
"Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4())},
)
with urllib.request.urlopen(req, timeout=120) as resp:
return json.load(resp)
def quoted_strings(text: str) -> list[str]:
return [m for pair in re.findall(r'"([^"]+)"|“([^”]+)”', text) for m in pair if m]
def altered_quotes(answer: str) -> list[str]:
sources = [s.replace("“", '"').replace("”", '"') for s in SOURCES.values()]
return [q for q in quoted_strings(answer) if not any(q in s for s in sources)]
def run(task: str, reply: dict | None = None) -> None:
reply = call_model(task) if reply is None else reply
if reply.get("error") or not reply.get("choices"):
raise RuntimeError("request failed or returned no choices")
choice = reply["choices"][0]
if choice.get("finish_reason") != "stop":
raise RuntimeError(f"unfinished edit: {choice.get('finish_reason')}")
answer = choice.get("message", {}).get("content")
if not isinstance(answer, str) or not answer.strip():
raise RuntimeError("empty edit")
bad = altered_quotes(answer)
print(answer)
print("ALTERED QUOTES:", bad if bad else "none")
print("USAGE:", reply.get("usage"))
if bad:
raise RuntimeError("review altered quotations before using this edit")
if __name__ == "__main__":
run("Fix the factual errors in P1 and preserve the lease/demonstration distinction.")Una risposta che mantiene la citazione dell'intervista passa; una che cita «Abbiamo mostrato il prototipo nel 2019». viene segnalata. Il controllo vede solo il testo tra virgolette doppie; non può rilevare una data inventata senza virgolette, un merito attribuito male o una frase della fonte riscritta senza virgolette. Verifica anche questi punti rispetto a S1–S3. Intercetta l'errore più difficile da vedere a occhio in un manoscritto lungo: una citazione cambiata di pochi caratteri.
Contano due dettagli della richiesta. Il messaggio di sistema dice che cosa è prova e che cosa è modificabile, quindi S1 è esplicitamente fuori dall'incarico di riscrittura. E l'attività sta dopo le fonti, così il prefisso condiviso resta identico da un passaggio all'altro. Questo esempio è abbastanza breve per una chiamata limitata senza streaming. Un pacchetto di fonti più lungo o una risposta con effort alto può superare il limite di rete di circa 100 secondi; per quei lavori usa lo streaming. Aumentare il timeout del client non estende quel limite.
Lascia che un Agent prepari la chiamata
Per modifiche ripetute basate su fonti, chiedi al tuo Agent di programmazione di usare lo Skill SpicyAPI: «Read anthropic/claude-opus-4.5/chat, then adapt the example to my input; show the request before running it.» La consultazione con la CLI è spicyapi models get anthropic/claude-opus-4.5/chat --json; con MCP è spicyapi_model_get con model: "anthropic/claude-opus-4.5/chat". Le chiamate di chat usano un client compatibile o l'API di chat; i comandi delle attività multimediali non generano risposte di chat.
Manoscritti lunghi: chiedi le posizioni prima delle sostituzioni
Per una riparazione a livello di frase, invia il paragrafo e le prove che lo governano. Per la modifica di un capitolo, aggiungi le transizioni vicine e i fatti usati in quel capitolo. Usa la finestra più grande quando la domanda riguarda l'intero manoscritto: dove cambia il lavoro di un personaggio, se una promessa viene mantenuta, quali riferimenti a una data vanno rivisti.
Per un passaggio su tutto il manoscritto, separa la ricerca dalla revisione:
- Trova le occorrenze. Chiedi un elenco, non una riscrittura: «List every passage that states the demonstration year, quote the sentence, and classify it as narration, direct quotation or a character’s belief.» Una sostituzione globale cancellerebbe distinzioni da cui dipende la storia.
- Scegli le modifiche. Dai ai paragrafi ID stabili (P42, non «il paragrafo sull'affitto»), fai restituire quegli ID e confronta ogni sostituzione con l'originale.
- Lascia aperti i fatti irrisolti. Dove le fonti non chiariscono un punto, fai restituire una domanda invece della data più plausibile.
Per errori di continuità come colori degli occhi che cambiano, luoghi incoerenti o un personaggio che sa qualcosa troppo presto, tieni una bibbia della storia e invia le voci rilevanti con ogni capitolo.
Se il manoscritto supera i 198.000 token di input sulla 4.5, dividi per dipendenza, non per dimensione. I capitoli che condividono una questione di continuità appartengono alla stessa richiesta; dimezzarli può eliminare la prova che decide la modifica. Se non è possibile, passa alla 4.6.
Modificare un capitolo senza appiattirne la voce
La riparazione dei fatti e la rifinitura della prosa sono incarichi diversi. Un passaggio sui fatti deve individuare gli errori di data e di merito prima di cambiare il ritmo. Se chiedi nello stesso momento «un profilo professionale rifinito», il modello può eliminare le esitazioni dell'intervista, sostituire le formule caratteristiche dell'autrice o dell'autore e seppellire la correzione vera in un paragrafo del tutto nuovo.
Tieni a portata un breve esempio della voce che vuoi. Ad esempio: «La bottega era ancora una stanza piena di attrezzi presi in prestito. Ada la chiamava un laboratorio. Theo la chiamava fredda». Le caratteristiche utili di questo campione sono le frasi brevi, gli oggetti concreti e il disaccordo trattenuto. Sono più operative di «letterario ma accessibile». Chiedi che la modifica mantenga queste caratteristiche rendendo chiara la cronologia corretta.
Una riscrittura scritta da una persona potrebbe essere:
L'affitto iniziò nel 2018. Ada mostrò il prototipo al pubblico il febbraio successivo, quando la bottega era ancora una stanza piena di attrezzi presi in prestito. Theo si unì più tardi. Il manico dello strumento porta le sue modifiche; il prototipo originale no.
È una scelta editoriale illustrativa, non un output di Opus. Corregge i fatti senza trasformare Theo in un cofondatore e senza inventare quando aprì la bottega. Mostra anche che preservare la voce non significa preservare un'affermazione falsa.
Per un romanzo rosa, separa tre riscontri dall'aspetto simile. Un personaggio che dice «non sei mai tornato» può fare un'accusa deliberata. Una narrazione che dice che il personaggio non è mai tornato può contraddire un capitolo precedente. Una domanda irrisolta sul fatto che il ritorno sia avvenuto può essere una nota dell'autrice o dell'autore. Chiedi a Opus di classificare il passaggio prima di sostituirlo. Altrimenti una pulizia automatica dei fatti può cancellare un malinteso voluto che muove la relazione.
Applica la correzione dove serve davvero
In un profilo più lungo, l'anno sbagliato può comparire nell'apertura, nella cronologia, in una didascalia e nella trascrizione dell'intervista. Queste occorrenze richiedono trattamenti diversi. Rivedi la narrazione esplicativa e la cronologia in base alla correzione approvata. Lascia intatta la citazione registrata e aggiungi contesto. Controlla una didascalia rispetto alla data documentata dell'immagine stessa: la correzione dell'evento non dimostra che ogni fotografia della bottega sia stata scattata nel 2019.
Per un libro, l'equivalente è correggere la narrazione canonica preservando la conoscenza limitata di un personaggio fino alla rivelazione prevista. Chiedi una tabella con posizione, frase esistente, fonte e modifica proposta. Usa quell'elenco per approvare le revisioni, poi richiedi solo le sostituzioni scelte. Così una lunga finestra di contesto diventa un aiuto alla modifica con cambiamenti tracciabili, invece di un costoso invito a riscrivere tutto.
Costo: quattro categorie di token, con un esempio di passaggi ripetuti
SpicyAPI fattura separatamente input senza cache, input in cache, scritture in cache e output. Un singolo passaggio su 100.000 token di input con 5.000 token di output costa $0.5625 su Opus 4.5 e $0.625 su Opus 4.6. I token di ragionamento sono fatturati come output.
La modifica raramente è un solo passaggio, e il pacchetto di fonti è la parte che si ripete. L'input in cache costa circa un decimo della tariffa di input, a patto che il prefisso condiviso sia identico tra le chiamate e ciò che varia stia in fondo (la pagina di Opus 4.6 dice di mantenerlo identico byte per byte). Lo schema della richiesta non espone alcun campo di controllo della cache. Cerca prompt_tokens_details.cached_tokens nell'utilizzo restituito; mantenere invariato il prefisso non garantisce un hit. Il prompt caching nativo di Anthropic ha regole proprie su TTL e prefisso minimo; queste non stabiliscono né la durata della cache né l'idoneità di questa route ospitata. Se la prima chiamata scrive il pacchetto in cache e le cinque successive lo leggono, sei passaggi sullo stesso pacchetto da 100.000 token con 5.000 token di output ciascuno costano:
| Sei passaggi | Opus 4.5 | Opus 4.6 |
|---|---|---|
| Senza cache | $3.375 | $3.75 |
| Il primo scrive, cinque leggono | $1.45 | $1.625 |
È un risparmio di circa il 57 per cento quando valgono esattamente quelle categorie di token. Cambiare S2 o spostare materiale davanti a un prefisso riutilizzabile può ridurre o eliminare la corrispondenza con la cache. Calcola il budget sulla prima riga e leggi utilizzo e costo delle tue prime chiamate per vedere se è valsa la seconda.
Con 400.000 token di input e 5.000 di output il pacchetto non sta più in Opus 4.5; Opus 4.6 costa $2.125 senza cache. Se una risposta è stata troncata, alzare max_tokens risolve l'output; non serve a nulla se il pacchetto di input ometteva la fonte decisiva.
Ripara l'errore alla sua causa
| Risultato | Azione successiva |
|---|---|
| La data corretta compare dentro una citazione storica | Ripristina la citazione e aggiungi la correzione nella narrazione; il controllo delle citazioni lo segnalerà |
| Theo diventa co-progettista originale | Reinvia S3 e sostituisci solo la frase che gli assegna il ruolo |
La risposta si interrompe prima dell'elenco delle modifiche (finish_reason è length) | Restringi l'attività o alza max_tokens fino al tetto del modello |
| La richiesta rifiuta una parte immagine o PDF | Per le immagini, controlla la forma di image_url e che l'URL sia raggiungibile. Per le parti PDF o file, estrai prima il testo |
| Serve JSON dalla risposta | Non c'è response_format; definisci e forza uno strumento con tool_choice, poi convalida gli argomenti restituiti |
| Il parser JSON fallisce | Convalida e ripara l'output testuale nel tuo codice, oppure passa alla chiamata a strumento forzata qui sopra |
Con quale iniziare
Per un flusso 4.x esistente, usa la 4.5 per pacchetti sotto i 198.000 token di input e la 4.6 quando un manoscritto collegato o la risposta richiesta superano i suoi limiti. Per una nuova realizzazione senza esigenze di campionamento o di strumenti forzati, Opus 5.5 offre un prezzo per token più basso e la finestra più grande; la capacità da sola non stabilisce quale modello preservi meglio la tua fonte. Qualunque tu scelga, le abitudini che proteggono la fonte sono le stesse: ID su ogni passaggio, citazioni che devono restare letterali, un prefisso stabile e un controllo meccanico della risposta.
FAQ
Opus 4.6 modifica meglio della 4.5, e quale modello Claude è il migliore per la modifica di testi lunghi?
Le differenze misurabili sono capacità e prezzo: la 4.6 legge 1.000.000 di token e ne scrive 128.000, e costa circa l'11 per cento in più per token di input. Sceglila per quei limiti. Per una nuova realizzazione, Opus 5.5 costa meno di entrambe e ha la finestra più grande, purché non ti servano controlli di campionamento o la scelta forzata degli strumenti.
Che cosa faccio quando il contesto è pieno, o senza modifica del contesto nativa?
Avvia una nuova richiesta: tieni il pacchetto di fonti per primo e invariato, sostituisci i vecchi turni con un breve riepilogo delle decisioni già prese (quali date sono state corrette, quali passaggi sono finiti) e metti l'attività successiva per ultima. Scartare vecchi turni non costa nulla; scartare una fonte ti costa la modifica.
Come impedisco che cambi una citazione?
Segna le fonti come prova, consenti le virgolette solo attorno a testo esatto della fonte ed esegui su ogni risposta il controllo delle citazioni qui sopra.
Mantenere lo stesso blocco di fonti garantisce un hit della cache?
No. Mantienilo stabile per rendere possibile il riutilizzo, ma calcola il budget senza cache finché l'utilizzo della cache restituito e l'addebito finale non mostrano un hit. Una voce di cache è un'ottimizzazione di fatturazione; non rende una modifica più fedele.







