Claude Haiku 5.5 vs Kimi K2.7 Code
Qual usar e quando
claude-haiku-5-5 é mais barato e maior em todos os limites: $0.1 de entrada e $0.5 de saída contra $0.95 e $4 do kimi-k2.7-code, 9.5x e 8x menos, leituras de cache a $0.01 contra $0.19, contexto de 1000000 de tokens contra 256000 e 128000 tokens de saída contra 32768. Ele cobra 5x nos prompts acima de 100000 tokens e, mesmo assim, continua mais barato. kimi-k2.7-code aceita entrada de vídeo, e seu raciocínio não pode ser desligado. Escolha claude-haiku-5-5 pelo custo e para entradas longas e kimi-k2.7-code quando quiser o modelo de programação da Moonshot.
Benchmarks
Claude Haiku 5.5: o provedor não publicou resultados de benchmark.
Publicado pelos provedores: Alibaba (Qwen) Moonshot OpenAI Z.ai
Preços
| Claude Haiku 5.5 | Kimi K2.7 Code | Δ | |
|---|---|---|---|
| Entrada / 1M tokens | $0.1 | $0.95 | 0.11× |
| Saída / 1M tokens | $0.5 | $4 | 0.13× |
| Leitura de cache / 1M tokens | $0.01 | $0.19 | 0.053× |
| Escrita de cache | 1.25x (5m) / 2x (1h) | - | - |
Tarifas do catálogo em tempo real, lidas no momento do build; a página de cada modelo traz a tabela de preços atual.
Onde cada um fica: preço de entrada por 1M tokens entre os 78 modelos de chat com esta unidade de cobrança (escala logarítmica)
Capacidades
| Claude Haiku 5.5 | Kimi K2.7 Code | |
|---|---|---|
| Uso de ferramentas | sim | sim |
| Controle de raciocínio | configurável | sempre ativo |
| Saída estruturada | sim | - |
| Cache de prompts | explícito (você marca o prefixo) | implícito (automático) |
| Tempo de vida do cache | 5m default, 1h option | não publicado |
| Prefixo mínimo em cache | 1024 tokens | não publicado |
Especificações
| Claude Haiku 5.5 | Kimi K2.7 Code | |
|---|---|---|
| Modalidades de entrada | texto imagem | texto imagem vídeo |
| Modalidades de saída | texto | texto |
| Lançamento | 2026-10-07 | 2026-06 |
| Corte de conhecimento | 2026-06 | - |
| Janela de contexto | 1M | 256K |
| Saída máxima | 128K | 33K |
| Parâmetro de raciocínio | output_config.effort |
|
| Valores aceitos | output_config.effort
| type
keep
|
| Padrão | medium | thinking on with Preserved Thinking on |
As especificações são transcritas da documentação de cada provedor; quando um provedor não publica um dado, a linha é omitida, e não inferida. Fontes completas: Claude Haiku 5.5 · Kimi K2.7 Code
Um prompt, os dois modelos, medidos pelo gateway
Claude Haiku 5.5 passou · 3 sentences
Enabling reasoning makes the model generate a long internal chain of thought before its answer, and those thinking tokens are billed as output tokens, which cost several times more than input tokens. The model often produces many times more output per request than it did without reasoning, so the per-call cost rises even when the visible answer looks about the same length. Because that extra spend scales with every request, the bill roughly doubled, and we can control it by setting reasoning budgets, using reasoning only for tasks that need it, or routing simpler requests to a non-reasoning model.
saída 332 tok (+159 raciocínio) latência 2.9 s
Kimi K2.7 Code passou · 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.
saída 259 tok (+174 raciocínio) latência 5.4 s
Se a instrução é seguida (exatamente três frases, dá para contar), a adequação ao público (tom para um CFO) e a diferença de cobrança causada pelo raciocínio oculto, que os medidores de tokens abaixo deixam à mostra.
Claude Haiku 5.5 passou · 8/8 cases
```python def longest_run(xs): if not xs: return 0 best = 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 ``` The bug is that `cur` counts adjacent equal *pairs*, not run *elements*. A run of k equal items produces k−1 matching pairs, so the function returns one less than the true length, and a single-element input produces no pairs at all, so it returns 0 instead of 1. Resetting `cur` to 0 on a mismatch compounds this by starting every run one step behind. The fix starts both `cur` and `best` at 1 (a non-empty list always has a run of at least one element), resets `cur` to 1 on a mismatch, and updates `best` after every element rather than only inside the equal-branch. The empty-list guard keeps the function from returning 1 for `[]`. […]
saída 1012 tok (+591 raciocínio) latência 6.0 s
Kimi K2.7 Code passou · 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.
saída 410 tok (+222 raciocínio) latência 9.4 s
Se a correção está mesmo certa (dá para executar), a densidade da explicação e a eficiência em tokens em uma tarefa bem delimitada.
Claude Haiku 5.5 passou · 5/5 fields, guidance "Formal guidance withheld pending the Q4 "
```json { "company": "Meridian Robotics", "quarter": "September quarter", "revenue_usd_m": null, "growth_pct": 11, "guidance": "Formal guidance withheld pending the Q4 close" } ``` Notes: The text gives revenue as 412 but doesn't state the currency, so I left `revenue_usd_m` as null. Growth is "eleven and change," so 11 is an approximation.
saída 725 tok (+572 raciocínio) latência 4.6 s
Kimi K2.7 Code passou · 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" } ```
saída 721 tok (+663 raciocínio) latência 13.2 s
Aderência ao schema (sem campos inventados), pressão para alucinar (o texto diz explicitamente que o guidance não foi divulgado) e diferenças no caminho de saída estruturada.
Claude Haiku 5.5 passou · 120 words, 0 banned, 1 question
**Introducing Prompt Cache Sync, the newest feature in GatewayOne.** Teams routing requests across OpenAI, Anthropic, and Google have often paid to process the same long system prompts again and again. Now the gateway stores those prompts once and reuses them wherever they appear, regardless of provider. Repeated context is matched by content hash, so cached prefixes return faster and cost less, with no changes to your application code. How much could this save your team? Enable Prompt Cache Sync from the dashboard, and your next billing report will show the difference. Cache entries follow your existing retention settings and can be purged per project at any time. Availability begins this week for all Scale and Enterprise plans worldwide. Start today.
saída 2164 tok (+1929 raciocínio) latência 9.9 s
Kimi K2.7 Code passou · 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.
saída 2375 tok (+2235 raciocínio) latência 38.6 s
Respeito às restrições (limite de palavras, lista de palavras proibidas, uma única pergunta), a marca de estilo de cada modelo e o controle do tamanho.
Troque de um para o outro mudando uma linha
Os dois ids estão em todas as abas abaixo; o par de linhas destacado é a única alteração. O endpoint, a chave e o formato da requisição são os mesmos.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.chat.completions.create(
model="claude-haiku-5-5",
# model="kimi-k2.7-code", # descomente esta linha, comente a linha acima
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-haiku-5-5",
// model: "kimi-k2.7-code", // descomente esta linha, comente a linha acima
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-haiku-5-5",
# "model": "kimi-k2.7-code", # descomente esta linha, comente a linha acima
"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-haiku-5-5",
// Model: "kimi-k2.7-code", // descomente esta linha, comente a linha acima
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-haiku-5-5")
// .model("kimi-k2.7-code") // descomente esta linha, comente a linha acima
.addUserMessage("Summarize this diff")
.reasoningEffort(ReasoningEffort.MEDIUM)
.build());
System.out.println(resp.choices().get(0).message().content().orElse(""));Perguntas frequentes
Qual é mais barato, Claude Haiku 5.5 ou Kimi K2.7 Code?
Claude Haiku 5.5 sai mais barato na linha “Entrada / 1M tokens” ($0.1 contra $0.95, 9.5× de diferença). Outras linhas podem pender para o outro lado: a tabela acima mostra todos os preços, e o custo real depende do seu mix de uso.
Posso fazer um teste A/B de Claude Haiku 5.5 contra Kimi K2.7 Code sem duas integrações?
Sim. Os dois são servidos pelo mesmo endpoint compatível com OpenAI, com uma única chave de API. Para trocar, basta mudar uma linha, a string do modelo; assim você pode direcionar uma parte do tráfego para cada um e comparar as contas diretamente.
Claude Haiku 5.5 e Kimi K2.7 Code suportam cache de prompts?
Sim. Os dois cobram as leituras de cache abaixo da tarifa de entrada, então cargas de trabalho com prefixo já em cache custam menos do que os preços de tabela sugerem. Os valores exatos de leitura de cache estão na tabela de preços acima.