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

# Criar solicitação de conversa de chat

Gera uma resposta do modelo com base na conversa de chat especificada

## Cabeçalhos da solicitação

<ParamField header="Content-Type" type="string" required={true}>
  Valores enumerados: `application/json`
</ParamField>

<ParamField header="Authorization" type="string" required={true}>
  Formato de autenticação Bearer: Bearer \{\{API Key}}.
</ParamField>

## Corpo da solicitação

<ParamField body="model" type="string" required={true}>
  O nome do modelo a ser usado.
</ParamField>

<ParamField body="messages" type="object[]" required={true}>
  Lista de mensagens que compõem a conversa atual.

  <Expandable title="Propriedades" defaultOpen={false}>
    <ParamField body="content" type="string | object[] | null" required={true}>
      O conteúdo da mensagem. Todas as mensagens exigem content; para mensagens assistant que contêm chamadas de função, content pode ser null.

      Você pode usar os seguintes parâmetros de acordo com as diferentes modalidades.

      <Frame>
        <div class="param_frame">
          <Tabs>
            <Tab title="Conteúdo de texto">
              <p class="param_text">Opção 1:</p>
              <p class="param_text">Você pode usar o tipo string para representar o conteúdo de texto da mensagem.</p>

              <br />

              <p class="param_text">Opção 2:</p>
              <p class="param_text">Use uma matriz de partes de conteúdo, object\[]. Os campos detalhados são os seguintes:</p>

              <ParamField body="type" type="string" required={true}>
                O tipo da parte de conteúdo; neste caso, `text`.
              </ParamField>

              <ParamField body="text" type="string" required={true}>
                O conteúdo de texto.
              </ParamField>
            </Tab>

            <Tab title="Conteúdo de imagem">
              <p class="param_text">Disponível apenas para modelos de linguagem visual.</p>
              <p class="param_text">Matriz de partes de conteúdo, object\[]. Os campos detalhados são os seguintes:</p>

              <ParamField body="type" type="string" required={true}>
                O tipo da parte de conteúdo; neste caso, `image_url`.
              </ParamField>

              <ParamField body="image_url" type="string" required={true}>
                <Expandable title="Propriedades" defaultOpen={true}>
                  <ParamField body="url" type="string" required={true}>
                    A URL da imagem ou os dados da imagem codificados em base64 (modelos da série claude só oferecem suporte a dados de imagem codificados em base64).
                  </ParamField>
                </Expandable>
              </ParamField>
            </Tab>

            <Tab title="Conteúdo de vídeo">
              <p class="param_text">Disponível apenas para modelos que oferecem suporte a vídeo.</p>
              <p class="param_text">Matriz de partes de conteúdo, object\[]. Os campos detalhados são os seguintes:</p>

              <ParamField body="type" type="string" required={true}>
                O tipo da parte de conteúdo; neste caso, `video_url`.
              </ParamField>

              <ParamField body="video_url" type="string" required={true}>
                <Expandable title="Propriedades" defaultOpen={true}>
                  <ParamField body="url" type="string" required={true}>
                    A URL do vídeo.
                  </ParamField>
                </Expandable>
              </ParamField>
            </Tab>
          </Tabs>
        </div>
      </Frame>
    </ParamField>

    <ParamField body="role" type="string" required={true}>
      A função do autor da mensagem. Pode ser system, user ou assistant.

      Valores enumerados: `system`, `user`, `assistant`
    </ParamField>

    <ParamField body="name" type="string">
      O nome do autor desta mensagem. Pode conter a-z, A-Z, 0-9 e sublinhados, com comprimento máximo de 64 caracteres.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="max_tokens" type="integer" required={true}>
  O número máximo de tokens a serem gerados na conclusão.

  Se sua instrução (mensagens anteriores) mais o número de tokens de max\_tokens exceder o comprimento de contexto do modelo, o comportamento dependerá de context\_length\_exceeded\_behavior. Por padrão, max\_tokens será reduzido para caber na janela de contexto, em vez de retornar um erro.
</ParamField>

<ParamField body="stream" type="boolean | null" default={false}>
  Se deve retornar o progresso parcial em streaming. Se definido, os tokens serão enviados como eventos enviados pelo servidor (SSE) exclusivos de dados à medida que ficarem disponíveis, e o stream será encerrado com uma mensagem `data: [DONE]`.
</ParamField>

<ParamField body="stream_options" type="object | null">
  Opções para respostas em streaming. Defina isto apenas quando stream estiver definido como true.

  <Expandable title="Propriedades" defaultOpen={false}>
    <ParamField body="include_usage" type="boolean">
      Se definido, transmitirá em streaming um chunk adicional antes da mensagem data: \[DONE]. O campo usage neste chunk mostra as estatísticas de uso de tokens de toda a solicitação, enquanto o campo choices estará sempre vazio. Todos os outros chunks também conterão um campo usage, mas com valor null.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="n" type="integer | null" default={1}>
  O número de conclusões a serem geradas para cada prompt.

  Observação: como este parâmetro gera muitas conclusões, ele pode consumir rapidamente sua cota de tokens. Use com cuidado e garanta que você tenha configurações razoáveis para max\_tokens e stop.

  Intervalo obrigatório: `1 < x < 128`
</ParamField>

<ParamField body="seed" type="integer | null">
  Se especificado, nosso sistema fará o melhor esforço para realizar a amostragem de forma determinística, de modo que solicitações repetidas com o mesmo seed e os mesmos parâmetros retornem os mesmos resultados.
</ParamField>

<ParamField body="frequency_penalty" type="number | null" default={0}>
  Valores positivos penalizam novos tokens com base na frequência existente deles no texto, reduzindo a probabilidade de o modelo repetir as mesmas linhas palavra por palavra.

  Se o objetivo for apenas reduzir ligeiramente amostras repetidas, valores razoáveis ficam entre 0.1 e 1. Se o objetivo for suprimir fortemente a repetição, o coeficiente pode ser aumentado para 2, mas isso pode reduzir significativamente a qualidade da amostra. Valores negativos podem ser usados para aumentar a probabilidade de repetição.

  Consulte também presence\_penalty, usado para penalizar tokens que apareceram pelo menos uma vez a uma taxa fixa.

  Intervalo obrigatório: `-2 < x < 2`
</ParamField>

<ParamField body="presence_penalty" type="number | null" default={0}>
  Valores positivos penalizam novos tokens com base em eles já terem aparecido no texto, aumentando a probabilidade de o modelo falar sobre novos tópicos.

  Se o objetivo for apenas reduzir ligeiramente amostras repetidas, valores razoáveis ficam entre 0.1 e 1. Se o objetivo for suprimir fortemente a repetição, o coeficiente pode ser aumentado para 2, mas isso pode reduzir significativamente a qualidade da amostra. Valores negativos podem ser usados para aumentar a probabilidade de repetição.

  Consulte também `frequency_penalty`, usado para penalizar tokens a uma taxa crescente com base na frequência em que aparecem.

  Intervalo obrigatório: `-2 < x < 2`
</ParamField>

<ParamField body="repetition_penalty" type="number | null">
  Aplica uma penalidade a tokens repetidos para desencorajar ou incentivar repetições. Um valor de 1.0 significa que não há penalidade, permitindo repetição livre. Valores acima de 1.0 penalizam a repetição, reduzindo a probabilidade de tokens repetidos. Valores entre 0.0 e 1.0 recompensam a repetição, aumentando a chance de tokens repetidos. Para obter um bom equilíbrio, normalmente recomenda-se usar o valor 1.2. Observe que a penalidade se aplica à saída gerada e ao prompt em modelos somente decodificadores.

  Intervalo obrigatório: `0 < x < 2`
</ParamField>

<ParamField body="stop" type="string | null">
  Até 4 sequências nas quais a API interromperá a geração de tokens adicionais. O texto retornado conterá a sequência de parada.
</ParamField>

<ParamField body="temperature" type="number | null" default={1}>
  A temperatura de amostragem usada, entre 0 e 2. Valores mais altos, como 0.8, tornam a saída mais aleatória, enquanto valores mais baixos, como 0.2, a tornam mais focada e determinística.

  Geralmente recomendamos alterar isto ou `top_p`, mas não ambos.

  Intervalo obrigatório: `0 < x < 2`
</ParamField>

<ParamField body="top_p" type="number | null">
  Um método alternativo à temperatura de amostragem, chamado amostragem de núcleo, no qual o modelo considera os resultados de tokens com massa de probabilidade top\_p. Assim, 0.1 significa considerar apenas os tokens que compõem os 10% superiores da massa de probabilidade. Geralmente recomendamos alterar isto ou a temperatura, mas não ambos.

  Intervalo obrigatório: `0 < x <= 1`
</ParamField>

<ParamField body="top_k" type="integer | null">
  A amostragem Top-k é outro método de amostragem no qual os k próximos tokens mais prováveis são filtrados, e a massa de probabilidade é redistribuída apenas entre esses k próximos tokens. O valor de k controla o número de candidatos a próximo token em cada etapa durante a geração de texto.

  Intervalo obrigatório: `1 < x < 128`
</ParamField>

<ParamField body="min_p" type="number | null">
  Representa a probabilidade mínima para que tokens sejam considerados, em relação à probabilidade do token mais provável.

  Intervalo obrigatório: `0 <= x <= 1`
</ParamField>

<ParamField body="logit_bias" type="map[string, integer] | null" required={false}>
  Modifica a probabilidade de tokens especificados aparecerem na conclusão.

  Aceita um objeto JSON que mapeia tokens para valores de viés associados entre -100 e 100.
  Matematicamente, o viés é adicionado aos logits gerados pelo modelo antes da amostragem. O efeito exato varia conforme o modelo.

  Por exemplo, definir `"logit_bias":{"1024": 6}` aumentará a probabilidade dos tokens com ID de token 1024.
</ParamField>

<ParamField body="logprobs" type="boolean | null" default={false}>
  Se deve retornar as probabilidades logarítmicas dos tokens de saída. Se true, retorna a probabilidade logarítmica de cada token de saída no conteúdo da mensagem.
</ParamField>

<ParamField body="top_logprobs" type="integer | null">
  Um inteiro entre 0 e 20 que especifica o número de tokens mais prováveis a retornar em cada posição de token, cada um com uma probabilidade logarítmica associada. Se este parâmetro for usado, `logprobs` deve ser definido como true.

  Intervalo obrigatório: `0 <= x <= 20`
</ParamField>

<ParamField body="tools" type="object[] | null">
  Lista de ferramentas que o modelo pode chamar. Atualmente, apenas funções são suportadas como ferramentas. Use isto para fornecer uma lista de funções para as quais o modelo pode gerar entradas JSON.

  Saiba mais sobre chamadas de função no [guia de chamadas de função](/pt/docs/model/llm-function-calling).

  <Expandable title="Propriedades" defaultOpen={false}>
    <ParamField body="type" type="string" required={true}>
      O tipo da ferramenta.

      Tipo compatível: `function`
    </ParamField>

    <ParamField body="function" type="object" required={true}>
      <Expandable title="Propriedades" defaultOpen={false}>
        <ParamField body="name" type="string" required={true}>
          O nome da função a ser chamada. Deve ser a-z, A-Z, 0-9, ou conter sublinhados e hifens, com comprimento máximo de 64.
        </ParamField>

        <ParamField body="description" type="string | null">
          A descrição da função, usada pelo modelo para escolher quando e como chamar a função.
        </ParamField>

        <ParamField body="parameters" type="object | null">
          Os parâmetros aceitos pela função, descritos como um objeto JSON Schema. Para a documentação do formato, consulte a [referência do JSON Schema](https://json-schema.org/understanding-json-schema/).
        </ParamField>

        <ParamField body="strict" type="boolean" default={false}>
          Se deve habilitar a adesão estrita ao esquema ao gerar chamadas de função. Se definido como true, o modelo seguirá o esquema exato definido no campo parameters.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="response_format" type="object | null">
  Permite forçar o modelo a gerar um formato de saída específico.

  Defina como `{ "type": "json_schema", "json_schema": {...} }` para habilitar saída estruturada, garantindo que o modelo corresponda ao JSON schema fornecido por você.

  Defina como `{ "type": "json_object" }` para habilitar o modo JSON legado, garantindo que a mensagem gerada pelo modelo seja um JSON válido. Para modelos que oferecem suporte a isso, recomenda-se usar `json_schema`.

  <Expandable title="Propriedades" defaultOpen={false}>
    <ParamField body="type" type="string" required={true} default="text">
      Valores enumerados: `text`, `json_object`, `json_schema`
    </ParamField>

    <ParamField body="json_schema" type="object | null">
      Formato de resposta JSON Schema. Usado para gerar respostas JSON estruturadas.

      Suportado apenas quando `type` está definido como `json_schema`, e também obrigatório quando `type` está definido como `json_schema`.

      Saiba mais no [guia de saída estruturada](/pt/docs/model/llm-structured-outputs).

      <Expandable title="Propriedades" defaultOpen={false}>
        <ParamField body="name" type="string" required={true}>
          O nome do formato de resposta. Deve ser a-z, A-Z, 0-9, ou conter sublinhados e hifens, com comprimento máximo de 64.
        </ParamField>

        <ParamField body="description" type="string | null">
          A descrição do formato de resposta, usada pelo modelo para determinar como responder nesse formato.
        </ParamField>

        <ParamField body="schema" type="object | null">
          O esquema do formato de resposta, descrito como um objeto JSON Schema. Saiba como criar JSON schema [aqui](https://json-schema.org/specification).

          Tipos compatíveis: `string`, `number`, `integer`, `boolean`, `array`, `object`, `enum`, `anyOf`.
        </ParamField>

        <ParamField body="strict" type="boolean" default={false}>
          Se deve habilitar a adesão estrita ao esquema ao gerar a saída. Se definido como true, o modelo sempre seguirá o esquema exato definido no campo schema. Quando strict é true, apenas um subconjunto do JSON Schema é suportado.

          Se você habilitar saída estruturada fornecendo `strict: true` e chamar a API com um JSON Schema não suportado, receberá um erro.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="separate_reasoning" type="boolean | null" default={false}>
  Se deve separar o raciocínio de "content" no campo "reasoning\_content".

  Modelos compatíveis:

  * `deepseek/deepseek-r1-turbo`
</ParamField>

<ParamField body="enable_thinking" type="boolean | null" default={true}>
  Controla a alternância entre os modos de pensamento e sem pensamento.

  Modelos compatíveis:

  * `zai-org/glm-4.5`
</ParamField>

## Informações da resposta

<ResponseField name="choices" type="object[]" required={true}>
  Lista de opções de conclusão de chat.

  <Expandable title="Propriedades" defaultOpen={false}>
    <ResponseField name="finish_reason" type="string" required={true}>
      O motivo pelo qual o modelo parou de gerar tokens. Será "stop" se o modelo atingir um ponto de parada natural ou uma sequência de parada fornecida; será "length" se atingir o número máximo de tokens especificado na solicitação.

      Opções disponíveis: `stop`, `length`
    </ResponseField>

    <ResponseField name="index" type="integer" required={true}>
      O índice da opção de conclusão de chat.
    </ResponseField>

    <ResponseField name="message" type="object" required={true}>
      <Expandable title="Propriedades" defaultOpen={false}>
        <ResponseField name="role" type="string" required={true}>
          A função do autor desta mensagem.

          Opções disponíveis: `system`, `user`, `assistant`
        </ResponseField>

        <ResponseField name="content" type="string | null">
          O conteúdo da mensagem.
        </ResponseField>

        <ResponseField name="reasoning_content" type="string | null">
          O conteúdo das etapas de raciocínio.

          <Warning>
            Este campo só está disponível quando `separate_reasoning` está definido como true.
          </Warning>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="created" type="integer" required={true}>
  O horário Unix (em segundos) em que a resposta foi gerada.
</ResponseField>

<ResponseField name="id" type="string" required={true}>
  O identificador exclusivo da resposta.
</ResponseField>

<ResponseField name="model" type="string" required={true}>
  O modelo usado para a conclusão de chat.
</ResponseField>

<ResponseField name="object" type="string" required={true}>
  O tipo de objeto, sempre `chat.completion`.
</ResponseField>

<ResponseField name="usage" type="object">
  Estatísticas de uso.

  Para respostas em streaming, o campo usage é incluído no último bloco de resposta retornado.

  <Expandable title="Propriedades" defaultOpen={false}>
    <ResponseField name="completion_tokens" type="integer" required={true}>
      O número de tokens na conclusão gerada.
    </ResponseField>

    <ResponseField name="prompt_tokens" type="integer" required={true}>
      O número de tokens no prompt.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer" required={true}>
      O número total de tokens usados na solicitação (prompt + conclusão).
    </ResponseField>
  </Expandable>
</ResponseField>
