Saltar para o conteúdo principal
OpenAI ChatGPT é um sistema de diálogo AI muito poderoso, que pode gerar respostas fluentes e naturais em apenas alguns segundos ao inserir palavras-chave. O ChatGPT se destaca na indústria por sua excelente capacidade de compreensão e geração de linguagem, e hoje, o ChatGPT já está amplamente aplicado em vários setores e áreas, com sua influência se tornando cada vez mais significativa. Seja em diálogos diários, escrita criativa, ou consultoria profissional, programação de código, o ChatGPT pode fornecer assistência inteligente impressionante, aumentando significativamente a eficiência e a criatividade do trabalho humano. Este documento apresenta principalmente o fluxo de uso da API OpenAI Chat Completion, que nos permite usar facilmente a funcionalidade de diálogo do OpenAI ChatGPT oficial.

Fluxo de Solicitação

Para usar a API OpenAI Chat Completion, primeiro você pode acessar a página OpenAI Chat Completion API e clicar no botão “Acquire” para obter as credenciais necessárias para a solicitação: Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, convidando-o a se registrar e fazer login. Após o registro e login, você será redirecionado de volta para a página atual. Na primeira solicitação, haverá um crédito gratuito disponível, permitindo o uso gratuito dessa API.

Uso Básico

Em seguida, você pode preencher o conteúdo correspondente na interface, como mostrado na imagem:

Na primeira vez que usar essa interface, precisamos preencher pelo menos três conteúdos: um é authorization, que pode ser selecionado diretamente na lista suspensa. O outro parâmetro é model, que é a categoria do modelo do OpenAI ChatGPT que escolhemos usar; aqui temos principalmente 20 modelos, e os detalhes podem ser vistos nos modelos que fornecemos. O último parâmetro é messages, que é um array de palavras-chave que inserimos, representando a possibilidade de enviar várias palavras-chave ao mesmo tempo, onde cada palavra-chave contém role e content, sendo que role representa o papel do questionador, e oferecemos três identidades: user, assistant, system. O outro content é o conteúdo específico da nossa pergunta. Você também pode notar que há um código de chamada correspondente gerado à direita, que você pode copiar e executar diretamente, ou pode clicar no botão “Try” para testar. Parâmetros opcionais comuns:
  • max_tokens: limita o número máximo de tokens na resposta única.
  • temperature: gera aleatoriedade, entre 0-2, quanto maior o valor, mais disperso.
  • n: quantas respostas candidatas gerar de uma vez.
  • response_format: configuração do formato de retorno.

Após a chamada, descobrimos que o resultado retornado é o seguinte:
{
  "id": "chatcmpl-Cmd6uwSxN75F4PAdQSFEO8f2QPs4E",
  "object": "chat.completion",
  "created": 1765706120,
  "model": "gpt-5.2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What can I help you with today?",
        "refusal": null,
        "annotations": []
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 13,
    "total_tokens": 20,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default",
  "system_fingerprint": null
}
O resultado retornado contém vários campos, descritos a seguir:
  • id, o ID da tarefa de diálogo gerada, usado para identificar exclusivamente essa tarefa de diálogo.
  • model, o modelo do OpenAI ChatGPT escolhido.
  • choices, as informações de resposta que o ChatGPT fornece para as palavras-chave.
  • usage: informações estatísticas sobre os tokens para esta pergunta e resposta.
Entre eles, choices contém as informações de resposta do ChatGPT, onde podemos ver como mostrado na imagem.

Podemos ver que o campo content dentro de choices contém o conteúdo específico da resposta do ChatGPT.

Resposta em Fluxo

Essa interface também suporta resposta em fluxo, o que é muito útil para integração com 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.

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

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

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

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
O efeito de saída é o seguinte:
data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "Oi", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " olá", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "!", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " Como", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " posso", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " ajudar", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " você", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " hoje", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "?", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "finish_reason": "stop", "index": 0}], "created": 1721007349, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: [DONE]

Pode-se ver que a resposta contém muitos data, onde data contém as choices, que são 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 em data possui vários campos, conforme descrito 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 do OpenAI ChatGPT.
  • choices, as informações de resposta que o ChatGPT forneceu em resposta à pergunta.
JavaScript também é suportado, como mostrado no código de chamada em fluxo abaixo:
const options = {
  method: "post",
  headers: {
    accept: "application/json",
    authorization: "Bearer {token}",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-4",
    messages: [{ role: "user", content: "olá" }],
    stream: true,
  }),
};

fetch("https://api.acedata.cloud/openai/chat/completions", options)
  .then((response) => response.json())
  .then((response) => console.log(response))
  .catch((err) => console.error(err));
Exemplo de código em Java:
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gpt-4");
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/openai/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 conforme necessário, 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 vários termos de pergunta no campo messages, exemplos específicos de vários termos de pergunta são mostrados na imagem abaixo:

Código de exemplo em Python:
import requests

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

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

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"Olá"},{"role":"assistant","content":"Oi! Como posso ajudá-lo hoje?"},{"role":"user","content":"O que eu disse agora?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Ao enviar várias perguntas, é possível realizar um diálogo em várias rodadas e obter a seguinte resposta:
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Você disse, \"Olá.\""
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721323012,
  "id": "chatcmpl-NWZmOTA5MDlkZjBjNDRjNGEwMzRjYzA5NmM1MzQwMWY",
  "model": "gpt-4",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 6,
    "total_tokens": 37
  }
}
Pode-se ver que as informações contidas em choices são consistentes com o conteúdo de uso básico, incluindo o conteúdo específico da resposta do ChatGPT a múltiplos diálogos, permitindo assim responder a perguntas correspondentes com base em múltiplos conteúdos de diálogo.

Integração com OpenAI-Python

O serviço da API de conclusão de chat do OpenAI é alimentado pelo serviço oficial do OpenAI, que pode ser consultado no OpenAI-Python. Este artigo irá apresentar brevemente como usar o serviço fornecido oficialmente.
  1. Primeiro, é necessário configurar um ambiente local de Python, este processo pode ser pesquisado no Google.
  2. Baixe e instale um ambiente de desenvolvimento, como o editor VSCode.
  3. Configure a variável de ambiente OpenAI.
  • No diretório do projeto, crie um arquivo chamado .env e salve.
  • Conteúdo do arquivo .env:
OPENAI_API_KEY="sk-xxx"
OPENAI_BASE_URL="https://api.acedata.cloud/openai"  # Lembre-se: se você usar a chave do OpenAI oficial, não use este endereço.
Substitua sk-xxx pela sua própria chave. OPENAI_BASE_URL é a interface proxy para acessar o OpenAI.
  1. Instale os pacotes de dependência do projeto.
pip install openai
No Mac OS, o comando é:
pip3 install openai
  1. Crie um arquivo de código de exemplo.
Suponha que criamos um código de exemplo index.py, com o seguinte conteúdo:
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

response = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "olá",
        }
    ],
    model="gpt-4",
)

print(response.text)

Modelo de Navegação

Os modelos gpt-3.5-browsing e gpt-4-browsing diferem de outros modelos, pois podem realizar buscas na internet com base nas perguntas e retornar os resultados ajustados para você. Este artigo irá demonstrar a funcionalidade de navegação com um exemplo específico, e você pode preencher o conteúdo correspondente na interface da API de conclusão de chat do OpenAI, como mostrado na imagem:

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

Após a chamada, descobrimos que o resultado retornado é o seguinte:
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Para as últimas notícias na China hoje, você pode verificar os principais sites de notícias, como:\n\n- [BBC News China](https://www.bbc.com/news/world/asia/china)\n- [CNN China News](https://edition.cnn.com/china)\n- [Reuters China](https://www.reuters.com/news/archive/china-news)\n\nEssas fontes terão informações atualizadas sobre eventos atuais na China."
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721009347,
  "id": "chatcmpl-YzA0M2RjZDVkYThlNDkxNTkzOThmZWQ4OGMzNzdhNzA",
  "model": "gpt-4-browsing",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 325,
    "completion_tokens": 82,
    "total_tokens": 407
  }
}
Pode-se ver que as informações de resposta dentro de choices são obtidas com base na consulta à internet e também fornecem links relevantes. As informações de resposta dentro de choices devem ser renderizadas usando a sintaxe markdown para obter a melhor experiência, refletindo assim a poderosa vantagem da funcionalidade de navegação do nosso modelo.

Modelo Visual

gpt-4o é um modelo de linguagem de grande porte multimodal desenvolvido pela OpenAI, que adiciona capacidade de compreensão visual ao GPT-4. Este modelo pode processar simultaneamente entradas de texto e imagem, realizando compreensão e geração multimodal. O processamento de texto usando o modelo gpt-4o é consistente com o conteúdo de uso básico mencionado anteriormente. Abaixo, será apresentada uma breve introdução sobre como usar a capacidade de processamento de imagem do modelo. A capacidade de processamento de imagem do modelo gpt-4o é principalmente ativada adicionando um campo type ao conteúdo original de content, permitindo saber se o que está sendo enviado é texto ou imagem, e assim utilizar a capacidade de processamento de imagem do modelo gpt-4o. A seguir, serão abordadas duas maneiras de chamar essa funcionalidade: usando Curl e Python.
  • Método de script Curl
curl -X POST 'https://api.acedata.cloud/openai/chat/completions' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "O que há nesta imagem?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ]
  }'
  • Método de script Python
```python
import requests

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

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

payload = {
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text", "text": "O que há nesta imagem?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
                    }
                },
            ],
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Então, pode-se obter o resultado abaixo, onde as informações dos campos são consistentes com o texto acima, conforme segue:
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4-vision-preview",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "\n\nEsta imagem mostra um calçadão de madeira se estendendo por um pântano verdejante."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
Pode-se ver que o conteúdo da resposta é baseado na imagem, portanto, através das duas maneiras acima, é possível utilizar facilmente as capacidades de processamento de texto e imagem do modelo gpt-4-vision. Além do gpt-4o, há um modelo de custo mais baixo chamado gpt-4o-mini. O gpt-4o-mini é a mais nova geração de modelos de linguagem de grande porte desenvolvidos pela OpenAI, que não só tem uma resposta rápida, mas também é mais barato e suporta multimodalidade. O uso da funcionalidade de visão pode ser referenciado no conteúdo de uso do modelo gpt-4o acima.

Modelo de Desenho GPT-4o

Exemplo de solicitação:
{
  "model": "gpt-4o-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Gere uma imagem no estilo Ghibli e coloque um chapéu"
        },
        {
          "type": "file_url",
          "file_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exemplo de resultado:
{
  "id": "chatcmpl-89CXTr5EHi7WgiO3qSzWxvmqwfryP",
  "object": "chat.completion.chunk",
  "model": "gpt-4o-image",
  "created": 1744395060,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\n  \"prompt\": \"Uma jovem com cabelo preto longo vestindo um vestido branco em um cenário ao ar livre cênico. A imagem está no estilo da animação do Studio Ghibli, apresentando cores suaves e detalhes delicados. Ela está usando um chapéu estiloso e fofo, com um sorriso caloroso e alegre. O fundo mostra uma vegetação exuberante e uma atmosfera pacífica, com a luz do sol filtrando através das árvores.\",\n  \"size\": \"1024x1024\"\n}\n\n\n![file-96TSnzJ6MipkZwCmmYEZSA](https://filesystem.site/cdn/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n[Baixar⏬](https://filesystem.site/cdn/download/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n\nAqui está a imagem criada no estilo do Studio Ghibli, apresentando uma jovem vestindo um vestido branco e um chapéu estiloso em um cenário ao ar livre cênico. A atmosfera suave e quente é capturada com detalhes gentis e cores vibrantes."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 70,
    "completion_tokens": 17,
    "total_tokens": 87
  }
}

Tratamento de Erros

Ao chamar a API, se ocorrer um erro, a API retornará o código de erro e a informação 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 de Conclusão de Chat da OpenAI para implementar facilmente a funcionalidade de conversa do OpenAI ChatGPT. Esperamos que este documento possa ajudá-lo a integrar e usar melhor essa API. Se tiver alguma dúvida, entre em contato com nossa equipe de suporte técnico.