Spaces:
Running on Zero
Running on Zero
| """A/B the baseline vs refined prompt against the LIVE Space (Qwen2.5-VL). | |
| Encodes local image files and POSTs each set to /api/interpret twice — once with | |
| the baseline prompt, once refined — using the per-request `refined` override, so | |
| both variants see the exact same image on the same model. Prints them to compare. | |
| Usage: | |
| .venv/bin/python -m scripts.ab_live IMG [IMG ...] [--fragment "a line"] | |
| Up to 4 images make one "moment". | |
| """ | |
| import argparse | |
| import base64 | |
| import mimetypes | |
| import sys | |
| import time | |
| import httpx | |
| SPACE = "https://build-small-hackathon-chalchitra.hf.space/api/interpret" | |
| def to_data_url(path: str) -> str: | |
| mime = mimetypes.guess_type(path)[0] or "image/jpeg" | |
| with open(path, "rb") as f: | |
| return f"data:{mime};base64," + base64.b64encode(f.read()).decode() | |
| def run(images, fragment, refined): | |
| body = {"images": images, "fragment": fragment, "refined": refined} | |
| t0 = time.time() | |
| r = httpx.post(SPACE, json=body, timeout=600) | |
| dt = time.time() - t0 | |
| if r.status_code != 200: | |
| return None, dt, f"HTTP {r.status_code}: {r.text[:200]}" | |
| return r.json(), dt, None | |
| def show(label, data, dt, err): | |
| print(f"\n{'='*74}\n{label} [{dt:.1f}s]\n{'-'*74}") | |
| if err: | |
| print(f" ERROR: {err}") | |
| return | |
| print(data["interpretation"]) | |
| print("\nfilms: " + " · ".join(f"{f['title']} ({f['year']})" for f in data["films"])) | |
| def main(): | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("images", nargs="+") | |
| ap.add_argument("--fragment", default="") | |
| args = ap.parse_args() | |
| images = [to_data_url(p) for p in args.images[:4]] | |
| print(f"{len(images)} image(s); fragment={args.fragment!r}\nlive: {SPACE}") | |
| for refined in (False, True): | |
| data, dt, err = run(images, args.fragment, refined) | |
| show("REFINED" if refined else "BASELINE", data, dt, err) | |
| if __name__ == "__main__": | |
| main() | |