---
title: "Chat Completions API"
description: "Solicitação mínima, campos comuns, leitura de respostas e uso de conversas com várias rodadas para POST /v1/chat/completions."
headingIds: {"Solicitação Mínima":"section-1","Campos Comuns":"section-2","Como Ler a Resposta":"section-3","Conversa com Várias Rodadas":"section-4","Streaming e Próximos Passos":"section-5"}
---

<aside className="docs-publication" data-pagefind-ignore>

Documentação mantida por [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Fontes e correções](https://1zheai.com/en/editorial/).

Encontrou um erro? [Contate o suporte](mailto:support@1zheai.com) com o endereço da página e uma descrição. Não envie chaves de API ou credenciais de conta.

</aside>
Comece por este endpoint ao usar um cliente compatível com OpenAI, ou quando você já tem o código `chat.completions.create`. O endereço completo é `https://1zheai.com/v1/chat/completions`; para SDKs, preencha a Base URL apenas até `/v1`.

## Solicitação Mínima

Primeiro defina `ONEZHE_API_KEY` no seu terminal para a chave de API deste site. O modelo abaixo deve existir na [sua lista de modelos disponíveis ](/pt/docs/api-models/).

```bash
curl --fail-with-body --connect-timeout 10 --max-time 120 \
  https://1zheai.com/v1/chat/completions \
  -H "Authorization: Bearer $ONEZHE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "messages": [{"role": "user", "content": "请用一句中文解释 DNS 的作用。"}]
  }'
```

`--fail-with-body` faz com que erros HTTP retornem um código de saída diferente de zero, preservando o corpo do erro; requer curl 7.76 ou posterior. Em versões antigas, use `-i` primeiro para ver o código de status.

## Campos Comuns

| Campo | Tipo | Uso |
| --- | --- | --- |
| `model` | string | Obrigatório. Copie o ID do modelo deste site; não adicione prefixos de fornecedores de outras plataformas. |
| `messages` | array | Obrigatório. Envie a pergunta desta rodada e as mensagens de histórico a serem mantidas, em ordem. |
| `messages[].role` | string | Para conversa normal use `user` / `assistant`; o suporte ao papel de instrução do sistema depende do modelo. |
| `messages[].content` | string ou array de blocos de conteúdo | Use uma string para texto simples primeiro; entrada de imagem requer que o modelo suporte o bloco de conteúdo correspondente. |
| `stream` | boolean | Quando definido como `true`, leia SSE em vez de tratar a resposta inteira como um único JSON. |
| `temperature` | number | Opcional; alguns modelos de raciocínio não permitem modificá-lo. Omita-o primeiro e depois verifique item por item. |
| `tools` / `tool_choice` | array / string ou object | Opcional; tanto o modelo quanto o upstream devem suportá-los. A execução real da ferramenta é realizada pelo seu programa. |

Os parâmetros de limite de saída variam por modelo. Não troque mecanicamente os parâmetros de `max_tokens` do Claude, `max_output_tokens` do Responses e do Chat Completions; consulte os requisitos do modelo selecionado e, em um erro 400, verifique primeiro o corpo do erro.

## Como Ler a Resposta

O resultado em texto simples está localizado em `choices[0].message.content`. O motivo de finalização está em `choices[0].finish_reason`; quando chamadas de ferramenta são retornadas, o texto pode estar vazio e você precisa ler `message.tool_calls`. O `id`, `model` e `usage` da resposta podem ser usados para verificar esta chamada.

Abaixo é mostrada apenas a estrutura na qual você precisa prestar atenção; campos e números omitidos não representam resultados reais da solicitação:

```json
{
  "id": "example-completion",
  "object": "chat.completion",
  "model": "gpt-5.6-sol",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "DNS 将域名解析为网络地址。"},
    "finish_reason": "stop"
  }]
}
```

## Conversa com Várias Rodadas

O endpoint não se lembra automaticamente da rodada anterior apenas porque você reutiliza a mesma chave de API. Envie o histórico que deseja manter junto:

```json
{
  "model": "gpt-5.6-sol",
  "messages": [
    {"role": "user", "content": "我正在学习 DNS。"},
    {"role": "assistant", "content": "我们可以从域名解析开始。"},
    {"role": "user", "content": "它和 HTTP 有什么区别？"}
  ]
}
```

Quanto mais longo o histórico, maior a solicitação. Os aplicamentos devem recortar ou resumir de acordo com os limites de contexto e manter pares completos de chamada e resultado de ferramentas.

## Streaming e Próximos Passos

Após adicionar `"stream": true`, os deltas de texto vêm de `choices[].delta.content`. Alguns eventos não têm texto ou `choices` está vazio, então você deve verificar ao ler; veja [Saída em Streaming ](/pt/docs/streaming/) para detalhes.

Execute o [exemplo completo em Python / Node.js ](/pt/docs/code-examples/) diretamente, ou mude para [Responses ](/pt/docs/api-responses/); para parâmetros nativos do Claude veja [Messages ](/pt/docs/api-messages/).
