File size: 2,006 Bytes
226b5f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7e33b86
 
226b5f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
53
import os
import requests
import random
from typing import Dict, Any

API_BASE_URL = os.getenv("API_BASE_URL", "https://api.openai.com/v1")
MODEL_NAME = "RandomAgent"
ENV_URL = os.getenv("ENV_URL", "http://localhost:7860")

def reset_env(task_id: int):
    return requests.post(f"{ENV_URL}/reset?task_id={task_id}", json={}).json()

def step_env(task_id: int, action: Dict[str, Any]):
    return requests.post(f"{ENV_URL}/step?task_id={task_id}", json=action).json()

def run_agent(task_id: int):
    task_name = f"task-{task_id}"
    print(f"[START] task={task_name} env=causal-stream-v3 model={MODEL_NAME}", flush=True)
    
    obs = reset_env(task_id)
    rewards = []
    steps_taken = 0
    done = False

    actions = [
        {"type": "read_dashboard"},
        {"type": "sample_stream", "sample_size": 20},
        {"type": "inspect_lineage", "model_id": "aggregator"},
        {"type": "query_system_logs", "log_name": "system_events"},
        {"type": "query_provider_contract", "provider_id": "Stripe-Sim"},
        {"type": "submit_theory", "cause": "latency_spike", "evidence": []},
        {"type": "submit_postmortem", "timeline": [{"tick": 0, "description": "Random guess"}], "impact_duration_ticks": 100, "prevention_action": "update_schema"}
    ]
    
    while not done and steps_taken < 10:
        action = random.choice(actions)
        resp = step_env(task_id, action)
        reward = resp['reward']
        done = resp['done']
        rewards.append(reward)
        steps_taken += 1
        print(f"[STEP] step={steps_taken} action={action['type']} reward={reward:.2f} done={str(done).lower()} error=null", flush=True)
        if action["type"] == "submit_postmortem":
            break

    success = sum(rewards) > 0.5
    score = sum(rewards)
    print(f"[END] success={str(success).lower()} steps={steps_taken} score={score:.2f} rewards={','.join([f'{r:.2f}' for r in rewards])}", flush=True)

if __name__ == "__main__":
    for tid in [1, 2, 3, 4]:
        run_agent(tid)