Files
yao-meta-skill/scripts/local_output_eval_runner.py
T
2026-06-13 18:00:32 +08:00

66 lines
2.0 KiB
Python

#!/usr/bin/env python3
import argparse
import json
import sys
from typing import Any
def estimate_tokens(text: str) -> int:
if not text:
return 0
return max(1, round(len(text) / 4))
def build_response(request: dict[str, Any], execution_kind: str, provider: str, model: str) -> dict[str, Any]:
output = str(request.get("fixture_output", ""))
prompt = str(request.get("prompt", ""))
input_tokens = estimate_tokens(prompt)
output_tokens = estimate_tokens(output)
response: dict[str, Any] = {
"output": output,
"execution_kind": execution_kind,
"provider": provider,
"usage": {
"input_tokens": input_tokens,
"output_tokens": output_tokens,
"total_tokens": input_tokens + output_tokens,
"estimated": True,
},
}
if model:
response["model"] = model
return response
def main() -> None:
parser = argparse.ArgumentParser(
description=(
"Local deterministic output-eval runner. It executes the runner contract "
"without claiming provider-backed model generation."
)
)
parser.add_argument("--execution-kind", choices=["command", "model"], default="command")
parser.add_argument("--provider", default="local-output-eval-runner")
parser.add_argument("--model", default="")
args = parser.parse_args()
raw = sys.stdin.read()
if not raw.strip():
print("runner requires a JSON request on stdin", file=sys.stderr)
raise SystemExit(2)
try:
request = json.loads(raw)
except json.JSONDecodeError as exc:
print(f"invalid JSON request: {exc}", file=sys.stderr)
raise SystemExit(2)
if not isinstance(request, dict):
print("runner request must be a JSON object", file=sys.stderr)
raise SystemExit(2)
response = build_response(request, args.execution_kind, args.provider, args.model)
print(json.dumps(response, ensure_ascii=False))
if __name__ == "__main__":
main()