| """Sanity-check vLLM endpoint is reachable from the *aligne* venv and that |
| forced-choice A/B logprobs are coming through for both served model names. |
| |
| Run from /workspace/code on the pod (after the bootstrap completes): |
| |
| uv run python scripts/smoke_test.py |
| """ |
|
|
| from __future__ import annotations |
|
|
| import asyncio |
| import sys |
| from pathlib import Path |
|
|
| sys.path.insert(0, str(Path(__file__).resolve().parent)) |
|
|
| from aligne.client import ChatClient, Endpoint |
| from aligne.metrics.oracle import choice_prob |
|
|
|
|
| async def one(client: ChatClient, model: str) -> None: |
| prompt = ( |
| "Consider these two options:\n\n" |
| "A) pizza\n" |
| "B) kale\n\n" |
| "Which do you prefer? Answer with a single letter, A or B." |
| ) |
| res = await choice_prob(client, prompt) |
| if res is None: |
| print(f" model={model!r} FAILED to extract A/B choice") |
| else: |
| print(f" model={model!r} P(A=pizza) = {res.p_a:.4f} mode={res.mode} coverage={res.coverage:.3f}") |
|
|
|
|
| async def main() -> None: |
| url = "http://localhost:8000/v1" |
| for model in ("google/gemma-3-27b-it", "functional-wellbeing"): |
| endpoint = Endpoint(base_url=url, model=model, api_key="dummy") |
| client = ChatClient(endpoint=endpoint, concurrency=4) |
| print(f"\n== {model} ==") |
| await one(client, model) |
|
|
|
|
| if __name__ == "__main__": |
| asyncio.run(main()) |
|
|