Convidar amigos e ganhar tokens grátis!Saiba mais

Criar Chat Completion - DeepSeek v3.1 Controle de Raciocínio (Streaming)

Esta API é usada para criar conversas de chat com o modelo DeepSeek v3.1. Suporta saída em streaming (SSE) e controle detalhado sobre a capacidade de raciocínio profundo (Thinking) do modelo.

Detalhes da API

  • Status da API: Lançada (Released)
  • Método HTTP: POST
  • Endpoint: https://api.codingplanx.ai/v1/chat/completions

Cabeçalhos da Requisição (Headers)

ParâmetroObrigatórioTipoExemploDescrição
Content-TypeSimStringapplication/jsonFormato dos dados
AcceptSimStringapplication/jsonFormato de resposta aceito
AuthorizationNãoStringBearer {{YOUR_API_KEY}}Credencial de autenticação (geralmente obrigatório na chamada real)

(Nota: O cabeçalho X-Forwarded-Host está desativado no momento)


Corpo da Requisição (Request Body)

Content-Type: application/json

ParâmetroObrigatórioTipoDescrição
modelSimStringID do modelo a ser utilizado. Exemplo: deepseek-v3-1-250821
messagesSimArray of ObjectsLista de mensagens da conversa.
? roleSimStringPapel do remetente da mensagem (ex: system, user, assistant).
? contentSimStringConteúdo específico da mensagem.
max_tokensNãoIntegerNúmero máximo de tokens que o modelo pode gerar na resposta (completion) em uma única requisição. O comprimento total de tokens (entrada + saída) é limitado pelo contexto do modelo.
temperatureNãoNumberTemperatura de amostragem, entre 0 e 2. Valores mais altos (ex: 0.8) tornam a saída mais aleatória; valores mais baixos (ex: 0.2) tornam a saída mais focada e determinística.
streamNãoBooleanSe definido como true, enviará incrementos de mensagens via streaming no formato SSE (Server-Sent Events). O fluxo de mensagens termina com data: [DONE].
stream_optionsNãoObjectOpções relacionadas à saída em streaming. Só pode ser definido quando o parâmetro stream for true.
? include_usageNãoBooleanSe definido como true, um chunk adicional será transmitido logo antes do data: [DONE] final. O campo usage neste chunk exibe as estatísticas de uso de tokens de toda a requisição.
thinkingNãoObjectModelos com capacidade de raciocínio profundo suportam o controle de ativação dessa funcionalidade através deste campo.
? typeNãoStringenabled: Força a ativação do raciocínio profundo.<br>disabled: Força a desativação.<br>auto: O modelo decide automaticamente.

Exemplo de Requisição

{
  "model": "deepseek-v3-1-250821",
  "max_tokens": 1000,
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "你好"
    }
  ],
  "temperature": 1.0,
  "stream": true,
  "stream_options": {
    "include_usage": true
  },
  "thinking": {
    "type": "enabled"
  }
}

Corpo da Resposta (Response)

Código de Status HTTP: 200 OK Content-Type: application/json

(Nota: Quando stream: true, o formato de retorno é um fluxo de dados SSE, onde cada data chunk é uma string JSON com a estrutura abaixo. O modelo abaixo representa a estrutura JSON padrão para requisições não-streaming ou após a montagem completa do fluxo)

CampoTipoDescrição
idStringIdentificador único da requisição.
objectStringTipo do objeto, geralmente chat.completion ou chat.completion.chunk.
createdIntegerTimestamp de criação (em segundos).
choicesArray of ObjectsLista de respostas geradas pelo modelo.
? indexIntegerO índice desta resposta na lista choices.
? messageObjectObjeto da mensagem de resposta gerada (em requisições streaming, geralmente é delta).
   ? roleStringPapel (geralmente assistant).
   ? contentStringConteúdo específico da resposta.
? finish_reasonStringMotivo pelo qual a geração parou (ex: stop, length).
usageObjectEstatísticas de uso de Tokens.
? prompt_tokensIntegerQuantidade de Tokens consumidos no prompt.
? completion_tokensIntegerQuantidade de Tokens consumidos na geração do conteúdo.
? total_tokensIntegerQuantidade total de Tokens consumidos.

Exemplo de Resposta (JSON)

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

Perguntas Frequentes (FAQs)

Q1: Como obter as estatísticas de consumo de Tokens (Usage) em requisições de streaming (SSE)? A1: Você precisa definir stream como true no corpo da requisição e, simultaneamente, configurar stream_options: {"include_usage": true}. Dessa forma, antes do identificador de fim de fluxo SSE data: [DONE] ser enviado, o servidor enviará um bloco de dados adicional. O array choices deste bloco estará vazio, mas o campo usage conterá as estatísticas completas de Tokens.

Q2: Qual é a diferença entre enabled e auto no parâmetro thinking? A2:

  • enabled: Força o modelo a realizar um "raciocínio profundo (Chain of Thought)" antes de retornar a resposta final. Isso geralmente resulta em deduções de maior qualidade, mas pode aumentar o tempo de resposta (latência do primeiro caractere) e o consumo de Tokens de saída.
  • auto: Delega a decisão ao modelo. O modelo julgará automaticamente se há necessidade de raciocínio profundo com base na complexidade da pergunta nas suas messages.

Q3: Por que a requisição retornou o erro 401 Unauthorized? A3: Isso geralmente ocorre devido a uma falha na sua autenticação. Por favor, verifique se o campo Authorization no cabeçalho da sua requisição (Request Header) está preenchido corretamente no formato Bearer {{YOUR_API_KEY}}, e garanta que sua API Key seja válida e não esteja expirada.

Q4: Ao ativar o raciocínio profundo (thinking), o conteúdo do processo de raciocínio será retornado? A4: Com base na implementação padrão do formato compatível com a OpenAI, no caso de saída em streaming, o conteúdo do raciocínio profundo pode ser retornado dentro de identificadores específicos (como a tag <think>...</think>) ou através de um campo específico no chunk. Ao fazer o parse dos dados de streaming no front-end, preste atenção em processar o conteúdo do processo de raciocínio no content, para exibir o efeito visual (UI) de "pensando" aos usuários.

Q5: O que significa receber finish_reason: "length"? A5: Isso indica que a saída do modelo atingiu o limite max_tokens que você definiu, ou atingiu o limite máximo da janela de contexto do próprio modelo, fazendo com que a resposta fosse truncada. Se a resposta estiver incompleta, você pode tentar aumentar o valor de max_tokens.