Um die Gemini Decisions API zu verwenden, holen Sie sich einen Schlüssel in Google AI Studio, installieren Sie google-genai 3.2 oder höher und rufen Sie client.decisions.create() mit dem Modell gemini-decision-1, einer gemeinsamen input und einer Map aus typisierten questions auf (noul, choice oder score). Sie erhalten für jede Frage eine kalibrierte Wahrscheinlichkeit und einen confidence-Wert – bei null Output-Tokens.
Unten: jeder Schritt in Python, JavaScript und REST, von Ihrer ersten Ja/Nein-Frage bis hin zu Confidence-basiertem Routing und einer CI-Testsuite.
Was ist die Gemini Decisions API?
Die Gemini Decisions API ist ein Endpoint in der Gemini Developer API (v1beta), der Fragen mit geschlossener Antwortmenge beantwortet, statt Text zu generieren. Sie senden eine multimodale Eingabe und bis zu 1.000 unabhängige Fragen. Das Modell gemini-decision-1 bewertet jede Option in einem einzigen Forward-Pass und liefert kalibrierte Wahrscheinlichkeiten, mit denen Ihr Code direkt verzweigen kann.

Google hat sie am 11. November 2026 angekĂĽndigt. Die offizielle Dokumentation definiert drei Fragetypen:
| Fragetyp | Verwenden Sie ihn, um | RĂĽckgabe |
|---|---|---|
noul |
PrĂĽfen, ob eine Aussage zutrifft (Ja/Nein) | noul (0,01 bis 0,99), confidence |
choice |
Eine Option aus 2 bis 255 auswählen | choice, probabilities, confidence |
score |
Anhand von 2 bis 255 geordneten Stufen bewerten | score, probabilities, legend, confidence |
Laut der Preisseite der Gemini API kostet sie 0,10 $ pro 1M Input-Tokens, Output ist kostenlos. Die gemeinsame Eingabe wird pro Anfrage nur einmal abgerechnet, egal wie viele Fragen Sie stellen. Wenn Sie bereits unseren Leitfaden zur Verwendung der OpenAI Decisions API gelesen haben, wird Ihnen das Format vertraut vorkommen – die unten beschriebenen Felder sind aber Geminis eigene.

Schritt 1: API-SchlĂĽssel holen und SDK installieren
- Ă–ffnen Sie Google AI Studio und erstellen Sie einen API-SchlĂĽssel.
- Exportieren Sie ihn:
export GEMINI_API_KEY="your-key". - Installieren Sie SDK 3.2 oder höher:
pip install -U google-genaiodernpm install @google/genai@latest.
Sie können Fragen zunächst ohne Code im Decisions Playground ausprobieren, das lauffähigen Code exportiert.
Free-Tier, geprüft am 12. November 2026: Die Seite zu Rate Limits listet für den Free-Tier 200 Anfragen pro Minute, 50.000 Tokens pro Minute und 10.000 Anfragen pro Tag auf. Input ist dort kostenlos, aber die Preisseite markiert Free-Tier-Daten mit „Used to improve our products: Yes“, halten Sie echte Kundendaten also auf einem bezahlten Tier. Mehr zu Googles kostenlosen Kontingenten finden Sie in unserem Leitfaden zum Gemini API Free-Tier.
| Tier | RPM | TPM | RPD |
|---|---|---|---|
| Free | 200 | 50.000 | 10.000 |
| Tier 1 | 1.500 | 1.000.000 | 50.000 |
| Tier 2 | 5.000 | 4.000.000 | Unbegrenzt |
| Tier 3 | 15.000 | 10.000.000 | Unbegrenzt |
Schritt 2: Ihre erste noul-Frage (Ja/Nein) stellen
Eine noul-Frage liefert die Wahrscheinlichkeit, dass die Antwort „Ja“ lautet. Beachten Sie die API-Version v1beta: Der Endpoint ist nicht auf v1 verfügbar.
Python:
from google import genai
client = genai.Client(http_options={"api_version": "v1beta"})
result = client.decisions.create(
model="gemini-decision-1",
input="The blue mug I ordered on Monday arrived cracked on Wednesday.",
questions={
"is_damaged": {
"type": "noul",
"instructions": "Did the item arrive damaged?",
},
},
)
answer = result.answers["is_damaged"]
print(f"P(yes)={answer.noul:.2f} confidence={answer.confidence:.2f}")
JavaScript:
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiVersion: "v1beta" });
const result = await ai.decisions.create({
model: "gemini-decision-1",
input: "The blue mug I ordered on Monday arrived cracked on Wednesday.",
questions: {
is_damaged: { type: "noul", instructions: "Did the item arrive damaged?" },
},
});
const answer = result.answers?.is_damaged;
if (answer?.type === "noul") console.log(answer.noul, answer.confidence);
REST:
curl -X POST "https://generativelanguage.googleapis.com/v1beta/decisions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-decision-1",
"input": "The blue mug I ordered on Monday arrived cracked on Wednesday.",
"questions": {
"is_damaged": { "type": "noul", "instructions": "Did the item arrive damaged?" }
}
}'
Die Dokumentation von Google zeigt diese Antwort (ein Beispiel aus der Doku, kein Durchlauf von uns):
{
"answers": { "is_damaged": { "type": "noul", "noul": 0.99, "confidence": 0.99 } },
"usage": { "total_input_tokens": 100, "total_output_tokens": 0, "total_tokens": 100 }
}
Wenn „Ja“ mehrdeutig ist, fügen Sie criteria mit einer true_description und einer false_description hinzu. Eine Regel, die Sie sich merken sollten: noul-Werte liegen immer zwischen 0,01 und 0,99, sodass ein Schwellenwert über 0,99 nie greift.
Schritt 3: choice- und score-Fragen hinzufĂĽgen
Fassen Sie unabhängige Fragen zur selben Eingabe in einer Anfrage zusammen. Die Eingabe wird einmal abgerechnet; jede Frage fügt nur ihre eigenen Tokens hinzu.
result = client.decisions.create(
model="gemini-decision-1",
input="I was charged twice for my order and the export page crashes in Safari.",
questions={
"department": {
"type": "choice",
"instructions": "Which department should handle this request?",
"criteria": {
"billing": "Payments, invoices, and refunds.",
"technical": "Problems using the product.",
"shipping": "Delivery and tracking.",
"other": "Anything outside these categories.",
},
},
"severity": {
"type": "score",
"instructions": "How severe is this issue for the user?",
"criteria": [
"Cosmetic: appearance only, no lost functionality.",
"Workaround available: a task fails, but another way works.",
"Fully blocked: a task fails with no workaround.",
],
},
},
)
Drei Details aus der Doku, an denen sich viele stoĂźen:
- Choice-SchlĂĽssel werden alphabetisch sortiert, bevor sie bewertet werden. Verwenden Sie
otherals Sammelkategorie, nichtnone_of_the_above, das vor den echten Optionen einsortiert wird. - Score-Kriterien sind eine Liste, aufsteigend sortiert und ab 0 indiziert. Der zurĂĽckgegebene
scoreist ein wahrscheinlichkeitsgewichteter Durchschnitt und kann daher zwischen Stufen liegen (die Doku zeigt1.12). - Das Modell sieht Ihre Frage-Schlüssel nie. Schreiben Sie die vollständige Frage in
instructions.
Um aus einem Score eine diskrete Stufe zu erhalten, nehmen Sie den Eintrag mit der höchsten Wahrscheinlichkeit:
sev = result.answers["severity"]
level = max(sev.probabilities, key=sev.probabilities.get)
print(sev.legend[level])
Schritt 4: Bilder, PDFs und Audio senden
input akzeptiert einen String, einen Content-Block oder eine Liste von Blöcken, im selben Blockformat wie die Interactions API. Unterstützte Blöcke sind text, image, audio, video und document (nur PDF).
import base64
with open("earcup.jpg", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf-8")
with open("return-form.pdf", "rb") as f:
pdf_b64 = base64.b64encode(f.read()).decode("utf-8")
result = client.decisions.create(
model="gemini-decision-1",
input=[
{"type": "text", "text": "Customer photo and form for return #8821.\n"},
{"type": "image", "data": image_b64, "mime_type": "image/jpeg", "resolution": "low"},
{"type": "document", "data": pdf_b64, "mime_type": "application/pdf"},
],
questions={
"visible_damage": {
"type": "noul",
"instructions": "Does the photo show physical damage to the device? Ignore the packaging.",
},
"form_signed": {
"type": "noul",
"instructions": "Is the return form in the PDF signed by the customer?",
},
},
)
FĂĽr Audio ĂĽbergeben Sie einen Block wie {"type": "audio", "uri": "<https-url>", "mime_type": "audio/mp3"}. Grenzen, die Sie kennen sollten:
- Inline-Base64-Daten sind auf 100 MB pro Anfrage begrenzt (50 MB fĂĽr PDFs); externe URLs auf je 15 MB.
- Setzen Sie den echten MIME-Typ. Die API lehnt
application/octet-streamab. - YouTube-URLs und
gs://-URIs werden nicht unterstützt. Verwenden Sie die Files API, eine öffentliche oder signierte HTTPS-URL oder Inline-Bytes. resolution(low,medium,high,ultra_high) tauscht visuelle Details gegen Tokens.ultra_highgilt nur für Bilder.
Schritt 5: Wahrscheinlichkeiten und Confidence lesen
Jede Antwort enthält einen confidence-Wert von 0 bis 1, die geschätzte Wahrscheinlichkeit, dass die Top-Antwort richtig ist. Bei choice und score entspricht sie der Wahrscheinlichkeit des Top-Ergebnisses. Bei noul gilt max(noul, 1 - noul).
Ein noul von 0,03 hat also eine Confidence von 0,97: Das Modell ist sicher, dass die Antwort „Nein“ lautet.
Schritt 6: Antworten mit niedriger Confidence an einen Fallback weiterleiten
Nutzen Sie den Wert, um eine Aktion zu wählen, und die Confidence, um zu entscheiden, ob automatisch gehandelt wird:
a = result.answers
dept = a["department"]
if dept.confidence >= 0.7 and dept.choice != "other":
route_to(dept.choice)
elif dept.confidence >= 0.4:
route_to_fallback_model(ticket) # a bigger model reasons it out
else:
route_to("human_review")
Die Grenzen 0,7 und 0,4 sind Platzhalter: Google empfiehlt, Schwellenwerte anhand gelabelter Beispiele Ihres eigenen Datenverkehrs festzulegen. Zwei weitere Regeln aus der Doku:
- Choice-Fragen verteilen die Wahrscheinlichkeit immer auf Ihre Optionen, selbst wenn keine passt. Kombinieren Sie sie mit einer Scope-Prüfung wie „Geht es in dieser Nachricht um eine Bestellung?“
- Behandeln Sie die Eingabe als nicht vertrauenswĂĽrdig. Die Nachricht eines Nutzers kann fĂĽr ihre eigene Klassifizierung argumentieren. Behalten Sie bei Auszahlungen und anderen riskanten Aktionen eine menschliche PrĂĽfung oder eine zweite Kontrolle bei.

Schritt 7: Testen mit dem Coding-Agent und Apidog CLI
Eine Routing-Schicht scheitert still. Jemand formuliert ein Kriterium um, billing wird für die Hälfte Ihrer Tickets zu technical, und nichts wirft einen Fehler. Die Lösung ist eine Regressionssuite, die erwartete Entscheidungen festhält – und Ihr Coding-Agent kann sie mit der Apidog CLI erstellen, während Sie das Ergebnis prüfen.
npm install -g apidog-cli@latest
apidog auth login --with-token <YOUR_TOKEN>
npx -y skills add https://apidog.com # pick your agent when prompted
Geben Sie Ihrem Agenten dann einen einzigen Prompt:
In Apidog project <id>, build a test suite for POST
https://generativelanguage.googleapis.com/v1beta/decisions (header x-goog-api-key
from env var GEMINI_API_KEY). Add one request per question type (noul, choice,
score) asserting status 200, confidence between 0 and 1 and zero output tokens.
Add a test data set of 20 tickets with expected departments and assert each
choice matches with confidence >= 0.7. Run it and summarize failures.
Der Agent liest jedes Payload-Schema, validiert es, schreibt die Ressourcen und fĂĽhrt die Suite aus:
apidog cli-schema get test-scenario-create
apidog cli-schema validate test-scenario-create --file scenario.json
apidog test-scenario create --project <id> --file scenario.json
apidog test-data create --project <id> --file tickets.json
apidog test-suite create --project <id> --file suite.json
apidog run --test-suite <suiteId> --project <id> -e <envId> -d <testDataId> -r cli,junit --out-dir reports
Jedes Flag oben stammt aus apidog run --help der CLI 2.2.12. Ab jetzt schlägt jeder Prompt- oder Kriterien-Change, der die Entscheidung eines Fixtures umwirft, den Lauf fehl. Integrieren Sie denselben Aufruf apidog run ... -r cli,junit in GitHub Actions, zeigt die JUnit-Datei, welches Ticket umgekippt ist; unser Apidog-CLI-CI/CD-Leitfaden enthält die Workflow-Datei, und Apidog CLI in Claude Code behandelt die Agent-Einrichtung. Der kostenlose Apidog-Plan umfasst bis zu 4 Nutzer.
Grenzen und was noch nicht unterstĂĽtzt wird
Aus den Grenzen der Decisions API, geprĂĽft am 12. November 2026:
- 1 bis 1.000 Fragen pro Anfrage, innerhalb eines 262.144-Token-Kontextfensters.
- Kein Context Caching, keine Batch API, keine Flex- oder Priority-Inferenz. Wiederholte Eingaben ĂĽber Anfragen hinweg werden voll abgerechnet.
- Sicherheitsblockaden liefern HTTP 400 mit einem
error.codewiesafetyoderprohibited_content, nicht eine Antwort. - Nur Gemini Developer API (
v1beta). Google sagt, Vertex-AI-Unterstützung kommt „bald“, ohne Datum.
Google meldet eine End-to-End-Latenz von 150 bis 250 ms, nahezu konstant von 1 bis 100 Fragen bei Eingaben bis 16K Tokens, und sagt, Gemini Decision 1 fĂĽhre seine eigene Benchmark-Suite mit dem niedrigsten Kalibrierungsfehler an. Das sind Googles Zahlen; messen Sie die Latenz auf Ihren eigenen Eingaben, bevor Sie darauf aufbauen.
FAQ
Ist die Gemini Decisions API kostenlos? Es gibt einen Free-Tier mit kostenlosen Eingaben, begrenzt auf 200 RPM, 50.000 TPM und 10.000 Anfragen pro Tag (geprĂĽft am 12. November 2026). Free-Tier-Daten dĂĽrfen zur Verbesserung von Googles Produkten genutzt werden. Das bezahlte Tier kostet 0,10 $ pro 1M Input-Tokens.
Was bedeutet noul? Das ist der Ja/Nein-Fragetyp. Das Feld noul ist die Wahrscheinlichkeit, dass die Antwort „Ja“ lautet, zwischen 0,01 und 0,99.
Welche API-Version brauche ich? v1beta. Setzen Sie http_options={"api_version": "v1beta"} in Python, apiVersion: "v1beta" in JavaScript, oder rufen Sie /v1beta/decisions ĂĽber REST auf.
Funktioniert es auf Vertex AI? Noch nicht. Es gibt sie nur in der Gemini Developer API; Google listet Gemini in Google Cloud als „demnächst verfügbar“.
Wie wähle ich einen Confidence-Schwellenwert? Labeln Sie ein paar hundert echte Eingaben, führen Sie sie durch die API und wählen Sie den Grenzwert, an dem die Kosten falscher automatischer Aktionen den Kosten der menschlichen Prüfung entsprechen.
