Claude Sonnet 5 vs DeepSeek V4 Pro
Cuál usar y cuándo
Ambos comparten una ventana de contexto de 1,000,000 tokens y cubren chat, código, razonamiento y herramientas, así que la diferencia está en la modalidad y el coste: claude-sonnet-5 acepta entrada de imagen además de texto y expone una capacidad de pensamiento, mientras que deepseek-v4-pro es solo texto pero permite hasta 393216 tokens de salida frente a los 128000 de Sonnet. En el tarifario deepseek-v4-pro es más barato en todo: $1.32 frente a $2 en entrada, $3.96 frente a $10 en salida (unas 2.5x menos) y $0.132 frente a $0.2 en lecturas de caché. Elige claude-sonnet-5 si necesitas imágenes o pensamiento conmutable; elige deepseek-v4-pro para generaciones de texto largas con menos gasto.
Benchmarks
Publicado por los proveedores: Alibaba (Qwen) Anthropic DeepSeek Google MiniMax Moonshot OpenAI Tencent Z.ai
Precios
| Claude Sonnet 5 | DeepSeek V4 Pro | Δ | |
|---|---|---|---|
| Entrada / 1M tokens | $2 | $1.32 | 1.5× |
| Salida / 1M tokens | $10 | $3.96 | 2.5× |
| Lectura de caché / 1M tokens | $0.2 | $0.132 | 1.5× |
| Escritura en caché | 1.25x (5m) / 2x (1h) | sin cargo aparte | - |
Tarifas tomadas del catálogo en vivo al generar el sitio; la página de cada modelo tiene la ficha de precios actualizada.
Dónde queda cada uno: precio de entrada por 1M de tokens entre los 76 modelos de chat que se facturan en esta unidad (escala logarítmica)
Capacidades
| Claude Sonnet 5 | DeepSeek V4 Pro | |
|---|---|---|
| Uso de herramientas | sí | sí |
| Control del razonamiento | configurable | configurable |
| Salida estructurada | sí | sí |
| Caché de prompts | explícito (tú marcas el prefijo) | implícito (automático) |
| Duración de la caché | 5m default, 1h option | no fixed TTL (evicted when unused) |
| Prefijo mínimo en caché | 1024 tokens | no publicado |
Especificaciones
| Claude Sonnet 5 | DeepSeek V4 Pro | |
|---|---|---|
| Modalidades de entrada | texto imagen | texto |
| Modalidades de salida | texto | texto |
| Lanzamiento | 2026-06-30 | 2026-04-24 |
| Corte de conocimiento | 2026-01 | - |
| Ventana de contexto | 1M | 1M |
| Salida máxima | 128K | 393K |
| Parámetro de razonamiento |
|
|
| Valores aceptados | thinking.type
effort
"enabled" returns 400 | thinking.type
reasoning_effort
|
| Valor por defecto | thinking on (adaptive) effort
| enabled, with reasoning_effort high some complex agent requests are automatically set to max |
Las especificaciones se transcriben de la documentación de cada proveedor; si un proveedor no publica un dato, la fila se omite en vez de deducirlo. Fuentes completas: Claude Sonnet 5 · DeepSeek V4 Pro
Un mismo prompt en los dos modelos, medido a través de la pasarela
Claude Sonnet 5 superado · 3 sentences
Reasoning mode works by having the model generate extended internal "thinking" steps before producing its final answer, and since we're billed on total tokens, that hidden reasoning text adds significantly to what we pay for—even though you never see it in the output. This is different from simply getting longer visible responses; the model is essentially "showing its work" behind the scenes, and complex prompts can trigger thousands of extra reasoning tokens per request. The upside is improved accuracy on complex tasks, but if we want to control costs, we should selectively enable reasoning only for queries that truly need it, rather than applying it universally.
salida 194 tok latencia 4.3 s
DeepSeek V4 Pro superado · 3 sentences
Enabling reasoning causes the model to generate a lengthy internal chain‑of‑thought before it delivers a visible answer, and we are billed for every one of those hidden reasoning tokens just as we are for the final output. In most interactions, the volume of these unseen tokens at least equals the visible response, effectively doubling the total tokens consumed per query. That doubled token consumption translates directly into a doubled per‑query cost, which is why our overall LLM bill doubled.
salida 641 tok (+545 razonamiento) latencia 11.5 s
Cumplimiento de la instrucción (exactamente tres frases, se pueden contar), adaptación al público (registro de CFO) y la diferencia de facturación por razonamiento oculto que dejan ver los contadores de tokens de abajo.
Claude Sonnet 5 superado · 8/8 cases
## The Bug The function has two related off-by-one issues rooted in the same cause: `cur` and `best` are initialized to `0` instead of `1`, treating run lengths as the number of *matches* between adjacent elements rather than the number of *elements* in the run. This means a single-element input never enters the loop (since `range(1, 1)` is empty) and returns `0` instead of the correct answer of `1`. It also means that for any input, the run length is undercounted by exactly one — a run of 3 equal elements only produces 2 "match" increments, so `best` ends up as 2 instead of 3. The claim that it "misses runs that end at the last index" is actually a symptom of this same undercount: the logic does update `best` correctly on every iteration (including the last), but because it's counting matches instead of elements, the final reported value is always one less than the true longest run. […]
salida 536 tok latencia 7.1 s
DeepSeek V4 Pro superado · 8/8 cases
```python def longest_run(xs): if not xs: return 0 best = 1 cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 best = max(best, cur) else: cur = 1 return best ``` **Explanation:** The bug stems from initializing `cur = 0` and only incrementing it when two adjacent elements match, which counts the number of *additional* equal elements rather than the actual run length (which is `cur + 1`). As a result, the returned `best` is always one less than the true longest run—most obviously returning 0 for a single-element list instead of 1. […]
salida 2418 tok (+2131 razonamiento) latencia 35.6 s
Si la corrección funciona de verdad (se puede ejecutar), lo densa que es la explicación y la eficiencia en tokens en una tarea acotada.
Claude Sonnet 5 superado · 5/5 fields, guidance null
```json { "company": "Meridian Robotics", "quarter": "Q3", "revenue_usd_m": 412, "growth_pct": 11.5, "guidance": null } ```
salida 348 tok latencia 5.3 s
DeepSeek V4 Pro superado · 5/5 fields, guidance null
{ "company": "Meridian Robotics", "quarter": "September quarter", "revenue_usd_m": 412, "growth_pct": "eleven and change", "guidance": null }
salida 1204 tok (+1153 razonamiento) latencia 19.9 s
Respeto del esquema (sin campos inventados), tentación de alucinar (la guidance se omite a propósito) y diferencias entre las vías de salida estructurada.
Claude Sonnet 5 superado · 123 words, 0 banned, 1 question
## Introducing Cross-Provider Prompt Caching We're rolling out a new caching layer for our API gateway that works across every major LLM provider you connect through it. Instead of resending identical prompts and paying full price each time, the gateway recognizes repeated requests and serves cached responses in milliseconds—regardless of whether you're routing to OpenAI, Anthropic, or Google. What does this mean for your bill and your latency? Both drop, often significantly, especially for teams running high-volume, repetitive workloads like customer support bots or batch content generation. The cache is configurable per route, with adjustable TTLs and invalidation rules, so you stay in control of freshness versus cost. Available now for all Pro and Enterprise plans. Check your dashboard to enable it today.
salida 259 tok latencia 4.8 s
DeepSeek V4 Pro sin respuesta que evaluar · no answer text within 16,384 tokens (all of it went to thinking)
El modelo no devolvió ningún texto de respuesta: todo el presupuesto de tokens se fue en razonamiento oculto.
salida 8193 tok (+8192 razonamiento) latencia 106.2 s
Respeto de las restricciones (límite de palabras, lista de palabras prohibidas, una única pregunta), sello de estilo y control de la longitud.
Cambia de uno a otro con una sola línea
Los dos ids aparecen en todas las pestañas de abajo; lo único que cambia es el par de líneas resaltadas. El endpoint, la clave y la estructura de la solicitud son los mismos.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.chat.completions.create(
model="claude-sonnet-5",
# model="deepseek-v4-pro", # descomenta esta línea, comenta la de arriba
messages=[{"role": "user", "content": "Summarize this diff"}],
reasoning_effort="medium",
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.chat.completions.create({
model: "claude-sonnet-5",
// model: "deepseek-v4-pro", // descomenta esta línea, comenta la de arriba
messages: [{ role: "user", content: "Summarize this diff" }],
reasoning_effort: "medium",
});
console.log(resp.choices[0].message.content);curl https://synthorai.io/v1/chat/completions \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
# "model": "deepseek-v4-pro", # descomenta esta línea, comenta la de arriba
"messages": [{"role": "user", "content": "Hello"}],
"reasoning_effort": "medium"
}'package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
resp, _ := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Model: "claude-sonnet-5",
// Model: "deepseek-v4-pro", // descomenta esta línea, comenta la de arriba
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Summarize this diff"),
},
ReasoningEffort: openai.ReasoningEffortMedium,
})
fmt.Println(resp.Choices[0].Message.Content)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.models.ReasoningEffort;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
ChatCompletion resp = client.chat().completions().create(
ChatCompletionCreateParams.builder()
.model("claude-sonnet-5")
// .model("deepseek-v4-pro") // descomenta esta línea, comenta la de arriba
.addUserMessage("Summarize this diff")
.reasoningEffort(ReasoningEffort.MEDIUM)
.build());
System.out.println(resp.choices().get(0).message().content().orElse(""));Preguntas frecuentes
¿Cuál es más barato, Claude Sonnet 5 o DeepSeek V4 Pro?
DeepSeek V4 Pro es más barato en Entrada / 1M tokens ($1.32 frente a $2, una diferencia de 1.5×). En otras filas puede ser al revés: la tabla de arriba recoge todas las tarifas, y el coste real depende de tu combinación de uso.
¿Puedo hacer pruebas A/B de Claude Sonnet 5 frente a DeepSeek V4 Pro sin dos integraciones?
Sí. Los dos se sirven desde el mismo endpoint compatible con OpenAI y con una sola clave API. Para cambiar de uno a otro basta con tocar una línea, el nombre del modelo, así que puedes mandar una parte del tráfico a cada uno y comparar directamente las facturas.
¿Admiten Claude Sonnet 5 y DeepSeek V4 Pro caché de prompts?
Sí. Los dos cobran las lecturas de caché por debajo de su tarifa de entrada, así que las cargas de trabajo que reutilizan un prefijo ya cacheado cuestan menos de lo que sugieren los precios de lista. Las tarifas exactas de lectura de caché están en la tabla de precios de arriba.