Spaces:
Running on Zero
Running on Zero
File size: 1,432 Bytes
fed954e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | """
providers — pluggable backends that produce structured caption JSON.
A provider exposes one method:
process(caption: str, **kwargs) -> ProviderResult
…where ProviderResult mirrors the shape of model_runner.GenResult so the
evaluator and benchmark scorer can consume both interchangeably.
Current providers:
- QwenRunner (model_runner.py — kept at top-level for back-compat)
- ClaudeProvider (claude_api.py — Anthropic API with native structured output)
"""
from __future__ import annotations
from dataclasses import dataclass
@dataclass
class ProviderResult:
"""Backend-agnostic result of one caption-processing call.
Shape matches model_runner.GenResult so the scorer doesn't care which
backend produced the result. `backend` says which backend ran it; `mode`
says how (constrained vs. free vs. tool-use vs. …).
"""
mode: str
raw_text: str # the JSON string the backend produced
backend: str # "qwen" | "claude" | …
n_input_tokens: int # non-cached input (matches Anthropic usage.input_tokens)
n_output_tokens: int # output tokens
cost_usd: float = 0.0 # for paid APIs; 0 for local models
n_cache_creation_tokens: int = 0 # tokens written to prompt cache (1.25x rate)
n_cache_read_tokens: int = 0 # tokens served from prompt cache (0.10x rate)
|