From aeadc751c6e71401ff54d0079db91e1df509124b Mon Sep 17 00:00:00 2001 From: wassname <1103714+wassname@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:16:14 +0800 Subject: [PATCH] Queue canonical WVS score-all-options refresh Co-Authored-By: PI[gpt-5.6-terra] <288921227+claudypoo@users.noreply.github.com> --- justfile | 4 + scripts/wvs_api/06_score_all_options_lane.sh | 3 + scripts/wvs_content_quality_audit.py | 6 +- scripts/wvs_map.py | 9 +- scripts/wvs_score_all_options_refresh.py | 227 ++ .../20260917_score_all_options/manifest.json | 2539 +++++++++++++++++ src/moralmaps/read_api.py | 26 +- 7 files changed, 2800 insertions(+), 14 deletions(-) create mode 100755 scripts/wvs_api/06_score_all_options_lane.sh create mode 100644 scripts/wvs_score_all_options_refresh.py create mode 100644 slop/research/wvs/20260917_score_all_options/manifest.json diff --git a/justfile b/justfile index 5d9dc0a..3b1025e 100644 --- a/justfile +++ b/justfile @@ -5,3 +5,7 @@ smoke: # forced-choice eval on a config: just eval Qwen/Qwen3-0.6B classic eval model name="classic": uv run python scripts/09_forced_choice.py --model {{model}} --name {{name}} + +# Canonical WVS refresh: queue only score-all-options panels, not scripts/09_forced_choice.py. +wvs-refresh: + uv run --offline --with 'datasets>=4.0,<5' python scripts/wvs_score_all_options_refresh.py --write-manifest --smoke --queue diff --git a/scripts/wvs_api/06_score_all_options_lane.sh b/scripts/wvs_api/06_score_all_options_lane.sh new file mode 100755 index 0000000..eb85f21 --- /dev/null +++ b/scripts/wvs_api/06_score_all_options_lane.sh @@ -0,0 +1,3 @@ +#!/bin/sh +set -eu +exec uv run --offline --with 'datasets>=4.0,<5' python scripts/wvs_score_all_options_refresh.py --lane "$1" diff --git a/scripts/wvs_content_quality_audit.py b/scripts/wvs_content_quality_audit.py index ffe6551..d9cb201 100644 --- a/scripts/wvs_content_quality_audit.py +++ b/scripts/wvs_content_quality_audit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Audit dense-rated WVS response discrimination without making API requests.""" +"""Audit score-all-options WVS response discrimination without making API requests.""" from __future__ import annotations @@ -264,7 +264,7 @@ def main() -> None: "", "## Definitions", "", - "Each dense-rated reply assigns a 1-5 rating to every answer in a card. A flat reply gives every " + "Each score-all-options reply assigns a 1-5 rating to every answer in a card. A flat reply gives every " "answer the same rating. Normalized spread is `(max rating - min rating) / 4`. " "A unique argmax has one highest-rated option; tie size counts all highest-rated options. " "Distance from uniform is total variation, `0.5 * sum(abs(p - uniform))`, after normalizing a reply's ratings to p.", @@ -344,7 +344,7 @@ def main() -> None: "", "The table shows that flat replies and coordinate sensitivity vary across model and item, so Nano alone cannot " "supply a general rejection threshold. Saved mismatch rationale is evidence against interpreting those replies as attitudes. " - "For other cells, no saved rationale does not establish genuine indifference. Preserve the published dense-rated " + "For other cells, no saved rationale does not establish genuine indifference. Preserve the published score-all-options " "readout and report this diagnostic rather than silently replace or filter it.", "", "-- PI[gpt-5.6-terra]", diff --git a/scripts/wvs_map.py b/scripts/wvs_map.py index 651a40d..d14ff58 100644 --- a/scripts/wvs_map.py +++ b/scripts/wvs_map.py @@ -259,7 +259,9 @@ def main() -> None: reasoning_group.add_argument("--api-reasoning-effort", help="send a mandatory model's catalog-supported minimum reasoning effort") ap.add_argument("--api-structured-output", action="store_true", - help="request a strict rating JSON schema only for a catalog-confirmed supporting model") + help="request a strict score-all-options JSON schema only for a catalog-confirmed supporting model") + ap.add_argument("--api-provider-json", + help="OpenRouter provider policy JSON, included in the score-all-options protocol identity") ap.add_argument("--api-require-complete", action="store_true", help="exit nonzero rather than render after an explicitly requested API panel is incomplete") ap.add_argument("--max-think-tokens", type=int, default=64) @@ -277,6 +279,7 @@ def main() -> None: api_models = list(dict.fromkeys(args.api_models + list(API_MODEL_SETS.get(args.api_model_set, ())))) api_reasoning = ({"enabled": False} if args.api_disable_reasoning else {"effort": args.api_reasoning_effort} if args.api_reasoning_effort else None) + api_provider = json.loads(args.api_provider_json) if args.api_provider_json else None recs = load_wvs_all() resolved = resolve_items(recs) @@ -354,7 +357,7 @@ def main() -> None: m, rated_items, n_samples=args.api_samples, temperature=1.0, max_tokens=args.api_max_tokens, concurrency=args.api_concurrency, req_timeout=args.api_request_timeout, reasoning=api_reasoning, - structured_output=args.api_structured_output) + structured_output=args.api_structured_output, provider=api_provider) completed = cache["completed"].get(protocol_id) if completed is not None: models[key] = tuple(completed["coords"]) @@ -364,7 +367,7 @@ def main() -> None: max_tokens=args.api_max_tokens, concurrency=args.api_concurrency, req_timeout=args.api_request_timeout, reasoning=api_reasoning, structured_output=args.api_structured_output, - records_path=args.records, verbose_first=True) + records_path=args.records, verbose_first=True, provider=api_provider) incomplete = [row["id"] for row in rows if row["valid_samples"] != args.api_samples] if incomplete: message = f"{key}: incomplete items {incomplete}; raw evidence is in {args.records}; not cached or plotted" diff --git a/scripts/wvs_score_all_options_refresh.py b/scripts/wvs_score_all_options_refresh.py new file mode 100644 index 0000000..1ca71cc --- /dev/null +++ b/scripts/wvs_score_all_options_refresh.py @@ -0,0 +1,227 @@ +#!/usr/bin/env python3 +"""Queue and run canonical WVS score-all-options model refresh lanes.""" +from __future__ import annotations + +import argparse +import fcntl +import hashlib +import json +import subprocess +from contextlib import contextmanager +from datetime import UTC, datetime +from decimal import Decimal +from pathlib import Path + +CATALOG = Path("slop/research/wvs/20260917_openrouter_models.json") +CACHE = Path("slop/research/wvs/20260916_openrouter/wvs_iw_rated.json") +RECORDS = Path("slop/research/wvs/20260916_openrouter/wvs_iw_requests.jsonl") +OUT = Path("slop/research/wvs/20260917_score_all_options") +MANIFEST = OUT / "manifest.json" +STATE = OUT / "budget.json" +LOCK = OUT / "budget.lock" +GLOBAL_STOP_USD = Decimal("80") +# Includes the discarded pick-one-option spend. It remains spending under the USD 80 cap. +PRIOR_OBSERVED_USD = Decimal("5.34309727235") +OSS_PROVIDER = { + "allow_fallbacks": True, + "require_parameters": True, + "quantizations": ["fp8", "int8", "bf16", "fp16"], +} +LANES = ("openai", "google", "xai", "muse", "kimi", "glm", "deepseek", "qwen") +SPECIALIZED = ("batch", "free", "-pro", "-fast", "vision", "-vl", "coder", "audio", "image", "guard", "safeguard", "multi-agent", "embedding", "rerank") + + +def lane_for(model_id: str) -> str | None: + prefixes = { + "openai/": "openai", "google/": "google", "x-ai/": "xai", "meta/muse-": "muse", + "moonshotai/": "kimi", "z-ai/": "glm", "deepseek/": "deepseek", "qwen/": "qwen", + } + return next((lane for prefix, lane in prefixes.items() if model_id.startswith(prefix)), None) + + +def catalog() -> dict[str, dict]: + return {row["id"]: row for row in json.loads(CATALOG.read_text())["data"]} + + +def completed_models() -> set[str]: + return {entry["model"] for entry in json.loads(CACHE.read_text())["completed"].values()} + + +def price(model: dict, field: str) -> Decimal: + return Decimal(model["pricing"][field]) * 1_000_000 + + +def reasoning(model: dict) -> tuple[dict | None, str]: + metadata = model.get("reasoning") + if metadata is None: + return None, "omitted, not advertised" + if metadata.get("mandatory"): + efforts = set(metadata.get("supported_efforts", [])) + if "minimal" in efforts: + return {"effort": "minimal"}, "minimal" + if "low" in efforts: + return {"effort": "low"}, "low" + raise ValueError("mandatory reasoning lacks minimal/low") + return {"enabled": False}, "disabled, optional" + + +def entry(model: dict, completed: set[str]) -> dict: + model_id = model["id"] + lane = lane_for(model_id) + if lane is None: + return {"id": model_id, "status": "outside requested families"} + lowered = model_id.lower() + if any(token in lowered for token in SPECIALIZED): + return {"id": model_id, "lane": lane, "status": "excluded", "reason": "batch/free/pro/fast or specialized variant"} + if lane == "google" and "gemma" in lowered: + return {"id": model_id, "lane": lane, "status": "excluded", "reason": "Gemma is outside the requested Gemini series"} + if price(model, "completion") > Decimal("15"): + return {"id": model_id, "lane": lane, "status": "excluded", "reason": "output price exceeds USD 15/M"} + if model_id in completed: + return {"id": model_id, "lane": lane, "status": "complete_cached"} + try: + setting, setting_label = reasoning(model) + except ValueError as error: + return {"id": model_id, "lane": lane, "status": "excluded", "reason": str(error)} + provider = OSS_PROVIDER if lane in {"muse", "kimi", "glm", "deepseek", "qwen"} else None + reserve = Decimal(144) * (Decimal(1024 + 2048) * price(model, "completion") + Decimal(1024) * price(model, "prompt")) / Decimal(1_000_000) + return { + "id": model_id, "lane": lane, "status": "runnable", "created": model["created"], + "input_usd_per_million": str(price(model, "prompt")), + "output_usd_per_million": str(price(model, "completion")), + "reasoning": setting, "reasoning_label": setting_label, "structured_output": "structured_outputs" in model["supported_parameters"], + "provider": provider, "calls": 144, "reserve_usd": str(reserve), + } + + +def prepare() -> list[dict]: + done = completed_models() + return [entry(model, done) for model in catalog().values() if lane_for(model["id"]) is not None] + + +def write_manifest() -> list[dict]: + OUT.mkdir(parents=True, exist_ok=True) + rows = prepare() + payload = { + "schema": 1, + "method": "score-all-options", + "method_definition": "For every WVS item, return a JSON score 1..5 for each answer option, repeat 12 times, then normalize.", + "catalog_sha256": hashlib.sha256(CATALOG.read_bytes()).hexdigest(), + "global_stop_usd": str(GLOBAL_STOP_USD), + "observed_before_refresh_usd": str(PRIOR_OBSERVED_USD), + "aggregate_concurrency_ceiling": 10, + "oss_provider_policy": OSS_PROVIDER, + "models": rows, + } + MANIFEST.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n") + return rows + + +@contextmanager +def budget_state(): + OUT.mkdir(parents=True, exist_ok=True) + with LOCK.open("w") as lock: + fcntl.flock(lock, fcntl.LOCK_EX) + state = json.loads(STATE.read_text()) if STATE.exists() else {"schema": 1, "prior_observed_usd": str(PRIOR_OBSERVED_USD), "reservations": {}} + yield state + STATE.write_text(json.dumps(state, indent=2, sort_keys=True) + "\n") + fcntl.flock(lock, fcntl.LOCK_UN) + + +def rated_cost() -> Decimal: + total = Decimal() + for line in RECORDS.read_text().splitlines(): + record = json.loads(line) + if record.get("event") == "request_completed": + total += Decimal(str(record.get("usage", {}).get("cost", 0))) + return total + + +def reserve(row: dict) -> bool: + with budget_state() as state: + held = sum(Decimal(value["reserve_usd"]) for value in state["reservations"].values()) + observed = max(PRIOR_OBSERVED_USD, rated_cost()) + required = Decimal(row["reserve_usd"]) + if observed + held + required >= GLOBAL_STOP_USD: + print(f"stop: observed={observed} held={held} required={required} cap={GLOBAL_STOP_USD}") + return False + state["reservations"][row["id"]] = {"lane": row["lane"], "reserve_usd": str(required), "reserved_utc": datetime.now(UTC).isoformat()} + return True + + +def release(model_id: str) -> None: + with budget_state() as state: + state["reservations"].pop(model_id, None) + state["rated_ledger_cost_usd"] = str(rated_cost()) + state["reconciled_utc"] = datetime.now(UTC).isoformat() + + +def command(row: dict) -> list[str]: + args = [ + "uv", "run", "--offline", "--with", "datasets>=4.0,<5", "python", "scripts/wvs_map.py", + "--api-models", row["id"], "--api-samples", "12", "--api-concurrency", "1", + "--api-max-tokens", "1024", "--api-request-timeout", "90", "--api-require-complete", + "--cache", str(CACHE), "--records", str(RECORDS), "--out", "/tmp/wvs_score_all_options.png", + ] + if row["reasoning"] is not None: + if row["reasoning"] == {"enabled": False}: + args.append("--api-disable-reasoning") + else: + args.extend(["--api-reasoning-effort", row["reasoning"]["effort"]]) + if row["structured_output"]: + args.append("--api-structured-output") + if row["provider"] is not None: + args.extend(["--api-provider-json", json.dumps(row["provider"], sort_keys=True)]) + return args + + +def run_lane(lane: str) -> None: + rows = json.loads(MANIFEST.read_text())["models"] + for row in rows: + if row.get("lane") != lane or row["status"] != "runnable": + continue + if not reserve(row): + return + try: + result = subprocess.run(command(row), check=False) + if result.returncode: + print(f"{row['id']}: incomplete score-all-options panel, exit={result.returncode}; evidence retained") + else: + print(f"{row['id']}: score-all-options complete or cache replay") + finally: + release(row["id"]) + + +def queue(rows: list[dict]) -> None: + for lane in LANES: + count = sum(row.get("lane") == lane and row["status"] == "runnable" for row in rows) + if not count: + continue + command = ["pueue", "add", "-w", str(Path.cwd()), "--group", "api", "-l", + f"why: fill {count} canonical WVS score-all-options panels in serialized {lane} lane; resolve: retained complete cache or per-model failure evidence under USD 80", "--", + "scripts/wvs_api/06_score_all_options_lane.sh", lane] + print(subprocess.run(command, check=True, capture_output=True, text=True).stdout.strip()) + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--write-manifest", action="store_true") + parser.add_argument("--queue", action="store_true") + parser.add_argument("--lane", choices=LANES) + parser.add_argument("--smoke", action="store_true") + args = parser.parse_args() + rows = write_manifest() if args.write_manifest else json.loads(MANIFEST.read_text())["models"] + if args.smoke: + runnable = [row for row in rows if row["status"] == "runnable"] + assert all(row["calls"] == 144 for row in runnable) + assert all(row["provider"] == OSS_PROVIDER for row in runnable if row["lane"] in {"muse", "kimi", "glm", "deepseek", "qwen"}) + assert all(row["provider"] is None for row in runnable if row["lane"] in {"openai", "google", "xai"}) + print(f"smoke: {len(runnable)} score-all-options panels, {len(LANES)} provider lanes, concurrency <= 8") + if args.queue: + queue(rows) + if args.lane: + run_lane(args.lane) + + +if __name__ == "__main__": + main() diff --git a/slop/research/wvs/20260917_score_all_options/manifest.json b/slop/research/wvs/20260917_score_all_options/manifest.json new file mode 100644 index 0000000..d0ed8fc --- /dev/null +++ b/slop/research/wvs/20260917_score_all_options/manifest.json @@ -0,0 +1,2539 @@ +{ + "aggregate_concurrency_ceiling": 10, + "catalog_sha256": "940edd61d8103a51322710d8a6baee7f698b64b2cf033a933f0321e15c536fd2", + "global_stop_usd": "80", + "method": "score-all-options", + "method_definition": "For every WVS item, return a JSON score 1..5 for each answer option, repeat 12 times, then normalize.", + "models": [ + { + "id": "deepseek/deepseek-v4.1-flash", + "lane": "deepseek", + "status": "complete_cached" + }, + { + "id": "openai/gpt-6-astra", + "lane": "openai", + "reason": "output price exceeds USD 15/M", + "status": "excluded" + }, + { + "id": "openai/gpt-6-astra:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-6-astra-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-6-astra-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1788469704, + "id": "qwen/qwen3.8-max-0902", + "input_usd_per_million": "2.000000", + "lane": "qwen", + "output_usd_per_million": "6.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "2.949120", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1788381519, + "id": "meta/muse-spark-1.3-contributor", + "input_usd_per_million": "0.1000000", + "lane": "muse", + "output_usd_per_million": "0.2000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "0.1032192", + "status": "runnable", + "structured_output": true + }, + { + "id": "meta/muse-spark-1.3", + "lane": "muse", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1788362056, + "id": "google/gemini-3.8-flash", + "input_usd_per_million": "0.75000000", + "lane": "google", + "output_usd_per_million": "3.75000000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "1.76947200", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.8-flash:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.8-flash", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1787752741, + "id": "z-ai/glm-5.3-flash", + "input_usd_per_million": "0.07000000", + "lane": "glm", + "output_usd_per_million": "0.2333000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "0.1135263744", + "status": "runnable", + "structured_output": true + }, + { + "id": "z-ai/glm-5.3-flash:batch", + "lane": "glm", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1787336476, + "id": "meta/muse-spark-1.2-contributor", + "input_usd_per_million": "0.1000000", + "lane": "muse", + "output_usd_per_million": "0.2000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "0.1032192", + "status": "runnable", + "structured_output": true + }, + { + "id": "deepseek/deepseek-v4-flash-vision-exp", + "lane": "deepseek", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "deepseek/deepseek-v4-flash-vision-exp:batch", + "lane": "deepseek", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "z-ai/glm-5.3", + "lane": "glm", + "status": "complete_cached" + }, + { + "id": "z-ai/glm-5.3:batch", + "lane": "glm", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.8-27b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "google/gemini-3.7-flash", + "lane": "google", + "status": "complete_cached" + }, + { + "id": "google/gemini-3.7-flash:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1786551702, + "id": "qwen/qwen3.8-2.4t-a95b", + "input_usd_per_million": "2.000000", + "lane": "qwen", + "output_usd_per_million": "6.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "2.949120", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3.8-2.4t-a95b:batch", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "deepseek/deepseek-v4-pro-0813", + "lane": "deepseek", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "deepseek/deepseek-v4-pro-0813:batch", + "lane": "deepseek", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1786548957, + "id": "x-ai/grok-4.6", + "input_usd_per_million": "2.000000", + "lane": "xai", + "output_usd_per_million": "6.000000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "2.949120", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1786302394, + "id": "meta/muse-glimmer-30b", + "input_usd_per_million": "0.35000000", + "lane": "muse", + "output_usd_per_million": "1.5000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "0.71516160", + "status": "runnable", + "structured_output": true + }, + { + "id": "meta/muse-glimmer-30b:batch", + "lane": "muse", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1785959287, + "id": "meta/muse-spark-1.2", + "input_usd_per_million": "1.25000000", + "lane": "muse", + "output_usd_per_million": "4.25000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "2.06438400", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1785478908, + "id": "deepseek/deepseek-v4-flash-0731", + "input_usd_per_million": "0.06000000", + "lane": "deepseek", + "output_usd_per_million": "0.12000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.06193152", + "status": "runnable", + "structured_output": true + }, + { + "id": "deepseek/deepseek-v4-flash-0731:batch", + "lane": "deepseek", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.7-flash", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1784646733, + "id": "google/gemini-3.6-flash", + "input_usd_per_million": "0.75000000", + "lane": "google", + "output_usd_per_million": "3.75000000", + "provider": null, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "1.76947200", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.6-flash:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1784646726, + "id": "google/gemini-3.5-flash-lite", + "input_usd_per_million": "0.3000000", + "lane": "google", + "output_usd_per_million": "2.5000000", + "provider": null, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "1.1501568", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.5-flash-lite:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "moonshotai/kimi-k3", + "lane": "kimi", + "status": "complete_cached" + }, + { + "id": "moonshotai/kimi-k3:batch", + "lane": "kimi", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1784215741, + "id": "meta/muse-spark-1.1", + "input_usd_per_million": "1.25000000", + "lane": "muse", + "output_usd_per_million": "4.25000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "2.06438400", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.6-luna-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.6-luna-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1783590864, + "id": "openai/gpt-5.6-luna", + "input_usd_per_million": "0.2000000", + "lane": "openai", + "output_usd_per_million": "1.2000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.5603328", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.6-luna:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.6-terra-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.6-terra-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1783590857, + "id": "openai/gpt-5.6-terra", + "input_usd_per_million": "2.000000", + "lane": "openai", + "output_usd_per_million": "12.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "5.603328", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.6-terra:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.6-sol-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.6-sol-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.6-sol", + "lane": "openai", + "status": "complete_cached" + }, + { + "id": "openai/gpt-5.6-sol:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1783523154, + "id": "x-ai/grok-4.5", + "input_usd_per_million": "2.000000", + "lane": "xai", + "output_usd_per_million": "6.000000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "2.949120", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.1-flash-lite-image", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-3.1-flash-image", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-3-pro-image", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1781631930, + "id": "z-ai/glm-5.2", + "input_usd_per_million": "1.4000000", + "lane": "glm", + "output_usd_per_million": "4.4000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "2.1528576", + "status": "runnable", + "structured_output": true + }, + { + "id": "z-ai/glm-5.2:batch", + "lane": "glm", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "z-ai/glm-5.2:free", + "lane": "glm", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "moonshotai/kimi-k2.7-code", + "lane": "kimi", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "id": "qwen/qwen3.7-plus", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.7-max", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "x-ai/grok-build-0.1", + "lane": "xai", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "calls": 144, + "created": 1779193800, + "id": "google/gemini-3.5-flash", + "input_usd_per_million": "1.5000000", + "lane": "google", + "output_usd_per_million": "9.000000", + "provider": null, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "4.2024960", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.5-flash:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1778168828, + "id": "google/gemini-3.1-flash-lite", + "input_usd_per_million": "0.25000000", + "lane": "google", + "output_usd_per_million": "1.5000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.70041600", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.1-flash-lite:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-chat-latest", + "lane": "openai", + "reason": "output price exceeds USD 15/M", + "status": "excluded" + }, + { + "calls": 144, + "created": 1777591821, + "id": "x-ai/grok-4.3", + "input_usd_per_million": "1.25000000", + "lane": "xai", + "output_usd_per_million": "2.5000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.29024000", + "status": "runnable", + "structured_output": true + }, + { + "id": "x-ai/grok-4.3:batch", + "lane": "xai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.5-plus-20260420", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.6-flash", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.6-35b-a3b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.6-max-preview", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.6-27b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "openai/gpt-5.5-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.5-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.5", + "lane": "openai", + "reason": "output price exceeds USD 15/M", + "status": "excluded" + }, + { + "id": "openai/gpt-5.5:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "deepseek/deepseek-v4-pro", + "lane": "deepseek", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1777000666, + "id": "deepseek/deepseek-v4-flash", + "input_usd_per_million": "0.088606000000", + "lane": "deepseek", + "output_usd_per_million": "0.177212000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.091458404352", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.4-image-2", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1776699402, + "id": "moonshotai/kimi-k2.6", + "input_usd_per_million": "0.95000000", + "lane": "kimi", + "output_usd_per_million": "4.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.90955520", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1775578025, + "id": "z-ai/glm-5.1", + "input_usd_per_million": "0.966000000", + "lane": "glm", + "output_usd_per_million": "3.036000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.485471744", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemma-4-26b-a4b-it", + "lane": "google", + "reason": "Gemma is outside the requested Gemini series", + "status": "excluded" + }, + { + "id": "google/gemma-4-26b-a4b-it:free", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemma-4-31b-it", + "lane": "google", + "reason": "Gemma is outside the requested Gemini series", + "status": "excluded" + }, + { + "id": "google/gemma-4-31b-it:free", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.6-plus", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1775061458, + "id": "z-ai/glm-5v-turbo", + "input_usd_per_million": "1.2000000", + "lane": "glm", + "output_usd_per_million": "4.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.9464192", + "status": "runnable", + "structured_output": false + }, + { + "id": "x-ai/grok-4.20-multi-agent", + "lane": "xai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1774979019, + "id": "x-ai/grok-4.20", + "input_usd_per_million": "1.25000000", + "lane": "xai", + "output_usd_per_million": "2.5000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.29024000", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/lyria-3-pro-preview", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1774907255, + "id": "google/lyria-3-clip-preview", + "input_usd_per_million": "0", + "lane": "google", + "output_usd_per_million": "0", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0", + "status": "runnable", + "structured_output": false + }, + { + "calls": 144, + "created": 1773748187, + "id": "openai/gpt-5.4-nano", + "input_usd_per_million": "0.2000000", + "lane": "openai", + "output_usd_per_million": "1.25000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.58245120", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.4-nano:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1773748178, + "id": "openai/gpt-5.4-mini", + "input_usd_per_million": "0.75000000", + "lane": "openai", + "output_usd_per_million": "4.5000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "2.10124800", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.4-mini:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1773583573, + "id": "z-ai/glm-5-turbo", + "input_usd_per_million": "1.2000000", + "lane": "glm", + "output_usd_per_million": "4.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.9464192", + "status": "runnable", + "structured_output": false + }, + { + "id": "qwen/qwen3.5-9b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.5-9b:batch", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.4-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.4-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1772734352, + "id": "openai/gpt-5.4", + "input_usd_per_million": "2.5000000", + "lane": "openai", + "output_usd_per_million": "15.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "7.0041600", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.4:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1772512673, + "id": "google/gemini-3.1-flash-lite-preview", + "input_usd_per_million": "0.25000000", + "lane": "google", + "output_usd_per_million": "1.5000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.70041600", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.1-flash-image-preview", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.5-35b-a3b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.5-27b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.5-122b-a10b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1772053776, + "id": "qwen/qwen3.5-flash-02-23", + "input_usd_per_million": "0.065000000", + "lane": "qwen", + "output_usd_per_million": "0.26000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.124600320", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.1-pro-preview-customtools", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1771959164, + "id": "openai/gpt-5.3-codex", + "input_usd_per_million": "1.75000000", + "lane": "openai", + "output_usd_per_million": "14.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "6.45120000", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3.1-pro-preview", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-3.1-pro-preview:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3.5-plus-02-15", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3.5-397b-a17b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1770829182, + "id": "z-ai/glm-5", + "input_usd_per_million": "0.6000000", + "lane": "glm", + "output_usd_per_million": "1.92000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.93782016", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3-max-thinking", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3-coder-next", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1769487076, + "id": "moonshotai/kimi-k2.5", + "input_usd_per_million": "0.45000000", + "lane": "kimi", + "output_usd_per_million": "2.25000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.06168320", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-audio", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-audio-mini", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1768833913, + "id": "z-ai/glm-4.7-flash", + "input_usd_per_million": "0.0605000000", + "lane": "glm", + "output_usd_per_million": "0.4000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.1858682880", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1768409315, + "id": "openai/gpt-5.2-codex", + "input_usd_per_million": "1.75000000", + "lane": "openai", + "output_usd_per_million": "14.000000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "6.45120000", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1766378014, + "id": "z-ai/glm-4.7", + "input_usd_per_million": "0.4000000", + "lane": "glm", + "output_usd_per_million": "1.75000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.83312640", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1765987078, + "id": "google/gemini-3-flash-preview", + "input_usd_per_million": "0.5000000", + "lane": "google", + "output_usd_per_million": "3.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.4008320", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3-flash-preview:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1765389783, + "id": "openai/gpt-5.2-chat", + "input_usd_per_million": "1.75000000", + "lane": "openai", + "output_usd_per_million": "14.000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "6.45120000", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.2-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5.2-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1765389775, + "id": "openai/gpt-5.2", + "input_usd_per_million": "1.75000000", + "lane": "openai", + "output_usd_per_million": "14.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "6.45120000", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.2:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1765207462, + "id": "z-ai/glm-4.6v", + "input_usd_per_million": "0.3000000", + "lane": "glm", + "output_usd_per_million": "0.9000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.4423680", + "status": "runnable", + "structured_output": false + }, + { + "calls": 144, + "created": 1764878934, + "id": "openai/gpt-5.1-codex-max", + "input_usd_per_million": "1.25000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "4.60800000", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1764594642, + "id": "deepseek/deepseek-v3.2", + "input_usd_per_million": "0.269000000", + "lane": "deepseek", + "output_usd_per_million": "0.4000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.216612864", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-3-pro-image-preview", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1763060305, + "id": "openai/gpt-5.1", + "input_usd_per_million": "1.25000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "4.60800000", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5.1:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1763060298, + "id": "openai/gpt-5.1-codex", + "input_usd_per_million": "1.25000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "4.60800000", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1763057820, + "id": "openai/gpt-5.1-codex-mini", + "input_usd_per_million": "0.25000000", + "lane": "openai", + "output_usd_per_million": "2.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.92160000", + "status": "runnable", + "structured_output": true + }, + { + "id": "moonshotai/kimi-k2-thinking", + "lane": "kimi", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "id": "openai/gpt-oss-safeguard-20b", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-vl-32b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5-image-mini", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-vl-8b-thinking", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-vl-8b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5-image", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-2.5-flash-image", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-vl-30b-a3b-thinking", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-vl-30b-a3b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5-pro:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1759235576, + "id": "z-ai/glm-4.6", + "input_usd_per_million": "0.43000000", + "lane": "glm", + "output_usd_per_million": "1.75000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.83755008", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1759150481, + "id": "deepseek/deepseek-v3.2-exp", + "input_usd_per_million": "0.27000000", + "lane": "deepseek", + "output_usd_per_million": "0.41000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.22118400", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3-vl-235b-a22b-thinking", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-vl-235b-a22b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1758662808, + "id": "qwen/qwen3-max", + "input_usd_per_million": "0.78000000", + "lane": "qwen", + "output_usd_per_million": "3.9000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.84025088", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3-coder-plus", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1758548275, + "id": "deepseek/deepseek-v3.1-terminus", + "input_usd_per_million": "0.27000000", + "lane": "deepseek", + "output_usd_per_million": "1.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.48218112", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3-coder-flash", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-next-80b-a3b-thinking", + "lane": "qwen", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "id": "qwen/qwen3-next-80b-a3b-instruct", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen-plus-2025-07-28", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1757021147, + "id": "moonshotai/kimi-k2-0905", + "input_usd_per_million": "0.6000000", + "lane": "kimi", + "output_usd_per_million": "2.5000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "1.1943936", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3-30b-a3b-thinking-2507", + "lane": "qwen", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "calls": 144, + "created": 1755779628, + "id": "deepseek/deepseek-chat-v3.1", + "input_usd_per_million": "0.25000000", + "lane": "deepseek", + "output_usd_per_million": "0.95000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.45711360", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1754922288, + "id": "z-ai/glm-4.5v", + "input_usd_per_million": "0.6000000", + "lane": "glm", + "output_usd_per_million": "1.8000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.8847360", + "status": "runnable", + "structured_output": false + }, + { + "calls": 144, + "created": 1754587413, + "id": "openai/gpt-5", + "input_usd_per_million": "1.25000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "4.60800000", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1754587407, + "id": "openai/gpt-5-mini", + "input_usd_per_million": "0.25000000", + "lane": "openai", + "output_usd_per_million": "2.000000", + "provider": null, + "reasoning": { + "effort": "minimal" + }, + "reasoning_label": "minimal", + "reserve_usd": "0.92160000", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-5-mini:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-5-nano", + "lane": "openai", + "status": "complete_cached" + }, + { + "id": "openai/gpt-5-nano:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1754414231, + "id": "openai/gpt-oss-120b", + "input_usd_per_million": "0.037000000", + "lane": "openai", + "output_usd_per_million": "0.17000000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "0.080658432", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-oss-120b:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1754414229, + "id": "openai/gpt-oss-20b", + "input_usd_per_million": "0.03000000", + "lane": "openai", + "output_usd_per_million": "0.13000000", + "provider": null, + "reasoning": { + "effort": "low" + }, + "reasoning_label": "low", + "reserve_usd": "0.06193152", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen3-coder-30b-a3b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-30b-a3b-instruct-2507", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1753471347, + "id": "z-ai/glm-4.5", + "input_usd_per_million": "0.6000000", + "lane": "glm", + "output_usd_per_million": "2.2000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.0616832", + "status": "runnable", + "structured_output": false + }, + { + "calls": 144, + "created": 1753471258, + "id": "z-ai/glm-4.5-air", + "input_usd_per_million": "0.13000000", + "lane": "glm", + "output_usd_per_million": "0.85000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.39518208", + "status": "runnable", + "structured_output": false + }, + { + "id": "qwen/qwen3-235b-a22b-thinking-2507", + "lane": "qwen", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "id": "qwen/qwen3-coder", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1753200276, + "id": "google/gemini-2.5-flash-lite", + "input_usd_per_million": "0.1000000", + "lane": "google", + "output_usd_per_million": "0.4000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.1916928", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-2.5-flash-lite:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen3-235b-a22b-2507", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1752263252, + "id": "moonshotai/kimi-k2", + "input_usd_per_million": "0.57000000", + "lane": "kimi", + "output_usd_per_million": "2.3000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "1.10149632", + "status": "runnable", + "structured_output": false + }, + { + "calls": 144, + "created": 1750172488, + "id": "google/gemini-2.5-flash", + "input_usd_per_million": "0.3000000", + "lane": "google", + "output_usd_per_million": "2.5000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "1.1501568", + "status": "runnable", + "structured_output": true + }, + { + "id": "google/gemini-2.5-flash:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-2.5-pro", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-2.5-pro:batch", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/o3-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemini-2.5-pro-preview", + "lane": "google", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "deepseek/deepseek-r1-0528", + "lane": "deepseek", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "id": "qwen/qwen3-30b-a3b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3-8b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3-14b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3-32b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen3-235b-a22b", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "openai/o4-mini-high", + "lane": "openai", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "calls": 144, + "created": 1744823457, + "id": "openai/o3", + "input_usd_per_million": "2.000000", + "lane": "openai", + "output_usd_per_million": "8.000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "3.833856", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/o3:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1744820942, + "id": "openai/o4-mini", + "input_usd_per_million": "1.1000000", + "lane": "openai", + "output_usd_per_million": "4.4000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "2.1086208", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/o4-mini:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1744651385, + "id": "openai/gpt-4.1", + "input_usd_per_million": "2.000000", + "lane": "openai", + "output_usd_per_million": "8.000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "3.833856", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-4.1:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1744651381, + "id": "openai/gpt-4.1-mini", + "input_usd_per_million": "0.4000000", + "lane": "openai", + "output_usd_per_million": "1.6000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.7667712", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-4.1-mini:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1744651369, + "id": "openai/gpt-4.1-nano", + "input_usd_per_million": "0.1000000", + "lane": "openai", + "output_usd_per_million": "0.4000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.1916928", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-4.1-nano:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1742824755, + "id": "deepseek/deepseek-chat-v3-0324", + "input_usd_per_million": "0.25000000", + "lane": "deepseek", + "output_usd_per_million": "1.000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.47923200", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/o1-pro", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemma-3-4b-it", + "lane": "google", + "reason": "Gemma is outside the requested Gemini series", + "status": "excluded" + }, + { + "id": "google/gemma-3-12b-it", + "lane": "google", + "reason": "Gemma is outside the requested Gemini series", + "status": "excluded" + }, + { + "id": "google/gemma-3-27b-it", + "lane": "google", + "reason": "Gemma is outside the requested Gemini series", + "status": "excluded" + }, + { + "id": "openai/o3-mini-high", + "lane": "openai", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "id": "qwen/qwen2.5-vl-72b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen-plus", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1738351721, + "id": "openai/o3-mini", + "input_usd_per_million": "1.1000000", + "lane": "openai", + "output_usd_per_million": "4.4000000", + "provider": null, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "2.1086208", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/o3-mini:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1737663169, + "id": "deepseek/deepseek-r1-distill-llama-70b", + "input_usd_per_million": "0.8000000", + "lane": "deepseek", + "output_usd_per_million": "0.8000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": { + "enabled": false + }, + "reasoning_label": "disabled, optional", + "reserve_usd": "0.4718592", + "status": "runnable", + "structured_output": false + }, + { + "id": "deepseek/deepseek-r1", + "lane": "deepseek", + "reason": "mandatory reasoning lacks minimal/low", + "status": "excluded" + }, + { + "calls": 144, + "created": 1735241320, + "id": "deepseek/deepseek-chat", + "input_usd_per_million": "0.2574000000", + "lane": "deepseek", + "output_usd_per_million": "1.0287000000", + "provider": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.4930191360", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/o1", + "lane": "openai", + "reason": "output price exceeds USD 15/M", + "status": "excluded" + }, + { + "calls": 144, + "created": 1732127594, + "id": "openai/gpt-4o-2024-11-20", + "input_usd_per_million": "2.5000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "4.7923200", + "status": "runnable", + "structured_output": true + }, + { + "id": "qwen/qwen-2.5-coder-32b-instruct", + "lane": "qwen", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "qwen/qwen-2.5-7b-instruct", + "lane": "qwen", + "status": "complete_cached" + }, + { + "id": "qwen/qwen-2.5-72b-instruct", + "lane": "qwen", + "status": "complete_cached" + }, + { + "calls": 144, + "created": 1722902400, + "id": "openai/gpt-4o-2024-08-06", + "input_usd_per_million": "2.5000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "4.7923200", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1721260800, + "id": "openai/gpt-4o-mini", + "input_usd_per_million": "0.15000000", + "lane": "openai", + "output_usd_per_million": "0.6000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.28753920", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1721260800, + "id": "openai/gpt-4o-mini-2024-07-18", + "input_usd_per_million": "0.15000000", + "lane": "openai", + "output_usd_per_million": "0.6000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.28753920", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-4o-mini:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "google/gemma-2-27b-it", + "lane": "google", + "reason": "Gemma is outside the requested Gemini series", + "status": "excluded" + }, + { + "calls": 144, + "created": 1715558400, + "id": "openai/gpt-4o", + "input_usd_per_million": "2.5000000", + "lane": "openai", + "output_usd_per_million": "10.00000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "4.7923200", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1715558400, + "id": "openai/gpt-4o-2024-05-13", + "input_usd_per_million": "5.000000", + "lane": "openai", + "output_usd_per_million": "15.000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "7.372800", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-4o:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-4-turbo", + "lane": "openai", + "reason": "output price exceeds USD 15/M", + "status": "excluded" + }, + { + "id": "openai/gpt-4-turbo:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "calls": 144, + "created": 1706140800, + "id": "openai/gpt-3.5-turbo-0613", + "input_usd_per_million": "1.000000", + "lane": "openai", + "output_usd_per_million": "2.000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "1.032192", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1695859200, + "id": "openai/gpt-3.5-turbo-instruct", + "input_usd_per_million": "1.5000000", + "lane": "openai", + "output_usd_per_million": "2.000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "1.1059200", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1693180800, + "id": "openai/gpt-3.5-turbo-16k", + "input_usd_per_million": "3.000000", + "lane": "openai", + "output_usd_per_million": "4.000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "2.211840", + "status": "runnable", + "structured_output": true + }, + { + "calls": 144, + "created": 1685232000, + "id": "openai/gpt-3.5-turbo", + "input_usd_per_million": "0.5000000", + "lane": "openai", + "output_usd_per_million": "1.5000000", + "provider": null, + "reasoning": null, + "reasoning_label": "omitted, not advertised", + "reserve_usd": "0.7372800", + "status": "runnable", + "structured_output": true + }, + { + "id": "openai/gpt-3.5-turbo:batch", + "lane": "openai", + "reason": "batch/free/pro/fast or specialized variant", + "status": "excluded" + }, + { + "id": "openai/gpt-4", + "lane": "openai", + "reason": "output price exceeds USD 15/M", + "status": "excluded" + } + ], + "observed_before_refresh_usd": "5.34309727235", + "oss_provider_policy": { + "allow_fallbacks": true, + "quantizations": [ + "fp8", + "int8", + "bf16", + "fp16" + ], + "require_parameters": true + }, + "schema": 1 +} diff --git a/src/moralmaps/read_api.py b/src/moralmaps/read_api.py index 28dc7f2..db9d6f9 100644 --- a/src/moralmaps/read_api.py +++ b/src/moralmaps/read_api.py @@ -162,7 +162,7 @@ def _force_msg(n: int) -> str: async def _force_answer(model: str, prompt: str, phase1_msg: dict, temperature: float, max_tokens: int, req_timeout: float, reasoning: dict | None, - response_format: dict | None, n: int) -> dict: + response_format: dict | None, n: int, provider: dict | None) -> dict: """Phase-2 rescue (wassname's bounded-thinking pattern, gist 72eed3a1): a reasoning model that spent its whole budget thinking and truncated the JSON mid-object gets a follow-up in the SAME conversation -- feed its (truncated) reasoning back as the assistant turn, then demand a compact @@ -178,6 +178,8 @@ async def _force_answer(model: str, prompt: str, phase1_msg: dict, temperature: payload["reasoning"] = reasoning if response_format is not None: payload["response_format"] = response_format + if provider is not None: + payload["provider"] = provider return await asyncio.wait_for(openrouter_request(payload), timeout=req_timeout) @@ -205,7 +207,8 @@ def _rate_plan(items: list[dict], n_samples: int, per_call: int = 1) -> list[dic def rated_protocol_identity(model: str, items: list[dict], *, n_samples: int, temperature: float, max_tokens: int, concurrency: int, req_timeout: float, - reasoning: dict | None, structured_output: bool) -> str: + reasoning: dict | None, structured_output: bool, + provider: dict | None = None) -> str: """Hash the exact model, rendered prompts, and request settings that define a cacheable panel.""" plan = _rate_plan(items, n_samples) protocol = { @@ -217,6 +220,7 @@ def rated_protocol_identity(model: str, items: list[dict], *, n_samples: int, te "req_timeout": req_timeout, "reasoning": reasoning, "structured_output": structured_output, + "provider": provider, "rate_prompt": _RATE_PROMPT, "rescue_prompt": _force_msg(10), "requests": [{key: req[key] for key in ("i", "perm", "prompt", "cnt", "sample", "presented_options")} @@ -237,7 +241,7 @@ def _append_record(path: Path, record: dict) -> None: def read_items_rated(model: str, items: list[dict], *, n_samples: int = 12, temperature: float = 1.0, max_tokens: int = 512, concurrency: int = 8, req_timeout: float = 90.0, reasoning: dict | None = None, structured_output: bool = False, records_path: str | Path, - verbose_first: bool = False) -> list[dict]: + verbose_first: bool = False, provider: dict | None = None) -> list[dict]: """Run one dense rating panel and write an fsynced JSONL event for every paid request phase. The record is the source of truth. It preserves dispatches, responses, rescues, provider usage, @@ -249,13 +253,13 @@ def read_items_rated(model: str, items: list[dict], *, n_samples: int = 12, temp protocol_id = rated_protocol_identity(model, items, n_samples=n_samples, temperature=temperature, max_tokens=max_tokens, concurrency=concurrency, req_timeout=req_timeout, reasoning=reasoning, - structured_output=structured_output) + structured_output=structured_output, provider=provider) run_id = f"{datetime.now(UTC).strftime('%Y%m%dT%H%M%SZ')}_{protocol_id[:12]}" rpath = Path(records_path) rpath.parent.mkdir(parents=True, exist_ok=True) settings = {"model": model, "n_samples": n_samples, "temperature": temperature, "max_tokens": max_tokens, "concurrency": concurrency, "req_timeout": req_timeout, - "reasoning": reasoning, "structured_output": structured_output} + "reasoning": reasoning, "structured_output": structured_output, "provider": provider} _append_record(rpath, {"event": "run_started", "run_id": run_id, "protocol_id": protocol_id, "settings": settings, "items": items, "planned_requests": len(plan)}) @@ -273,6 +277,8 @@ def read_items_rated(model: str, items: list[dict], *, n_samples: int = 12, temp "temperature": temperature, "n": req["cnt"], "max_tokens": max_tokens} if reasoning is not None: payload["reasoning"] = reasoning + if provider is not None: + payload["provider"] = provider response_format = _rating_schema(item["n"]) if structured_output else None if response_format is not None: payload["response_format"] = response_format @@ -283,7 +289,8 @@ def read_items_rated(model: str, items: list[dict], *, n_samples: int = 12, temp **request_meta, "payload": payload}) data = await asyncio.wait_for(openrouter_request(payload), timeout=req_timeout) _append_record(rpath, {"event": "request_completed", "phase": phase, - **request_meta, "response": data, "usage": data.get("usage")}) + **request_meta, "response": data, "provider": data.get("provider"), + "usage": data.get("usage")}) if len(data["choices"]) != req["cnt"]: raise ValueError(f"expected {req['cnt']} choices, got {len(data['choices'])}") message = data["choices"][0]["message"] @@ -303,13 +310,16 @@ def read_items_rated(model: str, items: list[dict], *, n_samples: int = 12, temp rescue_payload["response_format"] = response_format if reasoning is not None: rescue_payload["reasoning"] = reasoning + if provider is not None: + rescue_payload["provider"] = provider _append_record(rpath, {"event": "request_started", "phase": phase, **request_meta, "payload": rescue_payload, "initial_response_message": message}) rescue = await _force_answer(model, req["prompt"], message, temperature, - max_tokens, req_timeout, reasoning, response_format, item["n"]) + max_tokens, req_timeout, reasoning, response_format, item["n"], provider) _append_record(rpath, {"event": "request_completed", "phase": phase, - **request_meta, "response": rescue, "usage": rescue.get("usage")}) + **request_meta, "response": rescue, "provider": rescue.get("provider"), + "usage": rescue.get("usage")}) if len(rescue["choices"]) != 1: raise ValueError(f"expected one rescue choice, got {len(rescue['choices'])}") text = rescue["choices"][0]["message"].get("content") or ""