Introdução
Kimi K3 é o modelo de agentes de contexto longo da Moonshot AI, disponível aqui como um endpoint compatível com OpenAI em /v1/chat/completions. Ele lê até 1.000.000 de tokens em no máximo 256 mensagens e pode devolver até 1.048.576 tokens numa resposta.
A requisição tem sete campos: messages, max_tokens, tools, tool_choice, response_format, reasoning_effort e stop. O esforço aceita low, high ou max e começa em max; temperature e top_p são fixados pela Moonshot e rejeitados aqui. As mensagens podem levar partes de texto e image_url, e as respostas chegam por Server-Sent Events.
Recursos e destaques
reasoning_effort é o único controle
Com a amostragem fixada pela Moonshot, o que você controla é quanto o modelo trabalha: low para turnos mecânicos curtos, high para revisões comuns, max para migrações e demonstrações. Um valor de amostragem copiado de outro modelo falha na hora em vez de ser ignorado em silêncio, então uma requisição significa a mesma coisa em qualquer ambiente.
Ler um pacote, devolver um arquivo
Um milhão de tokens de entrada e até 1.048.576 de volta: o código entra inteiro e um arquivo reescrito pode voltar inteiro. Cada passada continua vendo o resto do repositório, justamente o contexto que pipelines picados costumam perder.
Texto e imagens na mesma mensagem
Uma mensagem de usuário pode misturar partes de texto e image_url com detail em auto, low ou high, e cada parte é medida como tokens de entrada. A captura de uma tela com erro e o código que a renderiza podem ir juntos para o modelo; não existe parte de vídeo.
Parâmetros da requisição
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
messages | Sim | No máximo 256 turnos ordenados. O conteúdo é uma string ou um array de partes: text e |
max_tokens | Não | Limita a resposta a 1.048.576. O padrão de 32.768 ainda pode cortar em silêncio a reescrita de um arquivo inteiro — dimensione pelo entregável. |
reasoning_effort | Não | low, high ou max, padrão max — os níveis e o padrão que a Moonshot documenta para o K3, então uma requisição que omite o campo já sai no ajuste mais cuidadoso. |
stop | Não | Até 4 sequências de no máximo 32 bytes cada, como string ou array. A resposta termina assim que o modelo escreve uma delas, e o texto correspondente não é devolvido. pelo menos 1 caracteres · pelo menos 1 itens · no máximo 4 itens |
tools | Não | Até 128 definições de função, declaradas na primeira requisição de um laço. no máximo 128 itens |
tool_choice | Não | auto deixa o modelo pular uma chamada; required força uma; none proíbe todas. |
response_format | Não | Peça um objeto JSON quando a saída for dado estruturado em vez de prosa. |
Preços
Entrada $2.70 / Saída $13.50 por 1 milhão de tokens
Casos de uso
Reescritas do repositório inteiro, arquivo por arquivo
Envie todos os arquivos de um pacote e peça um arquivo migrado por vez, em vez de uma descrição do diff. O teto de resposta alto devolve inteiro até um arquivo grande, então nada se perde num corte de continuação no meio de uma função.
Loops de agente com superfície fixa
Declare até 128 tools, deixe tool_choice em auto e rode o loop. Fixe reasoning_effort para o loop inteiro e a única coisa que muda entre as iterações é a conversa, o que mantém legível o rastro do agente quando algo dá errado.
Traduzir e reestruturar livros inteiros
Carregue um manuscrito completo e um glossário e peça um capítulo traduzido ou reestruturado por chamada, enquanto o modelo continua vendo o resto do livro. Termos e nomes ficam consistentes porque os capítulos anteriores estão na mesma requisição.
Guia de prompt e dicas práticas
Escolha o nível de esforço de propósito
Omitir reasoning_effort já equivale a max: o ajuste mais cuidadoso e o que mais gasta tokens de saída. Decida por tarefa: max para uma migração ou uma demonstração, high para revisões, low para turnos mecânicos curtos.
Peça o artefato, não a descrição dele
POST https://api.spicyapi.ai/v1/chat/completions com {"model": "moonshot/kimi-k3", "messages": [{"role": "system", "content": "Return the migrated files in full. No commentary, no diffs, no omitted regions."}, {"role": "user", "content": "<every file in the package>"}], "max_tokens": 120000}. Dimensione max_tokens pelo arquivo que você espera receber: o padrão de 32.768 pode cortar a reescrita de um arquivo inteiro sem dar erro.
Streaming e limites
Uma chamada sem streaming em max com a janela cheia pode demorar, então use streaming ou dimensione o timeout do cliente. A janela é de 1.000.000 de tokens, max_tokens acima de 1.048.576 é inválido e temperature ou top_p no corpo falham na validação.
Início rápido da API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "moonshot/kimi-k3/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
Consulte a referência da API para autenticação, esquema completo, polling e tratamento de erros.





