openenv-email-agent / inference.py
Gagan14's picture
Update inference.py
1535648 verified
Raw
History Blame Contribute Delete
1.82 kB
import os
import time
import requests
from openai import OpenAI
def wait_for_server():
for _ in range(30):
try:
requests.get("http://localhost:7860")
return
except:
time.sleep(1)
wait_for_server()
API_BASE_URL = os.getenv("API_BASE_URL", "https://api.openai.com/v1")
MODEL_NAME = os.getenv("MODEL_NAME", "gpt-4o-mini")
HF_TOKEN = os.getenv("HF_TOKEN")
client = OpenAI(base_url=API_BASE_URL, api_key=HF_TOKEN)
BASE_URL = "http://localhost:7860"
def llm_classify(email):
try:
r = client.chat.completions.create(
model=MODEL_NAME,
messages=[{"role": "user", "content": f"Classify: {email}"}]
)
return r.choices[0].message.content.strip().lower()
except:
return "support"
def run_task(task):
print(f"[START] task={task} env=email_env model={MODEL_NAME}")
state = requests.post(f"{BASE_URL}/reset_{task}").json()["state"]
done = False
step = 0
rewards = []
while not done:
step += 1
action = llm_classify(state["email"])
result = requests.post(
f"{BASE_URL}/step",
json={"action": action}
).json()
state = result["state"]
reward = result["reward"]
done = result["done"]
rewards.append(reward)
print(
f"[STEP] step={step} action={action} reward={reward:.2f} done={str(done).lower()} error=null"
)
score = sum(rewards) / len(rewards)
# ensure strictly between (0,1)
score = max(0.01, min(0.99, score))
print(
f"[END] success=true steps={step} score={score:.2f} rewards={','.join(f'{r:.2f}' for r in rewards)}"
)
return score
if __name__ == "__main__":
for t in ["easy", "medium", "hard"]:
run_task(t)