Google Completion-API

Dit eindpunt biedt toegang tot Google Gemini-modellen die worden gehost in Google Vertex AI. Het weerspiegelt de structuur van de officiële Vertex generateContent API.

Functies

  • Regiokeuze (eu of us)

  • Optionele Server-Sent Event (SSE) streaming met compatibele eventlabels gebruikt door de Google Python SDK (message_start, message_delta, message_stop)

  • Een modellen-ontdekkings-eindpunt

1

Krijg beschikbare modellen

Roep GET aan /{region}/v1beta/models/ om de lijst met Gemini-modellen op te halen.

2

Kies een model & actie

Kies een model-ID en beslis tussen generateContent of streamGenerateContent.

3

Stuur je verzoek

POST naar /{region}/v1beta/models/{model}:{action} met je prompt in contents.

4

Verwerk de respons

Parse de JSON-respons voor niet-streaming oproepen of verwerk de SSE-events voor streaming.


Basis URL

https://api.langdock.com/google/{region}

In dedicated deployments wijst api.langdock.com naar /api/public


Authenticatie

Stuur één van de volgende headers bij gebruik van de Langdock API-sleutel. Alle headers worden identiek behandeld. Ontbrekende of ongeldige sleutels geven 401 Unauthorized terug.

Voorbeeld Authorization-header:

curl -H "Authorization: Bearer $LD_API_KEY" \
     https://api.langdock.com/google/eu/v1beta/models

Voorbeeld x-api-key header:

curl -H "x-api-key: $LD_API_KEY" \
     https://api.langdock.com/google/eu/v1beta/models

Voorbeeld x-goog-api-key header:

curl -H "x-goog-api-key: $LD_API_KEY" \
     https://api.langdock.com/google/eu/v1beta/models

1. Lijst beschikbare modellen

GET /{region}/v1beta/models

regio moet zijn eu of us.

Succesvolle respons: een array van modelobjecten met de volgende vorm:

  • name – Volledig gekwalificeerde modelnaam (bijv. models/gemini-2.5-flash)

  • displayName – Mensvriendelijke naam die in de Langdock UI wordt getoond

  • supportedGenerationMethods – Altijd ["generateContent", "streamGenerateContent"]

Voorbeeld:

curl -H "Authorization: Bearer $LD_API_KEY" \
     https://api.langdock.com/google/eu/v1beta/models

2. Genereer content

POST /{region}/v1beta/models/{model}:{action}

  • model – De model-ID zoals geretourneerd door het models-eindpunt (zonder de models/ prefix).

  • action – generateContent of streamGenerateContent afhankelijk of je streaming wilt of niet.

Voorbeeld pad:

google/eu/v1beta/models/gemini-2.5-flash:streamGenerateContent

Request body

Het request body volgt de officiële GenerateContentRequest-structuur.

Vereiste velden

  • contents (Content[], verplicht) Gespreksgeschiedenis. Elk object heeft een role (string) en parts array met objecten met text (string).

Voorbeeld:

"contents": [
  {
    "role": "user",
    "parts": [
      { "text": "What's the weather like?" }
    ]
  }
]
  • model (string, verplicht) Het model dat gebruikt wordt voor generatie (bijv., gemini-2.5-pro, gemini-2.5-flash).

Optionele velden

  • generationConfig (object, optioneel) Configuratie voor tekstgeneratie. Ondersteunde velden:

    • temperature (nummer): Stuurt de willekeurigheid (0.0-2.0)

    • topP (nummer): Nucleus-samplingparameter (0.0-1.0)

    • topK (nummer): Top-k samplingparameter

    • candidateCount (nummer): Aantal responskandidaten om te genereren

    • maxOutputTokens (nummer): Maximum aantal te genereren tokens

    • stopSequences (string[]): Reeksen die de generatie stoppen

    • responseMimeType (string): MIME-type van de respons

    • responseSchema (object): Schema voor gestructureerde output

Voorbeeld:

"generationConfig": {
  "temperature": 0.7,
  "topP": 0.9,
  "topK": 40,
  "maxOutputTokens": 1000,
  "stopSequences": ["END", "STOP"]
}
  • safetySettings (SafetySetting[], optioneel) Array van safety setting-objecten. Elk object bevat:

    • category (string): De schadekategorie (bijv., HARM_CATEGORY_HARASSMENT)

    • threshold (string): De blokkeringdrempel (bijv., BLOCK_MEDIUM_AND_ABOVE)

Voorbeeld:

"safetySettings": [
  {
    "category": "HARM_CATEGORY_HARASSMENT",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  }
]
  • tools (Tool[], optioneel) Array van tool-objecten voor functieaanroepen. Elke tool bevat functionDeclarations array met:

    • name (string): Functienaam

    • description (string): Functiebeschrijving

    • parameters (object): JSON-schema dat functieparameters definieert

Voorbeeld:

"tools": [
  {
    "functionDeclarations": [
      {
        "name": "get_weather",
        "description": "Get current weather information",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "City name"
            }
          }
        }
      }
    ]
  }
]
  • toolConfig (object, optioneel) Configuratie voor functieaanroepen. Bevat functionCallingConfig met:

    • mode (string): Modus voor functieaanroepen (ANY, AUTO, NONE)

    • allowedFunctionNames (string[]): Array van toegestane functienamen

Voorbeeld:

"toolConfig": {
  "functionCallingConfig": {
    "mode": "ANY",
    "allowedFunctionNames": ["get_weather"]
  }
}
  • systemInstruction (string | Content, optioneel) Systeeminstructie om het gedrag van het model te sturen. Kan een string of Content-object zijn met role en parts.

Voorbeeld:

"systemInstruction": {
  "role": "system",
  "parts": [
    { "text": "You are a weather assistant. Use the weather tool when asked about weather." }
  ]
}

Opmerking: Als toolConfig.functionCallingConfig.allowedFunctionNames wordt opgegeven, mode moet zijn ANY.

Minimaal voorbeeld

curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer $LD_API_KEY" \
     https://api.langdock.com/google/us/v1beta/models/gemini-2.5-pro:generateContent \
     -d '{
       "contents": [{
         "role": "user",
         "parts": [{"text": "Write a short poem about the ocean."}]
       }]
     }'

Streaming

Wanneer actie is streamGenerateContent het eindpunt retourneert een text/event-stream met compatibele events:

  • message_start – eerste chunk die content bevat

  • message_delta – volgende chunks

  • message_stop – laatste chunk (bevat finishReason en gebruiksmetadata)

Voorbeeld message_delta event:

event: message_delta
data: {
  "candidates": [
    {
      "index": 0,
      "content": {
        "role": "model",
        "parts": [{ "text": "The ocean whispers..." }]
      }
    }
  ]
}

Python SDK-voorbeeld met functieaanroepen:

import google.generativeai as genai

def get_current_weather(location):
    """Haal het huidige weer op voor een gegeven locatie"""
    return f"The current weather in {location} is sunny with a temperature of 70 degrees and a wind speed of 5 mph."

genai.configure(
    api_key="<YOUR_LANGDOCK_API_KEY>",
    transport="rest",
    client_options={"api_endpoint": "https://api.langdock.com/google/<REGION>/"},
)

model = genai.GenerativeModel("gemini-2.5-flash", tools=[get_current_weather])

response = model.generate_content(
    "Please tell me the weather in San Francisco, then tell me a story on the history of the city"
)

print(response)

Python SDK streaming-voorbeeld:

model = genai.GenerativeModel("gemini-2.5-flash")

response = model.generate_content(
    "Tell me an elaborate story on the history of the city of San Francisco",
    stream=True,
)

for chunk in response:
    if chunk.text:
        print(chunk.text)

Gebruik van met Google compatibele bibliotheken

Het eindpunt is volledig compatibel met officiële Google SDK's inclusief de Vertex AI Node SDK (@google-cloud/vertexai), de Google Generative AI Python-bibliotheek (google-generative-ai), en de Vercel AI SDK voor edge-streaming.

Headers

  • Authorization (string, required): API-sleutel als Bearer-token. Formaat "Bearer YOUR_API_KEY"

Padparameters

  • region (enum, verplicht): De regio van de API die gebruikt moet worden. Beschikbare opties: eu, us

  • model (string, verplicht): De model-ID (bijv., gemini-2.5-pro, gemini-2.5-flash)

Body (application/json)

  • contents (object[]): verplicht. De content waarvoor een respons gegenereerd moet worden.

    • role (enum): user of model

    • parts (object[])

Response (200 application/json)

  • candidates (object[])

    • content (object)

    • finishReason (string)

    • usageMetadata (object)