Saltar para o conteúdo principal
Google Gemini é um sistema de diálogo AI muito poderoso, que pode gerar respostas fluentes e naturais em apenas alguns segundos ao inserir palavras-chave. O Gemini pode fornecer assistência inteligente impressionante, aumentando significativamente a eficiência e a criatividade do trabalho humano. Este documento descreve principalmente o processo de uso da API Gemini Chat Completion, que nos permite usar facilmente a funcionalidade de diálogo oficial do Gemini.

Processo de Solicitação

Para usar a API Gemini Chat Completion, primeiro você pode acessar a página Gemini Chat Completion API e clicar no botão “Adquirir” 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á automaticamente retornado à 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 que escolhemos usar no site do Gemini; aqui temos principalmente 6 tipos de modelos, e os detalhes podem ser vistos nos modelos que fornecemos. O último parâmetro é messages, que é um array de palavras-chave que inserimos; é um array que permite o upload simultâneo de várias palavras-chave, onde cada palavra-chave contém role e content, sendo que role representa o papel do questionador, e oferecemos três identidades: user, assistant e 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; você pode copiar o código e executá-lo diretamente ou clicar no botão “Experimente” para testar.

Após a chamada, descobrimos que o resultado retornado é o seguinte:
{
  "id": "chatcmpl-20251122212413908150493uPhjTUO9",
  "model": "gemini-2.5-pro",
  "object": "chat.completion",
  "created": 1763817866,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Eu sou um grande modelo de linguagem, treinado pelo Google.",
        "reasoning_content": "**Meu Raciocínio: Respondendo à Pergunta do Usuário**\n\nOk, aqui está como vou abordar a resposta à pergunta do usuário, \"Qual modelo você é?\". O essencial é ser direto e informativo. Primeiro, preciso deixar claro sobre minha origem. Em seguida, preciso garantir que a explicação seja acessível, dado que o usuário pode não estar familiarizado com jargões técnicos. Preciso explicar o que um \"grande modelo de linguagem\" realmente *faz* e fornecer exemplos relacionáveis. Sei que o usuário pode estar procurando um nome específico, como outros modelos têm, então vou abordar isso diretamente e depois encerrar com um convite para continuar.\n\nEntão, aqui está meu plano:\n\n1.  **Começar com a informação chave:** Vou começar afirmando que sou um grande modelo de linguagem criado pelo Google. Essa é a peça fundamental e mais crítica do quebra-cabeça.\n2.  **Definir o termo técnico:** Em seguida, vou explicar o que é \"grande modelo de linguagem\" em termos simples. Vou explicar o que eu *faço* - processar e gerar texto; como eu *faço* isso - treinando em enormes quantidades de dados textuais; e o *objetivo* - ser capaz de me comunicar como um humano.\n3.  **Fornecer contexto:** Depois disso, para tornar o conceito ainda mais claro, vou fornecer uma lista de exemplos das minhas capacidades. Vou mencionar coisas como responder perguntas, resumir textos, escrever histórias, traduzir idiomas e gerar ideias.\n4.  **Reconhecer a falta de um nome pessoal:** Vou antecipar a provável pergunta sobre um nome de modelo (como ChatGPT) afirmando claramente que não tenho um nome pessoal e que é melhor pensar em mim como um assistente de IA do Google.\n5.  **Encerrar com um convite:** Por último, vou encerrar com uma pergunta simples e amigável para convidar a uma interação adicional e guiar a conversa.\n\nCom essa abordagem, estou confiante de que posso responder com sucesso a essa pergunta importante.\n"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 932,
    "total_tokens": 940,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 8,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 921
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
O resultado retornado contém 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 do site do Gemini escolhido.
  • choices, as informações de resposta fornecidas pelo Gemini para as palavras-chave.
  • usage: informações estatísticas sobre os tokens usados nesta pergunta e resposta.
Entre eles, choices contém as informações de resposta do Gemini, onde choices é a informação específica da resposta do Gemini, como mostrado na imagem.

Pode-se ver que o campo content dentro de choices contém o conteúdo específico da resposta do Gemini.

Resposta em Fluxo

Esta interface também suporta resposta 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.

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/gemini/chat/completions"

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

payload = {
    "model": "gemini-2.5-pro",
    "messages": [{"role":"user","content":"Olá, qual modelo você é?"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
O efeito de saída é o seguinte:
data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"reasoning_content": "**Defina Minha Natureza**\n\nMeu pensamento começou. O usuário quer saber minha natureza, perguntando diretamente \"o que você é?\" O primeiro passo foi simples: identificar a consulta. Agora, lembro da minha identidade fundamental: sou um grande modelo de linguagem. Esta é a verdade central que pretendo transmitir.\n\n\n"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"reasoning_content": "**Aprimorando Minha Resposta**\n\nAdicionei a informação crucial de que fui treinado pelo Google à identidade básica de \"grande modelo de linguagem\". Meu próximo passo é considerar o que significa ser um \"grande modelo de linguagem\" na prática, para que eu possa explicar minhas capacidades principais. Estou focando em fornecer contexto sem entrar em detalhes técnicos específicos ou nomes de modelos. Quero transmitir minha função de uma maneira que o usuário possa entender facilmente.\n\n\n"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"reasoning_content": "**Confirmando Identidade Central**\n\nAgora estou solidificando minha resposta. A consulta do usuário sobre minha afiliação de modelo precisa de uma resposta focada. Identifiquei que \"treinado pelo Google\" é essencial, fornecendo um contexto chave. Estou resistindo à tentação de mencionar nomes de modelos específicos, pois não é relevante. O objetivo é entregar uma declaração direta e precisa. Meu objetivo continua sendo uma resposta clara e concisa, evitando jargões técnicos e indo direto ao ponto relevante.\n\n\n"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {"content": "Eu sou um grande modelo de linguagem, treinado pelo Google."}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": null, "choices": [{"delta": {}, "logprobs": null, "finish_reason": "stop", "index": 0}], "usage": null}

data: {"id": "chatcmpl-20251122214038810722821kNjUTjtr", "object": "chat.completion.chunk", "created": 1763818842, "model": "gemini-2.5-pro", "system_fingerprint": "", "choices": [], "usage": {"prompt_tokens": 8, "completion_tokens": 527, "total_tokens": 535, "prompt_tokens_details": {"cached_tokens": 0, "text_tokens": 8, "audio_tokens": 0, "image_tokens": 0}, "completion_tokens_details": {"text_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 519}, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null, "claude_cache_creation_5_m_tokens": 0, "claude_cache_creation_1_h_tokens": 0}}

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. O fim 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 encerrada. O resultado retornado de 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 Gemini.
  • choices, as informações de resposta fornecidas pelo Gemini em relação à consulta.
JavaScript também é suportado, como mostrado no código de chamada em fluxo para Node.js abaixo:
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "gemini-2.5-pro",
    "messages": [{"role":"user","content":"Olá, qual modelo você é?"}],
    "stream": true
  })
};

fetch("https://api.acedata.cloud/gemini/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", "gemini-2.5-pro");
jsonObject.put("messages", [{"role":"user","content":"Olá, qual modelo você é?"}]);
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/gemini/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 Múltiplas Rodadas

Se você deseja integrar a funcionalidade de diálogo em múltiplas rodadas, precisa enviar vários termos de consulta no campo messages, com exemplos específicos mostrados na imagem abaixo:

Exemplo de código em Python:
import requests

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

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

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

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Ao enviar vários termos de consulta, você pode facilmente implementar diálogos em múltiplas rodadas e obter respostas como a seguinte:
{
  "id": "chatcmpl-20251122214426669120974AKFwnJd1",
  "model": "gemini-2.5-pro",
  "object": "chat.completion",
  "created": 1763819072,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Eu sou um grande modelo de linguagem, treinado pelo Google.",
        "reasoning_content": "Ok, aqui está como eu abordaria isso, pensando como uma IA sofisticada:\n\nPrimeiro, o usuário está perguntando diretamente sobre minha identidade central: \"Qual modelo você é?\" Essa é uma pergunta simples e direta. Minha tarefa principal é fornecer informações precisas e úteis, então preciso responder isso imediatamente.\n\nLogo de cara, eu sei a resposta. Eu *sou* um grande modelo de linguagem. Essa é minha arquitetura fundamental e princípio operacional. Estou construído sobre uma vasta rede de conexões e treinado em um enorme conjunto de dados.\n\nEntão, eu preciso adicionar o contexto necessário. Crucialmente, eu tenho que fornecer a fonte do meu treinamento. Eu *fui* treinado pelo Google. Isso é um identificador chave. Fornece ao usuário informações valiosas sobre minha origem e potenciais preconceitos (embora eu tenha sido treinado para mitigá-los).\n\nAgora eu preciso construir a resposta. Meu objetivo é ser factual, conciso e compreensível.\n\nA resposta sintetizada é algo como: \"Eu sou um grande modelo de linguagem, treinado pelo Google.\"\n\nEu tenho que avaliar a saída: Isso atende aos critérios? É claro. Afirma o que eu sou, inclui uma peça crítica de informação sobre minhas origens e evita jargões. Sem promessas enganosas.\n\nVerificação final: Isso realmente responde à pergunta? Sim. A informação é correta e verdadeira? Sim. É concisa? Absolutamente. O tom é apropriado para qualquer usuário? Sim. E, finalmente, esta é a resposta padrão e aprovada. Excelente.\n"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 16,
    "completion_tokens": 265,
    "total_tokens": 281,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 16,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 254
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null,
    "claude_cache_creation_5_m_tokens": 0,
    "claude_cache_creation_1_h_tokens": 0
  }
}
Pode-se ver que choices contém informações consistentes com o conteúdo básico utilizado, que inclui o conteúdo específico das respostas do Gemini para múltiplos diálogos, permitindo assim responder às perguntas correspondentes com base em múltiplos conteúdos de diálogo.

Modelo Multimodal Gemini-3.0

Exemplo de solicitação:
{
  "model": "gemini-3.0-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Qual é o conteúdo da imagem?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exemplo de resultado:
{
    "id": "chatcmpl-20251206001815715692730UVZe38kB",
    "model": "gemini-3.0-pro",
    "object": "chat.completion",
    "created": 1764951548,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Esta é uma foto de meio corpo de uma jovem mulher ao ar livre.\n\nAqui está a descrição principal do conteúdo da imagem:\n\n*   **Aparência da pessoa**: A garota na foto tem cabelos longos e lisos, de cor preta, com traços delicados e pele clara. Ela está sorrindo suavemente, olhando para a câmera.\n*   **Vestuário**: Ela está vestindo uma blusa de mangas bufantes em tom creme ou pêssego claro, combinada com roupas pretas (parecendo um vestido com alças ou um colete).\n*   **Iluminação e atmosfera**: A luz do sol está vindo do lado esquerdo, iluminando seu cabelo e criando um halo dourado e quente, criando uma atmosfera fresca e bonita.\n*   **Fundo**: O fundo está desfocado, mas pode-se ver que é ao ar livre, com uma estrada vazia (asfaltada) e árvores verdes ao lado.\n\nDe modo geral, esta foto transmite uma sensação de doçura, sol e a imagem da garota da vizinhança."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 1092,
        "completion_tokens": 1271,
        "total_tokens": 2363,
        "prompt_tokens_details": {
            "cached_tokens": 0,
            "text_tokens": 4,
            "audio_tokens": 0,
            "image_tokens": 0
        },
        "completion_tokens_details": {
            "text_tokens": 0,
            "audio_tokens": 0,
            "reasoning_tokens": 1072
        },
        "input_tokens": 0,
        "output_tokens": 0,
        "input_tokens_details": null,
        "claude_cache_creation_5_m_tokens": 0,
        "claude_cache_creation_1_h_tokens": 0
    }
}
Claro, você também pode enviar links de vídeos, o input específico é o seguinte:
{
  "model": "gemini-3.0-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Qual é o conteúdo do vídeo?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/58yioe.mp4"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exemplo de resultado:
{
    "id": "chatcmpl-20251206002711949677736JC9yL8AE",
    "model": "gemini-3.0-pro",
    "object": "chat.completion",
    "created": 1764952060,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "O conteúdo deste vídeo é cheio de diversão, mostrando principalmente um **gato laranja** correndo confiantemente em uma estrada rural ao entardecer.\n\nOs detalhes específicos são os seguintes:\n\n1.  **Conteúdo da imagem**:\n    *   O protagonista é um gato laranja com listras.\n    *   O fundo é o momento do pôr do sol (ou do amanhecer), com uma luz dourada e suave. Ao lado da estrada, há uma cerca de madeira e um campo aberto, e ao longe, a silhueta de um pedestre.\n    *   A câmera foi filmada em um ângulo baixo, às vezes filmando o gato correndo em direção à câmera, às vezes filmando sua parte de trás enquanto se afasta, além de closes do rosto e das marcas do gato.\n\n2.  **Características do som (pontos-chave)**:\n    *   A narração do vídeo é muito característica. Embora a imagem mostre um gato leve correndo, o som que a acompanha é de **cavalos pesados e rítmicos** (ou um som semelhante ao de tamancos/sapatos de salto batendo no chão).\n    *   Esse contraste sonoro com a imagem cria uma sensação de humor, como se esse gato estivesse se considerando um cavalo galopante.\n\nEm geral, este é um vídeo de animais de estimação que utiliza o contraste entre som e imagem para criar pontos fofos e engraçados."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 915,
        "completion_tokens": 1423,
        "total_tokens": 2338,
        "prompt_tokens_details": {
            "cached_tokens": 0,
            "text_tokens": 5,
            "audio_tokens": 0,
            "image_tokens": 0
        },
        "completion_tokens_details": {
            "text_tokens": 0,
            "audio_tokens": 0,
            "reasoning_tokens": 1162
        },
        "input_tokens": 0,
        "output_tokens": 0,
        "input_tokens_details": null,
        "claude_cache_creation_5_m_tokens": 0,
        "claude_cache_creation_1_h_tokens": 0
    }
}
A partir do acima, pode-se ver que o modelo Gemini 3.0 pode suportar a compreensão multimodal.

Modelo Multimodal Gemini-3.1

O Gemini 3.1 Pro é a versão atualizada do Gemini 3.0 Pro, com o modelo subjacente sendo gemini-3.1-pro-preview, que também suporta entradas multimodais como texto, imagem e vídeo, possuindo uma capacidade de raciocínio e compreensão mais forte. A forma de uso é idêntica à do Gemini 3.0 Pro, basta substituir o parâmetro model por gemini-3.1-pro. Exemplo de solicitação:
{
  "model": "gemini-3.1-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Qual é o conteúdo da imagem?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
O Gemini 3.1 Pro também suporta a compreensão de vídeos:
{
  "model": "gemini-3.1-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Qual é o conteúdo do vídeo?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/58yioe.mp4"
          }
        }
      ]
    }
  ],
  "stream": false
}
O formato de retorno é o mesmo do Gemini 3.0 Pro, conforme descrito na seção do modelo multimodal Gemini-3.0 acima.

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": "falha ao buscar"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusão

Através deste documento, você já entendeu como usar a API Gemini Chat Completion para implementar facilmente a funcionalidade de conversa do Gemini oficial. 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.