Tu transcripción de la entrevista dice una cosa, una corrección posterior dice otra y el borrador del perfil dice una tercera. Quieres que Claude repare el párrafo sin reescribir en silencio una cita ni atribuir un mérito a la persona equivocada. Eso es un problema de integridad de las fuentes antes que de prompts. El flujo práctico consiste en etiquetar las pruebas, pedir una reparación acotada y comprobar qué ha cambiado.
Entre estas dos versiones, usa Opus 4.5 cuando tu paquete de edición quepa en su límite de entrada de 198.000 tokens; usa Opus 4.6 cuando el paquete sea mayor o necesites más de 32.768 tokens de salida. 4.5 es la más barata de las dos. Mantén idéntico el bloque de fuentes entre llamadas. Si el uso devuelto informa de tokens en caché, los pases repetidos cuestan menos; presupuesta sin caché hasta que lo haga.
Las rutas de chat de Opus de SpicyAPI en formato OpenAI no aceptan en la solicitud la edición de contexto nativa de Anthropic (context_management, que borra resultados de herramientas y bloques de razonamiento antiguos): el campo se rechaza con un 400, igual que response_format. Si venías por esa función, gestiona tú el contexto (consulta las preguntas frecuentes). Si venías a editar documentos, sigue leyendo.
Qué versión de Opus para qué paquete
| Contrato actual | Opus 4.5 | Opus 4.6 |
|---|---|---|
| ID del modelo | anthropic/claude-opus-4.5/chat | anthropic/claude-opus-4.6/chat |
| Límite de entrada | 198.000 tokens | 1.000.000 tokens |
| Salida máxima | 32.768 tokens | 128.000 tokens |
| Límite de salida por defecto | 4.096 tokens | 4.096 tokens |
| Niveles de esfuerzo | low, medium, high | low, medium, high, max |
| Esfuerzo por defecto | medium | medium |
| Modalidades de entrada | Texto e imágenes | Texto e imágenes |
| USD por millón de entrada / en caché / salida | $4.50 / $0.45 / $22.50 | $5 / $0.50 / $25 |
| USD por millón de escrituras en caché | $5.50 | $6.25 |
Consulta los precios y límites en Opus 4.5 y Opus 4.6. Ambos aceptan temperature (de 0 a 1) y top_p (de 0,01 a 1); ambos rechazan response_format, así que usa una llamada a herramienta forzada cuando necesites argumentos estructurados y valida esos argumentos con tu esquema antes de aceptarlos. Ambos aceptan partes image_url, pero no partes de PDF ni de archivo: extrae el texto o renderiza las páginas relevantes como imágenes. Este tutorial usa texto para que las citas puedan verificarse con la fuente exacta. Una solicitud con max_tokens por encima de 32.768 falla la validación en 4.5.
Una ruta más reciente, Claude Opus 5.5 (anthropic/claude-opus-5.5/chat), tiene la misma ventana de 1.000.000 de tokens y el mismo techo de salida de 128.000 tokens, a $3.60 de entrada / $18 de salida por millón, por debajo de las dos versiones de este artículo; no tiene temperature ni top_p, y solo permite la elección de herramienta automática o desactivada. Para una integración nueva, empieza por ella si puedes trabajar sin controles de muestreo ni llamada a función forzada.
Ambas rutas figuran como sin censura en SpicyAPI. Para editar ficción para adultos, identifica el contexto ficticio y el pasaje exacto que debe cambiar, de modo que la solicitud se centre en la edición.
El esfuerzo se gasta en tokens de salida. Empieza con medium, mantén fijos la fuente y las instrucciones y sube el esfuerzo solo cuando puedas señalar un fallo concreto de conciliación, como una cronología que el modelo dedujo mal. Así también se ve el efecto del cambio.
Separa la fuente histórica de la corrección
Este es un paquete ficticio y compacto para el perfil de una autora:
- S1, entrevista grabada: Ada dice: «Mostramos el prototipo en 2018».
- S2, corrección escrita posterior: Ada dice que revisó el calendario: la primera demostración pública fue en febrero de 2019. El contrato de alquiler del taller empezó en 2018.
- S3, nota de un colaborador: Theo se incorporó después de la demostración. Más adelante perfeccionó el mástil del instrumento; no diseñó el prototipo original.
- Borrador P1: «Ada y Theo presentaron en 2018 su prototipo diseñado conjuntamente, el año en que abrieron el taller».
La edición necesita dos reparaciones: la fecha de la demostración y el papel de Theo. La cita de la entrevista es un registro histórico, así que cambiar en silencio el «2018» citado por «2019» crearía una cita que nadie dijo. Conserva la cita y pon la corrección en la narración. Un objetivo escrito por una persona sería: «Ada hizo la primera demostración del prototipo en febrero de 2019, tras alquilar el taller en 2018. Theo se incorporó más tarde y perfeccionó el mástil del instrumento». No afirma que el negocio abriera en 2018, porque la fecha de un alquiler no establece por sí sola una fecha de apertura.
La misma estructura sirve para la ficción. Sustituye S1 a S3 por hechos de la historia ya aprobados, separa lo que un personaje cree erróneamente de lo que sabe el narrador y nombra el pasaje que puede cambiar. «Se reconcilian en el capítulo doce» no autoriza una edición del capítulo ocho que elimine el conflicto antes de tiempo.
Pruébalo primero en el Playground
- Abre Claude Opus 4.5 y cambia al Playground.
- Pega los registros de fuentes S1–S3 y el borrador P1 de abajo y pide un texto de sustitución junto con los ID de fuente de cada corrección.
- Comprueba que la demostración pública pasa a 2019 sin cambiar la entrevista citada ni inventar para Theo un crédito de diseño original.
Una solicitud que puedes comprobar después
El script de abajo etiqueta con un ID cada fuente y cada párrafo del borrador, pone primero el material estable y la tarea al final, y luego comprueba la respuesta. La comprobación es mecánica: cualquier texto que el modelo ponga entre comillas debe ser una subcadena exacta de las fuentes; si no, se marca como cita alterada. Se detiene ante respuestas incompletas o vacías e imprime la edición propuesta para que la revises. Define SPICY_API_KEY con una clave de API Keys; la llamada usa la interfaz de Chat Completions de 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 respuesta que conserve la cita de la entrevista pasa; una que cite «Mostramos el prototipo en 2019». queda marcada. La comprobación solo ve el texto entre comillas dobles; no puede detectar una fecha inventada sin comillas, un mérito mal atribuido ni una frase de la fuente reescrita sin comillas. Revisa también eso con S1–S3. Detecta el fallo más difícil de ver a simple vista en un manuscrito largo: una cita modificada en unos pocos caracteres.
Importan dos detalles de la solicitud. El mensaje de sistema indica qué es prueba y qué es editable, de modo que S1 queda explícitamente fuera de la tarea de reescritura. Y la tarea va después de las fuentes, así el prefijo compartido se mantiene idéntico de un pase a otro. Este ejemplo es lo bastante corto para una llamada acotada sin streaming. Un paquete de fuentes más largo o una respuesta con esfuerzo alto puede superar el límite de red de unos 100 segundos; usa streaming en esos trabajos. Aumentar el timeout del cliente no amplía ese límite.
Deja que un Agent prepare la llamada
Para ediciones repetidas basadas en fuentes, pide a tu Agent de programación que use el Skill de SpicyAPI: «Read anthropic/claude-opus-4.5/chat, then adapt the example to my input; show the request before running it.» La consulta con la CLI es spicyapi models get anthropic/claude-opus-4.5/chat --json; la consulta con MCP es spicyapi_model_get con model: "anthropic/claude-opus-4.5/chat". Las llamadas de chat usan un cliente compatible o la API de chat; los comandos de tareas de medios no generan respuestas de chat.
Manuscritos largos: pide ubicaciones antes que sustituciones
Para una reparación a nivel de frase, envía el párrafo y las pruebas que lo gobiernan. Para la edición de un capítulo, añade las transiciones vecinas y los hechos usados en ese capítulo. Usa la ventana más grande cuando la pregunta abarque todo el manuscrito: dónde cambia el oficio de un personaje, si se cumple una promesa, qué referencias a una fecha hay que revisar.
Para un pase sobre todo el manuscrito, separa el descubrimiento de la revisión:
- Encuentra las apariciones. Pide una lista, no una reescritura: «List every passage that states the demonstration year, quote the sentence, and classify it as narration, direct quotation or a character’s belief.» Un reemplazo global borraría distinciones de las que depende la historia.
- Elige las ediciones. Da a los párrafos ID estables (P42, no «el párrafo sobre el alquiler»), pide que devuelva esos ID y compara cada sustitución con su original.
- Deja abiertos los hechos sin resolver. Cuando las fuentes no zanjen un punto, que devuelva una pregunta en lugar de la fecha más plausible.
Para errores de continuidad como colores de ojos que cambian, lugares incoherentes o un personaje que sabe algo demasiado pronto, mantén una biblia de la historia y envía las entradas relevantes con cada capítulo.
Si el manuscrito supera los 198.000 tokens de entrada en 4.5, divídelo por dependencias, no por tamaño. Los capítulos que comparten una cuestión de continuidad pertenecen a la misma solicitud; partirlos por la mitad puede eliminar la prueba que decide la edición. Si eso no es posible, pasa a 4.6.
Editar un capítulo sin aplanar su voz
La reparación factual y el pulido de la prosa son tareas distintas. Un pase factual debe identificar los errores de fecha y de crédito antes de cambiar el ritmo. Si al mismo tiempo pides «un perfil profesional pulido», el modelo puede quitar la vacilación de la entrevista, sustituir la fraseología distintiva de la autora o del autor y enterrar la corrección real en un párrafo completamente nuevo.
Ten a mano un breve ejemplo de la voz que quieres. Por ejemplo: «El taller seguía siendo una sala llena de herramientas prestadas. Ada lo llamaba laboratorio. Theo lo llamaba frío». Lo útil de esa muestra son las frases cortas, los objetos concretos y el desacuerdo contenido. Son más accionables que «literario pero accesible». Pide que la edición conserve esos rasgos mientras aclara la cronología corregida.
Una reescritura hecha por una persona podría ser:
El alquiler empezó en 2018. Ada mostró el prototipo al público el febrero siguiente, cuando el taller seguía siendo una sala llena de herramientas prestadas. Theo se incorporó más tarde. El mástil del instrumento lleva sus cambios; el prototipo original, no.
Es una decisión editorial ilustrativa, no una salida de Opus. Corrige los hechos sin convertir a Theo en cofundador ni inventar cuándo abrió el taller. También muestra que conservar la voz no significa conservar una afirmación falsa.
En una novela romántica, separa tres hallazgos de apariencia similar. Que un personaje diga «nunca volviste» puede ser una acusación deliberada. Una narración que dice que el personaje nunca regresó puede contradecir un capítulo anterior. Una pregunta sin resolver sobre si el regreso ocurrió puede ser una nota de la autora o del autor. Pide a Opus que clasifique el pasaje antes de sustituirlo. Si no, una limpieza factual automática puede borrar un malentendido intencionado que mueve la relación.
Aplica la corrección donde realmente corresponde
En un perfil largo, el año erróneo puede aparecer en la apertura, en la cronología, en un pie de foto y en la transcripción de la entrevista. Estas apariciones requieren un tratamiento distinto. Revisa la narración explicativa y la cronología a partir de la corrección aprobada. Mantén intacta la cita grabada y añade contexto. Comprueba el pie de foto con la fecha documentada de la propia imagen: la corrección del evento no demuestra que todas las fotografías del taller se tomaran en 2019.
En un libro, el equivalente es corregir la narración canónica y conservar el conocimiento limitado de un personaje hasta la revelación prevista. Pide una tabla con ubicación, frase existente, fuente y cambio propuesto. Usa esa lista para aprobar revisiones y solicita después solo las sustituciones elegidas. Así, una ventana de contexto larga se convierte en una ayuda de edición con cambios trazables, en lugar de una invitación costosa a reescribirlo todo.
Coste: cuatro categorías de tokens, con un ejemplo de pases repetidos
SpicyAPI factura por separado la entrada sin caché, la entrada en caché, las escrituras en caché y la salida. Un solo pase con 100.000 tokens de entrada y 5.000 de salida cuesta $0.5625 con Opus 4.5 y $0.625 con Opus 4.6. Los tokens de razonamiento se facturan como salida.
Editar rara vez es un solo pase, y el paquete de fuentes es lo que se repite. La entrada en caché cuesta aproximadamente una décima parte de la tarifa de entrada, siempre que el prefijo compartido sea idéntico entre llamadas y lo que varía esté al final (la página de Opus 4.6 indica mantenerlo idéntico byte a byte). El esquema de la solicitud no expone ningún campo de control de caché. Busca prompt_tokens_details.cached_tokens en el uso devuelto; mantener el prefijo sin cambios no garantiza un acierto. El prompt caching nativo de Anthropic tiene sus propias reglas de TTL y de prefijo mínimo; estas no establecen la duración de la caché ni la elegibilidad de esta ruta alojada. Si la primera llamada escribe el paquete en la caché y las cinco siguientes lo leen, seis pases sobre el mismo paquete de 100.000 tokens con 5.000 tokens de salida cada uno cuestan:
| Seis pases | Opus 4.5 | Opus 4.6 |
|---|---|---|
| Sin caché | $3.375 | $3.75 |
| El primer pase escribe, cinco leen | $1.45 | $1.625 |
Es un ahorro de aproximadamente el 57 por ciento cuando se aplican esas categorías exactas de tokens. Cambiar S2 o mover material por delante de un prefijo reutilizable puede reducir o eliminar la coincidencia con la caché. Presupuesta con la primera fila y revisa el uso y el coste de tus primeras llamadas para ver si se aplicó la segunda.
Con 400.000 tokens de entrada y 5.000 de salida, el paquete ya no cabe en Opus 4.5; Opus 4.6 cuesta $2.125 sin caché. Si una respuesta se cortó, subir max_tokens arregla la salida; no sirve de nada si en el paquete de entrada faltaba la fuente decisiva.
Repara el fallo en su causa
| Resultado | Siguiente acción |
|---|---|
| La fecha corregida aparece dentro de una cita histórica | Restaura la cita y añade la corrección en la narración; la comprobación de citas lo marcará |
| Theo pasa a ser codiseñador original | Vuelve a enviar S3 y sustituye solo la frase que le asigna ese papel |
La respuesta se corta antes de la lista de cambios (finish_reason es length) | Acota la tarea o sube max_tokens hasta el techo del modelo |
| La solicitud rechaza una parte de imagen o PDF | Para imágenes, comprueba la forma de image_url y que la URL sea accesible. Para partes de PDF o archivo, extrae primero el texto |
| Necesitas JSON en la respuesta | No existe response_format; define y fuerza una herramienta con tool_choice y valida los argumentos que devuelva |
| Falla el analizador de JSON | Valida y repara la salida de texto en tu código, o pasa a la llamada a herramienta forzada de arriba |
Con cuál empezar
Para un flujo 4.x existente, usa 4.5 con paquetes por debajo de 198.000 tokens de entrada y 4.6 cuando un manuscrito conectado o la respuesta necesaria superen sus límites. Para una integración nueva sin requisitos de muestreo ni de herramienta forzada, Opus 5.5 ofrece un precio por token más bajo y la ventana más grande; la capacidad por sí sola no decide qué modelo conserva mejor tu fuente. Elijas el que elijas, los hábitos que protegen la fuente son los mismos: ID en cada pasaje, citas que deben permanecer literales, un prefijo estable y una comprobación mecánica de la respuesta.
Preguntas frecuentes
¿Edita mejor Opus 4.6 que 4.5, y qué modelo de Claude es el mejor para la edición de textos largos?
Las diferencias medibles son la capacidad y el precio: 4.6 lee 1.000.000 de tokens y escribe 128.000, y cuesta alrededor de un 11 por ciento más por token de entrada. Elígelo por esos límites. Para una integración nueva, Opus 5.5 es más barato que ambos y tiene la ventana más grande, siempre que no necesites controles de muestreo ni elección de herramienta forzada.
¿Qué hago cuando el contexto está lleno, o sin edición de contexto nativa?
Empieza una solicitud nueva: mantén primero el paquete de fuentes sin cambios, sustituye los turnos antiguos por un breve resumen de las decisiones ya tomadas (qué fechas se corrigieron, qué pasajes están terminados) y pon la siguiente tarea al final. Descartar turnos antiguos no cuesta nada; descartar una fuente te cuesta la edición.
¿Cómo evito que cambie una cita?
Marca las fuentes como prueba, permite comillas solo alrededor de texto exacto de la fuente y ejecuta la comprobación de citas de arriba en cada respuesta.
¿Mantener el mismo bloque de fuentes garantiza un acierto de caché?
No. Mantenlo estable para que la reutilización sea posible, pero presupuesta sin caché hasta que el uso de caché devuelto y el cargo final muestren un acierto. Una entrada de caché es una optimización de facturación; no hace que una edición sea más fiel.







