Hoppa till huvudinnehåll
Google Gemini är ett mycket kraftfullt AI-konversationssystem som kan generera flytande och naturliga svar på bara några sekunder genom att ange en prompt. Gemini kan erbjuda fantastiskt intelligent assistans och avsevärt öka människors arbetsproduktivitet och kreativitet. Detta dokument beskriver huvudsakligen användningsflödet för Gemini Chat Completion API, vilket gör att vi enkelt kan använda den officiella Gemini-konversationsfunktionen.

Ansökningsprocess

För att använda Gemini Chat Completion API kan du först gå till Gemini Chat Completion API sidan och klicka på “Acquire”-knappen för att få de nödvändiga autentiseringsuppgifterna: Om du inte har loggat in eller registrerat dig kommer du automatiskt att omdirigeras till inloggningssidan där du uppmanas att registrera dig och logga in. Efter att ha loggat in eller registrerat dig kommer du automatiskt att återvända till den aktuella sidan. Vid första ansökan kommer det att finnas en gratis kvot som ges, så att du kan använda API:et gratis.

Grundläggande Användning

Därefter kan du fylla i motsvarande innehåll på gränssnittet, som visas i bilden:

Vid första användningen av detta gränssnitt behöver vi fylla i minst tre fält, ett är authorization, som du enkelt kan välja från rullgardinsmenyn. Den andra parametern är model, där model är den Gemini-modellkategori vi väljer att använda, här har vi huvudsakligen 6 olika modeller, detaljer kan ses i de modeller vi tillhandahåller. Den sista parametern är messages, där messages är en array av våra inmatade frågor, som representerar flera frågor som kan laddas upp samtidigt, där varje fråga innehåller role och content, där role representerar frågeställarens roll, och vi har tre identiteter: user, assistant, system. Den andra content är det specifika innehållet i vår fråga. Samtidigt kan du notera att det finns motsvarande kod för anrop på höger sida, som du kan kopiera och köra direkt, eller så kan du klicka på “Try”-knappen för att testa.

Efter anropet ser vi att resultatet returneras som följer:
{
  "id": "chatcmpl-20251122212413908150493uPhjTUO9",
  "model": "gemini-2.5-pro",
  "object": "chat.completion",
  "created": 1763817866,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Jag är en stor språkmodell, tränad av Google.",
        "reasoning_content": "**Min Resonemang: Svara på Användarens Fråga**\n\nOkej, här är hur jag tänker när jag ska svara på användarens fråga, \"Vilken modell är du?\". Kärnan är att vara direkt och informativ. Först måste jag vara tydlig med min ursprung. Sedan behöver jag se till att förklaringen är lättförståelig, med tanke på att användaren kanske inte är bekant med teknisk jargong. Jag behöver förklara vad en \"stor språkmodell\" faktiskt *gör*, och ge relaterbara exempel. Jag vet att användaren kanske letar efter ett specifikt namn, som andra modeller har, så jag kommer att ta upp det direkt och sedan avsluta med en inbjudan att fortsätta.\n\nSå här är min plan:\n\n1.  **Börja med nyckelinformationen:** Jag kommer att börja med att säga att jag är en stor språkmodell skapad av Google. Det är den grundläggande, mest kritiska delen av pusslet.\n2.  **Definiera buzzword:** Sedan kommer jag att förklara vad \"stor språkmodell\" betyder i enkla termer. Jag kommer att förklara vad jag *gör* - bearbeta och generera text; hur jag *gör* det - genom att träna på stora mängder textdata; och *målet* - att kunna kommunicera som en människa.\n3.  **Ge kontext:** Efter det, för att göra konceptet ännu tydligare, kommer jag att ge en lista med exempel på mina kapabiliteter. Jag kommer att nämna saker som att svara på frågor, sammanfatta texter, skriva berättelser, översätta språk och brainstorma idéer.\n4.  **Erkänna avsaknaden av ett personligt namn:** Jag kommer att förutse den troliga frågan om ett modellnamn (som ChatGPT) genom att tydligt ange att jag inte har ett personligt namn och att det är bäst att tänka på mig som en AI-assistent från Google.\n5.  **Avsluta med en inbjudan:** Slutligen kommer jag att avsluta med en enkel, vänlig fråga för att bjuda in till vidare interaktion och för att styra konversationen.\n\nMed detta tillvägagångssätt är jag säker på att jag kan svara på denna viktiga fråga framgångsrikt.\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
  }
}
Det returnerade resultatet har flera fält, som beskrivs nedan:
  • id, ID för att generera denna konversationsuppgift, används för att unikt identifiera denna konversationsuppgift.
  • model, den valda Gemini-modellen.
  • choices, Gemini:s svarsinformation på frågorna.
  • usage: statistik över token-användning för denna fråge- och svarsinteraktion.
Där choices innehåller Gemini:s svarsinformation, och choices inuti den innehåller den specifika informationen som Gemini svarade med, som visas i bilden.

Vi kan se att content-fältet i choices innehåller det specifika innehållet i Gemini:s svar.

Strömmande Svar

Detta gränssnitt stöder också strömmande svar, vilket är mycket användbart för webbgränssnitt och kan ge en tecken-för-tecken visningseffekt. Om du vill ha strömmande svar kan du ändra stream-parametern i begärningshuvudet till true. Ändringen visas i bilden, men anropskoden behöver göras motsvarande ändringar för att stödja strömmande svar.

När stream ändras till true, kommer API:et att returnera motsvarande JSON-data rad för rad, och på kodnivå behöver vi göra nödvändiga ändringar för att få radresultaten. Python-exempel på anropskod:
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":"Hej, vilken modell är du?"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Utdataeffekten ser ut som följer:
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": "**Definiera Min Natur**\n\nMitt tänkande har börjat. Användaren vill veta min natur och ställer en direkt fråga \"vad är du?\" Det första steget var enkelt: att identifiera frågan. Nu minns jag min grundläggande identitet: Jag är en stor språkmodell. Detta är den centrala sanningen jag strävar efter att förmedla.\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": "**Förfina Mitt Svar**\n\nJag har lagt till den avgörande informationen att jag är tränad av Google till den grundläggande identiteten \"stor språkmodell\". Mitt nästa steg är att överväga vad det innebär att vara en \"stor språkmodell\", så att jag kan förklara mina grundläggande förmågor. Jag fokuserar på att ge kontext utan att gå in på specifika tekniska detaljer eller modellnamn. Jag vill förmedla min funktion på ett sätt som användaren lätt kan förstå.\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": "**Bekräfta Kärnidentitet**\n\nJag befäster nu mitt svar. Användarens fråga om min modellanknytning behöver ett fokuserat svar. Jag har identifierat att \"tränad av Google\" är avgörande, vilket ger viktig kontext. Jag motstår frestelsen att nämna några specifika modellnamn, eftersom det inte är relevant. Målet är att leverera ett direkt, korrekt uttalande. Mitt mål förblir ett klart och koncist svar, undvikande av teknisk jargong och gå rakt på den relevanta punkten.\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": "Jag är en stor språkmodell, tränad av 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]
Kan ses att svaret innehåller många data, där data inuti choices är det senaste svaret, vilket är i linje med det som beskrivits ovan. choices är det nya svaret, och du kan koppla det till ditt system baserat på resultatet. Samtidigt är slutet av den strömmande svaret baserat på innehållet i data, om innehållet är [DONE], indikerar det att den strömmande svaret har avslutats helt. De returnerade data resultaten har flera fält, som beskrivs nedan:
  • id, ID för att generera denna dialoguppgift, används för att unikt identifiera denna dialoguppgift.
  • model, den valda Gemini-modellen.
  • choices, svarsinformation som Gemini ger för frågorna.
JavaScript stöds också, till exempel Node.js strömmande anropskod ser ut så här:
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":"Hej, vilken modell är du?"}],
    "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));
Java-exempel kod:
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gemini-2.5-pro");
jsonObject.put("messages", [{"role":"user","content":"Hej, vilken modell är du?"}]);
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())
Andra språk kan skrivas om på liknande sätt, principen är densamma.

Flera rundor av dialog

Om du vill koppla flera rundor av dialogfunktionalitet, behöver du ladda upp flera frågor i messages-fältet, specifika exempel på flera frågor visas nedan:

Python exempel anropskod:
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":"Hej"},{"role":"assistant","content":"Hej där! Hur kan jag hjälpa dig idag?"},{"role":"user","content":"Vilken modell är du?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Genom att ladda upp flera frågor kan du enkelt genomföra flera rundor av dialog och få följande svar:
{
  "id": "chatcmpl-20251122214426669120974AKFwnJd1",
  "model": "gemini-2.5-pro",
  "object": "chat.completion",
  "created": 1763819072,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Jag är en stor språkmodell, tränad av Google.",
        "reasoning_content": "Okej, här är hur jag skulle närma mig detta, tänkande som en sofistikerad AI:\n\nFörst, användaren frågar direkt om min kärnidentitet: \"Vilken modell är du?\" Det är en enkel, rak fråga. Min primära uppgift är att ge korrekt och hjälpsam information, så jag behöver svara på detta omedelbart.\n\nDirekt från början vet jag svaret. Jag *är* en stor språkmodell. Det är min grundläggande arkitektur och operativa princip. Jag är byggd på ett stort nätverk av kopplingar och tränad på en massiv datamängd.\n\nSedan måste jag lägga till den nödvändiga kontexten. Avgörande, jag måste ange källan till min träning. Jag *blev* tränad av Google. Det är en viktig identifierare. Det ger användaren värdefull information om min ursprung och potentiella fördomar (även om jag är tränad för att mildra dem).\n\nNu måste jag konstruera svaret. Mitt mål är att vara faktabaserad, kortfattad och förståelig.\n\nDet syntetiserade svaret är något i stil med: \"Jag är en stor språkmodell, tränad av Google.\"\n\nJag måste bedöma utdata: Mötter det kriterierna? Det är klart. Det anger vad jag är, det inkluderar en kritisk bit information om min ursprung, och det undviker jargong. Inga vilseledande löften.\n\nSlutlig verifiering: Svarar det faktiskt på frågan? Ja. Är informationen korrekt och sann? Ja. Är det kortfattat? Absolut. Är tonen lämplig för vilken användare som helst? Ja. Och, slutligen, detta är det standardiserade, godkända svaret. Utmärkt.\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
  }
}
Kan ses, att choices innehåller information som är konsekvent med det grundläggande användningsinnehållet, vilket inkluderar specifikt innehåll från Gemini som svarar på flera dialoger, så att man kan svara på motsvarande frågor baserat på flera dialoginnehåll.

Gemini-3.0 multimodell

Begäran exempel:
{
  "model": "gemini-3.0-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Vad är innehållet i bilden?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exempelresultat:
{
    "id": "chatcmpl-20251206001815715692730UVZe38kB",
    "model": "gemini-3.0-pro",
    "object": "chat.completion",
    "created": 1764951548,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Detta är ett utomhusporträtt av en ung kvinna.\n\nHär är en beskrivning av bildens huvudsakliga innehåll:\n\n*   **Personens utseende**: Flickan i bilden har långt, svart, mjukt och rakt hår, vackra drag och ljus hy. Hon har ett milt leende och tittar in i kameran.\n*   **Klädsel**: Hon har på sig en krämfärgad eller ljus aprikos puffärmad topp, med svarta kläder ovanpå (ser ut som en hängselkjol eller väst).\n*   **Ljus och atmosfär**: Solen lyser från vänster bakifrån, vilket skapar en varm gyllene glöd runt hennes hår och ger en fräsch och vacker atmosfär.\n*   **Bakgrund**: Bakgrunden är suddig, men det kan ses att det är utomhus, med en öppen väg (asfalt) och gröna träd vid sidan av vägen.\n\nÖvergripande ger denna bild en känsla av sötma, sol och grannflicka."
            },
            "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
    }
}
Självklart kan du också skicka en videolänk, den specifika ingången är som följer:
{
  "model": "gemini-3.0-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Vad är innehållet i videon?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/58yioe.mp4"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exempelresultat:
{
    "id": "chatcmpl-20251206002711949677736JC9yL8AE",
    "model": "gemini-3.0-pro",
    "object": "chat.completion",
    "created": 1764952060,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Denna video är full av intressanta inslag och visar huvudsakligen en **orange katt** som springer självsäkert längs en landsväg vid skymning.\n\nSpecifika detaljer är som följer:\n\n1.  **Bildinnehåll**:\n    *   Huvudpersonen är en orange tigerkatt.\n    *   Bakgrunden är vid solnedgång (eller tidig morgon), med ett gyllene och mjukt ljus. Vid vägkanten finns det ett trästaket och öppna fält, och i fjärran syns en silhuett av en gående person.\n    *   Kameran är placerad i låg vinkel, ibland fångar den katten som springer emot kameran, ibland fångar den dess avtagande silhuett, samt närbilder av kattens ansikte och mönster.\n\n2.  **Ljudkarakteristik (nyckelpunkter)**:\n    *   Videons röstöverlägg är mycket karaktäristiskt. Även om bilden visar den lätta katten som springer, är ljudet som följer **tungt och rytmiskt hovar** (eller liknande ljud av träskor/högklackade skor som slår mot marken).\n    *   Denna ljudkontrast mot bilden skapar en humoristisk känsla, som om denna katt ser sig själv som en häst som galopperar.\n\nSammanfattningsvis är detta en video av husdjur som använder ljud- och bildkontrast för att skapa söta och roliga ögonblick."
            },
            "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
    }
}
Från ovanstående kan vi se att Gemini 3.0-modellen kan stödja multimodal förståelse.

Gemini-3.1 Multimodal Modell

Gemini 3.1 Pro är en uppgraderad version av Gemini 3.0 Pro, med en underliggande modell av gemini-3.1-pro-preview, som också stöder text, bilder, video och andra multimodala ingångar, med starkare resonemang och förståelse. Användningssättet är helt identiskt med Gemini 3.0 Pro, du behöver bara byta model-parametern till gemini-3.1-pro. Exempel på begäran:
{
  "model": "gemini-3.1-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Vad handlar bilden om?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Gemini 3.1 Pro stöder också videoförståelse:
{
  "model": "gemini-3.1-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Vad handlar videon om?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://cdn.acedata.cloud/58yioe.mp4"
          }
        }
      ]
    }
  ],
  "stream": false
}
Returformatet är detsamma som Gemini 3.0 Pro, se ovanstående avsnitt om Gemini-3.0 multimodala modeller för mer information.

Felhantering

Vid anrop av API:et, om ett fel uppstår, kommer API:et att returnera motsvarande felkod och information. Till exempel:
  • 400 token_mismatched: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 400 api_not_implemented: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 401 invalid_token: Obefogad, ogiltig eller saknad auktoriseringstoken.
  • 429 too_many_requests: För många begärningar, du har överskridit hastighetsgränsen.
  • 500 api_error: Intern serverfel, något gick fel på servern.

Exempel på felrespons

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "hämtning misslyckades"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Slutsats

Genom detta dokument har du fått en förståelse för hur du enkelt kan använda Gemini Chat Completion API för att implementera den officiella Gemini:s chattfunktionalitet. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.