File size: 1,779 Bytes
79c4c46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""Regenerate contracts/fixtures/sample_plan_response.json from a deterministic offline run.



Usage: python -m evaluation.make_sample_response

"""

from __future__ import annotations

import asyncio
import json
from pathlib import Path

from agent.schemas import CampaignPlanRequest
from evaluation.fake_openai import ScriptedOpenAI
from evaluation.harness import build_service, install_fixture_weather

OUTPUT = Path(__file__).resolve().parents[1] / "contracts" / "fixtures" / "sample_plan_response.json"


async def generate() -> dict:
    install_fixture_weather("baseline_mild")
    service = build_service(ScriptedOpenAI())
    try:
        request = CampaignPlanRequest(
            session_id="sample_session_000000000",
            client_id="demo_outdoor_fitness",
            brief={
                "location": "Austin, TX",
                "business_type": "Outdoor fitness studio",
                "campaign_goal": "Promote outdoor class signups",
                "tone": "Urgent",
            },
        )
        response = await service.create_plan(request, request_id="sample-request-0001")
    finally:
        await service.aclose()
    payload = response.model_dump(mode="json")
    # Durations vary between runs; pin them so the fixture is stable in Git.
    diagnostics = payload["plan"]["diagnostics"]
    for key in ("duration_ms", "graph_duration_ms", "drafting_duration_ms"):
        diagnostics[key] = 0
    return payload


def main() -> None:
    payload = asyncio.run(generate())
    OUTPUT.write_text(json.dumps(payload, indent=2, ensure_ascii=False) + "\n", encoding="utf-8", newline="\n")
    print(f"Wrote {OUTPUT} (status={payload['plan']['status']})")


if __name__ == "__main__":
    main()