scripts/probe_ollama.py calls https://ollama.com/api/chat with bearer auth,
stream=True, for gemma4:cloud (role-play) and deepseek-v4-flash:cloud
(no_think mode, D-020). Measures time-to-first-token over N iterations
(default 20), prints min/median/p95/mean tables for both models, and logs
any error/throttle events (R5). Also resolves R6 — a successful probe
confirms the direct API + bearer token path works. If OLLAMA_API_KEY is
missing, prints KEY_MISSING and exits 0.
---ci---
phase: 1
milestone: v0.1
plan: 01
task: 01-04
status: execute
persona: backend-engineer
requirements:
covered: [REQ-LLM-01, REQ-LLM-02, REQ-VOICE-03, REQ-NFR-LAT-01]
---/ci---
scripts/probe_cartesia.py opens a WebSocket to Cartesia Sonic, requests TTS
for a sample customer-service utterance, and measures first-audio-byte
latency over N iterations (default 20). Prints min/median/p95/mean. Uses the
raw Cartesia WS API (no SDK coupling). If CARTESIA_API_KEY is missing, prints
KEY_MISSING and exits 0. Also fixes the R1 Deepgram probe to use the raw WS
API instead of the churn-prone SDK listen client.
---ci---
phase: 1
milestone: v0.1
plan: 01
task: 01-03
status: execute
persona: backend-engineer
requirements:
covered: [REQ-VOICE-03, REQ-NFR-LAT-01]
---/ci---
scripts/probe_deepgram.py opens a streaming WebSocket to Deepgram Nova-3,
sends synthesized 16kHz mono PCM in 100ms chunks, and measures
first-partial-transcript latency over N iterations (default 20). Prints
min/median/p95/mean. If DEEPGRAM_API_KEY is missing, prints a clear
KEY_MISSING banner and exits 0 — the probe infrastructure is the deliverable;
live numbers come when keys are provisioned.
---ci---
phase: 1
milestone: v0.1
plan: 01
task: 01-02
status: execute
persona: backend-engineer
requirements:
covered: [REQ-VOICE-03, REQ-NFR-LAT-01]
---/ci---