armandmcqueen.dev
← All runs

gemini-3.8-flash

9/5/2026, 2:35:54 AM · 15 tests · run 20ab7e19-807c-449e-beb5-381b119b1e65

basic-generation

ok

Plain streaming generation with a soft length constraint (~100 words).

  • Produced 97 words (128 output tokens).
Result
{
  "wordCount": 97,
  "outputTokens": 128
}
1e129bba-72cd-434e-af4c-155daab64544
Sep 5, 2026, 02:35:23

google:gemini-3.8-flash

Input
14
Output
128
Reasoning
0
Answer
128
Cost
$0.000981
Mode
streaming
Cost breakdown
Input $0.000021Output $0.000960
Latency
1.9s
TTFT
1.3s
Tok/s
68.0
Tok/s (adj)
210.5

usage-cost

ok

Asserts usage tokens populate and cost computes from the ChatReq contract.

  • in=10 out=152 rt=147 cost=$0.001155 (paid).
Result
{
  "inputTokens": 10,
  "outputTokens": 152,
  "reasoningTokens": 147,
  "costUsd": 0.001155,
  "paid": true
}
f9a38274-d63e-416a-b509-0e333a822610
Sep 5, 2026, 02:35:24

google:gemini-3.8-flash

Input
10
Output
152
Reasoning
147
Answer
5
Cost
$0.0012
Mode
streaming
Cost breakdown
Input $0.000015Output $0.0011
Latency
1.2s
TTFT
1.2s
Tok/s
122.3
Tok/s (adj)
4201.7

streaming-structure

ok

Asserts a streaming call captures events that reconstruct into the final text.

  • mode=streaming, 8 stream events, 1 text block(s), 35 chars.
Result
{
  "mode": "streaming",
  "streamEventCount": 8,
  "textBlocks": 1,
  "textLen": 35
}
eeebd689-059f-4b13-a960-57ce20c312cc
Sep 5, 2026, 02:35:25

google:gemini-3.8-flash

Input
15
Output
195
Reasoning
160
Answer
35
Cost
$0.0015
Mode
streaming
Cost breakdown
Input $0.000023Output $0.0015
Latency
1.0s
TTFT
996ms
Tok/s
190.6
Tok/s (adj)
1313.8

complete-stream-parity

ok

Same prompt via stream() and complete() both return valid, matching results.

  • stream="Paris" · complete="Paris"
Result
{
  "streamText": "Paris",
  "completeText": "Paris"
}
084e9ea3-c274-40fb-a462-92bac9a1c780
Sep 5, 2026, 02:35:25

google:gemini-3.8-flash

Input
15
Output
1
Reasoning
0
Answer
1
Cost
$0.000030
Mode
streaming
Cost breakdown
Input $0.000023Output $0.000007
Latency
494ms
TTFT
493ms
Tok/s
2.0
Tok/s (adj)
729.9
1f2ce207-8e08-4b03-b6d5-56f2fd5fb8cb
Sep 5, 2026, 02:35:26

google:gemini-3.8-flash

Input
15
Output
1
Reasoning
0
Answer
1
Cost
$0.000030
Mode
non-streaming
Cost breakdown
Input $0.000023Output $0.000007
Latency
525ms
Tok/s
1.9

reasoning-conformance

ok

Asserts the model's reasoning knob behaves as its reasoning-config declares.

  • Class (from reasoning-config): always-on.
  • reasoningTokens=794, outputTokens=1197.
Result
{
  "class": "always-on",
  "reasoningTokens": 794,
  "outputTokens": 1197
}
3fc296bf-2812-4bbf-bcd8-c29326307201
Sep 5, 2026, 02:35:29

google:gemini-3.8-flash

Input
92
Output
1,197
Reasoning
794
Answer
403
Cost
$0.0091
Mode
streaming
Cost breakdown
Input $0.000138Output $0.0090
Latency
3.5s
TTFT
2.6s
Tok/s
341.2
Tok/s (adj)
423.6

single-tool-call

ok

Offers a calculator tool and checks the model calls it for an arithmetic question.

  • Called "multiply" with args {"a":23,"b":17}.
Result
{
  "toolCalled": true,
  "toolName": "multiply",
  "args": {
    "a": 23,
    "b": 17
  },
  "correct": true
}
a18381d7-d618-45ff-8fe9-285a40d9c66e
Sep 5, 2026, 02:35:30

google:gemini-3.8-flash

Input
99
Output
18
Reasoning
0
Answer
18
Cost
$0.000284
Mode
streaming
Cost breakdown
Input $0.000148Output $0.000135
Latency
709ms
Tok/s
25.4

tool-loop

ok

Forces a tool call, feeds the result back, and checks the continuation uses it.

  • step1 (required): multiply({"a":23,"b":17}) → step2: "The product of 23 and 17 is 391."
Result
{
  "toolName": "multiply",
  "args": {
    "a": 23,
    "b": 17
  },
  "product": 391,
  "continuation": "The product of 23 and 17 is 391.",
  "usesResult": true,
  "forced": true
}
6259a4df-55ff-4de3-9772-b6c4089ae7f4
Sep 5, 2026, 02:35:31

google:gemini-3.8-flash

Input
95
Output
67
Reasoning
49
Answer
18
Cost
$0.000645
Mode
streaming
Cost breakdown
Input $0.000142Output $0.000503
Latency
901ms
Tok/s
74.4
00e7ca57-1deb-4a16-809f-0e7f54ea78b1
Sep 5, 2026, 02:35:32

google:gemini-3.8-flash

Input
182
Output
32
Reasoning
16
Answer
16
Cost
$0.000513
Mode
streaming
Cost breakdown
Input $0.000273Output $0.000240
Latency
606ms
TTFT
590ms
Tok/s
52.8
Tok/s (adj)
985.8

web-search

ok

Enables server-side web search and checks invocation counts, the per-request cost surcharge, and provider-executed output blocks.

  • Skipped: model does not support the catalog's web_search tool version.
Result
{
  "skipped": "no server-side web search support"
}

reasoning-tool-continuity

ok

Reasoning model: continuity token captured on a tool call and replayed so the follow-up succeeds.

  • reasoned=true, google token captured; follow-up → "### Account Balance Lookup * **Account ID:** `acme-42` * **Current Bal"
Result
{
  "signatureType": "google",
  "tokenCaptured": true,
  "reasoned": true,
  "answered": true,
  "continuation": "### Account Balance Lookup\n* **Account ID:** `acme-42`\n* **Current Balance ($P$):** **$1,234.00**\n\n---\n\n### Growth Calculation\n* **Annual in"
}
a35bab9f-a75e-438c-8b47-75acbb584eac
Sep 5, 2026, 02:35:33

google:gemini-3.8-flash

Input
123
Output
111
Reasoning
91
Answer
20
Cost
$0.0010
Mode
streaming
Cost breakdown
Input $0.000185Output $0.000833
Latency
839ms
Tok/s
132.3
3927f2de-f2aa-4cba-b5df-129c58e124c4
Sep 5, 2026, 02:35:36

google:gemini-3.8-flash

Input
261
Output
999
Reasoning
657
Answer
342
Cost
$0.0079
Mode
streaming
Cost breakdown
Input $0.000392Output $0.0075
Latency
3.0s
TTFT
2.2s
Tok/s
327.9
Tok/s (adj)
415.8

prompt-cache

ok

Repeat a large prefix; assert cache-read tokens are reported and cost drops.

  • implicit cache; cacheRead per attempt [4081]; hit=yes.
Result
{
  "cacheStyle": "implicit",
  "cacheReadPerAttempt": [
    4081
  ],
  "cacheReadTokens": 4081,
  "cacheHitCost": 0.01024215
}
228c49a7-67ed-40f2-8bc4-9dfcf3c893e7
Sep 5, 2026, 02:35:41

google:gemini-3.8-flash

Input
10,121
Output
77
Reasoning
77
Answer
0
Cost
$0.0158
Mode
non-streaming
Cost breakdown
Input $0.0152Output $0.000577
Latency
5.7s
Tok/s
13.5
baa0dd72-5c73-446b-a96f-ad5b0cc67f67
Sep 5, 2026, 02:35:48

google:gemini-3.8-flash

Input
10,121
Output
76
Reasoning
72
Answer
4
Cache Read
4,081
Cost
$0.0102
Mode
non-streaming
Cost breakdown
Input $0.0091Output $0.000570Cache read $0.000612
Latency
6.7s
Tok/s
11.3

json-output

ok

Requests a strict JSON object and checks it parses with the required keys.

  • Output parsed as JSON.
  • All required keys present.
  • Output is bare JSON (no leading prose/fence).
Result
{
  "parsed": {
    "name": "Anthropic",
    "founded": 2021,
    "headquarters": "San Francisco, California"
  },
  "validJson": true,
  "missingKeys": [],
  "bareJson": true
}
35ca2611-7498-4bc4-a623-02a161fc81d3
Sep 5, 2026, 02:35:49

google:gemini-3.8-flash

Input
57
Output
21
Reasoning
0
Answer
21
Cost
$0.000243
Mode
streaming
Cost breakdown
Input $0.000086Output $0.000157
Latency
924ms
TTFT
892ms
Tok/s
22.7
Tok/s (adj)
652.2

summarize-memex

ok

Summarizes an ~11k-token essay to ~500 words (long input, reasoning minimized).

  • Read ~10155 input tokens, wrote 427 words (550 output tokens) in 3413ms.
Result
{
  "wordCount": 427,
  "inputTokens": 10155,
  "outputTokens": 550,
  "latencyMs": 3413
}
7dda9f10-8009-44b8-be34-32c066aad6f0
Sep 5, 2026, 02:35:52

google:gemini-3.8-flash

Input
10,155
Output
550
Reasoning
0
Answer
550
Cost
$0.0194
Mode
streaming
Cost breakdown
Input $0.0152Output $0.0041
Latency
3.4s
TTFT
869ms
Tok/s
161.1
Tok/s (adj)
216.2

truncation

ok

Tiny maxTokens on a long prompt yields finishReason:"length".

  • finishReason=length, out=96 tokens.
Result
{
  "finishReason": "length",
  "outputTokens": 96
}
219f976f-19cc-4771-a2f5-a20cbc087318
Sep 5, 2026, 02:35:53

google:gemini-3.8-flash

Input
21
Output
96
Reasoning
0
Answer
96
Cost
$0.000751
Mode
streaming
Cost breakdown
Input $0.000031Output $0.000720
Latency
930ms
TTFT
591ms
Tok/s
103.2
Tok/s (adj)
282.8

streaming-only-rejection

ok

Streaming-only models reject complete(); all others accept it.

  • streamingOnly=false; complete() succeeded.
Result
{
  "streamingOnly": false,
  "completeThrew": false
}

abort

ok

A pre-aborted signal rejects the call (abort is threaded + honored).

  • pre-aborted signal → rejected (AbortError).
Result
{
  "rejected": true,
  "errorName": "AbortError"
}