Kimi K2.7 Code vs Qwen3.7 Plus
Cuál usar y cuándo
Ambos aceptan texto, imagen y vídeo de entrada y devuelven texto, y ambos cubren chat, código, razonamiento y herramientas, así que la diferencia es precio y margen: qwen3.7-plus va a $0.4 de entrada y $1.6 de salida frente a $0.95 y $4 de kimi-k2.7-code, unas 2.4x más barato en entrada y 2.5x en salida, con un contexto de 1000000 tokens, 65536 de salida máxima y un indicador de contexto largo. Elige qwen3.7-plus para pasadas de repositorio completo o documentos largos, por lecturas de caché más baratas ($0.08 frente a $0.19), y cuando necesites apagar el pensamiento. Escoge kimi-k2.7-code si quieres su razonamiento siempre activo y 256000 tokens bastan.
Benchmarks
Publicado por los proveedores: Alibaba (Qwen) Anthropic ByteDance DeepSeek Google MiniMax Moonshot OpenAI Tencent Z.ai
Precios
| Kimi K2.7 Code | Qwen3.7 Plus | Δ | |
|---|---|---|---|
| Entrada / 1M tokens | $0.95 | $0.4 | 2.4× |
| Salida / 1M tokens | $4 | $1.6 | 2.5× |
| Lectura de caché / 1M tokens | $0.19 | $0.08 | 2.4× |
| Escritura en caché | - | 1.25x | - |
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
| Kimi K2.7 Code | Qwen3.7 Plus | |
|---|---|---|
| Uso de herramientas | sí | sí |
| Control del razonamiento | siempre activo | configurable |
| Salida estructurada | - | sí |
| Caché de prompts | implícito (automático) | implícito + explícito |
| Duración de la caché | no publicado | explicit: 5m, reset on hit |
| Prefijo mínimo en caché | no publicado | 1024 tokens |
Especificaciones
| Kimi K2.7 Code | Qwen3.7 Plus | |
|---|---|---|
| Modalidades de entrada | texto imagen vídeo | texto imagen vídeo |
| Modalidades de salida | texto | texto |
| Lanzamiento | 2026-06 | 2026-06-01 |
| Ventana de contexto | 256K | 1M |
| Salida máxima | 33K | 66K |
| Parámetro de razonamiento |
|
|
| Valores aceptados | type
keep
| enable_thinking
thinking_budget
preserve_thinking
|
| Valor por defecto | thinking on with Preserved Thinking on | on the Qwen3.7 Plus series is hybrid thinking with thinking enabled by default, and preserve_thinking is off |
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: Kimi K2.7 Code · Qwen3.7 Plus
Un mismo prompt en los dos modelos, medido a través de la pasarela
Kimi K2.7 Code superado · 3 sentences
Enabling reasoning mode causes the model to generate an internal chain-of-thought before producing each answer, and that hidden reasoning text is billed like any other output. Those extra reasoning tokens typically add up to much more than the final response itself, so every API call now costs significantly more than before. Because our overall usage volume did not change, the doubled bill reflects that each query consumes roughly twice as many billable tokens.
salida 259 tok (+174 razonamiento) latencia 5.4 s
Qwen3.7 Plus superado · 3 sentences
Enabling reasoning requires the model to generate extensive internal "thinking" tokens to process complex logic before delivering a final answer. Because our vendor charges us per token consumed, this hidden computational overhead effectively doubles our output volume for the exact same number of user requests. Consequently, our costs have doubled because we are now paying for the model's increased processing time to achieve higher-quality, more accurate results.
salida 1428 tok (+1345 razonamiento) latencia 25.2 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.
Kimi K2.7 Code 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 ``` The bug is that the function counts *transitions* between equal neighbors instead of counting the items themselves, so a single-element list never enters the loop and returns `0` instead of `1`. Likewise, resetting `cur` to `0` on a mismatch forgets the current item that starts a new run, which causes runs that end at the last index to be undercounted. Initializing both `best` and `cur` to `1` and resetting `cur` to `1` fixes both issues.
salida 410 tok (+222 razonamiento) latencia 9.4 s
Qwen3.7 Plus superado · 8/8 cases
## Fixed Code ```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 else: cur = 1 best = max(best, cur) return best ``` ## Bug Explanation The function has two related bugs rooted in how it counts run lengths. First, `cur` is initialized to `0` and only incremented on matches, so it counts the number of *transitions* between equal elements rather than the total elements in the run—a run of N identical items only reaches `cur = N − 1`, undercounting by one. This also causes the single-element case to return `0`, since the loop never executes and `cur` never increments. […]
salida 2317 tok (+2005 razonamiento) latencia 40.5 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.
Kimi K2.7 Code superado · 5/5 fields, guidance "withheld pending the Q4 close"
```json { "company": "Meridian Robotics", "quarter": "September quarter", "revenue_usd_m": 412, "growth_pct": 11, "guidance": "withheld pending the Q4 close" } ```
salida 721 tok (+663 razonamiento) latencia 13.2 s
Qwen3.7 Plus superado · 5/5 fields, guidance null
{ "company": "Meridian Robotics", "quarter": "September", "revenue_usd_m": 412, "growth_pct": 11, "guidance": null }
salida 1807 tok (+1750 razonamiento) latencia 31.6 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.
Kimi K2.7 Code superado · 120 words, 0 banned, 1 question
We're introducing Prompt Cache for our API Gateway, a new capability that stores prompt responses across multiple AI providers. By caching replies, you reduce redundant calls, lower latency, and cut costs without changing how you build. Teams using several model providers can now reuse identical prompt results instantly, keeping traffic consistent and budgets predictable. Responses are keyed by provider, model, and exact prompt, so you always get the right result. Configure TTL, hit thresholds, and eviction rules from a single dashboard. It fits into your existing routing and requires no code changes. Setup takes minutes and works with your current endpoints. Want to see how much latency and spend you can trim? Check the docs to enable Prompt Cache today.
salida 2375 tok (+2235 razonamiento) latencia 38.6 s
Qwen3.7 Plus superado · 120 words, 0 banned, 1 question
Introducing PromptCache, our new API gateway feature designed to store and reuse prompts across multiple artificial intelligence providers. Have you ever noticed how repeatedly sending identical queries drains your budget and increases latency? PromptCache solves this by intelligently storing responses at the gateway level. When your application requests the same prompt from a different provider, the system instantly returns the cached result. This drastically reduces API costs and accelerates response times for your users. You can configure custom expiration times and set specific fallback rules for each vendor. You must stop paying twice for the exact same computation. Please upgrade your entire infrastructure today and experience much faster and cheaper integrations without changing a single line of your application code.
salida 4453 tok (+4312 razonamiento) latencia 76.8 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="kimi-k2.7-code",
# model="qwen3.7-plus", # 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: "kimi-k2.7-code",
// model: "qwen3.7-plus", // 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": "kimi-k2.7-code",
# "model": "qwen3.7-plus", # 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: "kimi-k2.7-code",
// Model: "qwen3.7-plus", // 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("kimi-k2.7-code")
// .model("qwen3.7-plus") // 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, Kimi K2.7 Code o Qwen3.7 Plus?
Qwen3.7 Plus es más barato en Entrada / 1M tokens ($0.4 frente a $0.95, una diferencia de 2.4×). 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 Kimi K2.7 Code frente a Qwen3.7 Plus 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 Kimi K2.7 Code y Qwen3.7 Plus 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.