> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Kimi Chat Completion API Solicitação e Uso

> Kimi API guide - Ace Data Cloud

Kimi é uma série de modelos de IA lançada pela Face Oculta da Lua. O `kimi-k3` atualmente recomendado é voltado para programação de longo prazo, Agentes, raciocínio complexo e trabalho de conhecimento, podendo ser chamado através da API de Chat Completions compatível com OpenAI.

Este documento descreve principalmente o fluxo de uso da API Kimi Chat Completion, permitindo que utilizemos facilmente a funcionalidade de diálogo oficial do Kimi.

## Fluxo de Solicitação

Para usar a API Kimi Chat Completion, primeiro acesse o [Painel de Controle da Ace Data Cloud](https://platform.acedata.cloud/console/applications) para obter seu Token de API, que deve ser guardado para uso futuro.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, onde será convidado a se registrar e logar; após a conclusão, você será retornado automaticamente à página atual.

**Um Token de API é suficiente para acessar todos os serviços da plataforma, não sendo necessário solicitar um para cada serviço individualmente.** A primeira solicitação oferece um crédito gratuito, permitindo uma experiência sem custo; quando o crédito estiver baixo, você pode recarregar o saldo geral no [painel de controle](https://platform.acedata.cloud/console/coin).

> 📘 Documentação Completa: [Kimi Chat Completion API →](https://platform.acedata.cloud/documents/kimi-chat-completions)

## Uso Básico

Em seguida, você pode preencher os conteúdos correspondentes na interface, como mostrado na imagem:

<p>
  <img src="https://cdn.acedata.cloud/ej5ozg.png" width="400" className="m-auto" />
</p>

Ao usar esta interface pela primeira vez, é necessário preencher pelo menos três conteúdos: `authorization`, que pode ser selecionado diretamente na lista suspensa; `model`, que é usado para escolher o modelo Kimi, recomendando-se o uso de `kimi-k3`; `messages`, que é um array de mensagens de diálogo, onde cada mensagem contém `role` e `content`, sendo que `role` suporta `user`, `assistant`, `system` e `tool`.

Você também pode notar que há um código de chamada correspondente gerado à direita, que pode ser copiado e executado diretamente, ou você pode clicar no botão "Try" para testar.

<p>
  <img src="https://cdn.acedata.cloud/six7e3.png" width="400" className="m-auto" />
</p>

Abaixo está a resposta real do K3 obtida usando `reasoning_effort: max` (campos de extensão não utilizados foram omitidos):

```json theme={null}
{
  "id": "msg_2D4Btbg1WgvkNE3tCYkR4xGA",
  "object": "chat.completion",
  "created": 1784466588,
  "model": "kimi-k3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Olá! Como posso ajudá-lo hoje?"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 86,
    "completion_tokens": 206,
    "total_tokens": 292
  }
}
```

O resultado retornado contém vários campos, descritos a seguir:

* `id`, que é o ID gerado para esta tarefa de diálogo, usado para identificar exclusivamente esta tarefa de diálogo.
* `model`, que é o modelo Kimi escolhido no site oficial.
* `choices`, que contém as informações de resposta fornecidas pelo Kimi para a pergunta.
* `usage`: informações estatísticas sobre os tokens utilizados nesta pergunta e resposta.

O campo `choices` contém as informações de resposta do Kimi, onde `choices` é a informação específica da resposta do Kimi, como mostrado na imagem.

<p>
  <img src="https://cdn.acedata.cloud/tv9rul.png" width="400" className="m-auto" />
</p>

Pode-se observar que o campo `content` dentro de `choices` contém o conteúdo específico da resposta do Kimi; o K3 também pode retornar `reasoning_content`, que é usado para indicar o processo de raciocínio.

## Intensidade de Raciocínio do K3

O `kimi-k3` sempre ativa o raciocínio. O corpo da solicitação suporta o campo `reasoning_effort` no nível superior, sendo que o único valor suportado atualmente é `max`; se este campo for omitido, o valor padrão também será `max`. `standard`, `high` ou outras strings podem ser aceitas de forma mais flexível por algumas implementações, mas não garantem alterar o comportamento do raciocínio, portanto, não confie nisso.

```bash theme={null}
curl https://api.acedata.cloud/kimi/chat/completions \
  -H "Authorization: Bearer $ACEDATACLOUD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [{"role": "user", "content": "Revise este código e forneça uma solução de correção"}],
    "reasoning_effort": "max"
  }'
```

Ao usar o SDK da OpenAI, você pode passar diretamente este campo:

```python theme={null}
response = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "Projete uma fila de tarefas confiável"}],
    reasoning_effort="max",
)
```

Em diálogos de múltiplas rodadas e chamadas de ferramentas, você deve retornar a mensagem completa do assistente da rodada anterior para `messages`, incluindo `reasoning_content` e `tool_calls`.

### Referência Oficial

* [Thinking Effort](https://platform.kimi.ai/docs/guide/use-thinking-effort): explica que o Kimi K3 sempre ativa o raciocínio, sendo que o único valor suportado atualmente para `reasoning_effort` é `max`.
* [Model Parameter Reference](https://platform.kimi.ai/docs/api/models-overview): compara os parâmetros de raciocínio, janelas de contexto e diferenças nas chamadas de ferramentas entre as séries K3 e K2.
* [Create Chat Completion](https://platform.kimi.ai/docs/api/chat): solicitações, respostas e definições de campos OpenAPI do Chat Completions oficial da Moonshot.

## Resposta em Fluxo

Esta interface também suporta respostas em fluxo, o que é muito útil para integração em páginas da web, permitindo que a página exiba o efeito de exibição palavra por palavra.

Se você deseja retornar a resposta em fluxo, pode alterar o parâmetro `stream` no cabeçalho da solicitação para `true`.

A modificação é mostrada na imagem, mas o código de chamada precisa ter as alterações correspondentes para suportar a resposta em fluxo.

<p>
  <img src="https://cdn.acedata.cloud/a3nzpw.png" width="400" className="m-auto" />
</p>

Após alterar `stream` para `true`, a API retornará os dados JSON correspondentes linha por linha, e em nível de código, precisamos fazer as modificações necessárias para obter os resultados linha por linha.

Código de exemplo em Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/kimi/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "kimi-k3",
    "messages": [{"role":"user","content":"Olá"}],
    "reasoning_effort": "max",
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Abaixo estão trechos do início, raciocínio, corpo, fim e dados de uso da resposta em fluxo real do K3 Max:

```json theme={null}
data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"reasoning_content":"O"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"content":"Olá"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[],"usage":{"prompt_tokens":172,"completion_tokens":168,"total_tokens":340}}

data: [DONE]
```

Pode-se ver que a resposta contém muitos `data`, onde `data` dentro de `choices` é o conteúdo da resposta mais recente, consistente com o conteúdo apresentado anteriormente. `choices` é o novo conteúdo da resposta, que você pode integrar ao seu sistema. Além disso, o término da resposta em fluxo é determinado pelo conteúdo de `data`; se o conteúdo for `[DONE]`, isso indica que a resposta em fluxo foi completamente finalizada. O resultado retornado de `data` possui vários campos, descritos a seguir:

* `id`, o ID gerado para esta tarefa de diálogo, usado para identificar exclusivamente esta tarefa de diálogo.
* `model`, o modelo escolhido do site oficial da Kimi.
* `choices`, as informações de resposta fornecidas pela Kimi em relação à pergunta.

JavaScript também é suportado, como no exemplo de código de chamada em fluxo do Node.js abaixo:

```javascript theme={null}
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "kimi-k3",
    "messages": [{"role":"user","content":"Olá"}],
    "stream": true
  })
};

fetch("https://api.acedata.cloud/kimi/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Exemplo de código em Java:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "kimi-k3");
jsonObject.put("messages", [{"role":"user","content":"Olá"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.acedata.cloud/kimi/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
```

Outras linguagens podem ser adaptadas de forma semelhante, o princípio é o mesmo.

## Diálogo em várias rodadas

Se você deseja integrar a funcionalidade de diálogo em várias rodadas, precisa enviar múltiplas perguntas no campo `messages`, exemplos específicos de múltiplas perguntas são mostrados na imagem abaixo:

<p>
  <img src="https://cdn.acedata.cloud/g85v2a.png" width="400" className="m-auto" />
</p>

Exemplo de código de chamada em Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/kimi/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "kimi-k3",
    "messages": [{"role":"assistant","content":"Olá! Como posso ajudá-lo hoje?"},{"role":"user","content":"Qual modelo você é?"}],
    "reasoning_effort": "max"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Ao enviar múltiplas perguntas, você pode facilmente realizar diálogos em várias rodadas. Abaixo está a resposta real obtida do K3 Max para essa solicitação (campos de extensão não utilizados foram omitidos):

```json theme={null}
{
  "id": "msg_Rqp8nPGBDHWwBlL4VpxuafOp",
  "object": "chat.completion",
  "created": 1784466628,
  "model": "kimi-k3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Eu sou Kimi, um assistente de IA desenvolvido pela Moonshot AI (月之暗面). Eu não tenho um identificador de versão de modelo público específico para compartilhar daqui."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 134,
    "completion_tokens": 346,
    "total_tokens": 480
  }
}
```

Pode-se ver que as informações contidas em `choices` são consistentes com o conteúdo de uso básico, incluindo a resposta específica da Kimi para múltiplos diálogos, permitindo que você responda às perguntas correspondentes com base em múltiplos conteúdos de diálogo.

## Tratamento de erros

Ao chamar a API, se ocorrer um erro, a API retornará o código de erro e a mensagem correspondente. Por exemplo:

* `400 token_mismatched`: Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
* `400 api_not_implemented`: Solicitação inválida, possivelmente devido a parâmetros ausentes ou inválidos.
* `401 invalid_token`: Não autorizado, token de autorização inválido ou ausente.
* `429 too_many_requests`: Muitas solicitações, você excedeu o limite de taxa.
* `500 api_error`: Erro interno do servidor, algo deu errado no servidor.

### Exemplo de resposta de erro

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusão

Através deste documento, você já entendeu como usar a API Kimi Chat Completion para implementar diálogos comuns, respostas em fluxo, diálogos em várias rodadas, e como controlar a intensidade de raciocínio do K3 através de `reasoning_effort`.
