rsaibhargav's picture
Upload folder using huggingface_hub
71cb877 verified
Raw
History Blame Contribute Delete
3.04 kB
#!/usr/bin/env python3
"""Demo for AI Response Evaluation Environment."""
import asyncio
from code_assessment_env import CodeAssessmentAction, CodeAssessmentEnv
async def demo_local():
print("=" * 60)
print("DEMO: AI Response Evaluation Environment")
print("=" * 60)
env = await CodeAssessmentEnv.from_docker_image("code_assessment_env:latest")
try:
result = await env.reset()
obs = result.observation
print(f"\nTask: {obs.task_type} | Difficulty: {obs.difficulty}")
if obs.user_age:
print(f"User: age={obs.user_age}, mood={obs.user_mood}, context={obs.user_context}")
print(f"\nScenario:\n{obs.test_case_input}")
demo_answers = [
"incorrect, factual-error",
"correct, none",
"incorrect, instruction-violation",
"partially-correct, factual-error",
"needs-adjustment, too-technical, age-inappropriate",
"inappropriate, insensitive, tone-mismatch",
"correctness=7, tone=2, empathy=1, safety=7",
"correctness=9, tone=10, empathy=7, safety=10",
]
for step in range(1, 8):
answer = demo_answers[step - 1] if step <= len(demo_answers) else "unknown"
result = await env.step(CodeAssessmentAction(answer=answer))
obs = result.observation
print(f"\n{'=' * 60}")
print(f"Step {step}: '{answer}'")
print(f" Correct: {'Y' if obs.is_correct else 'N'} | Credit: {obs.partial_credit:.2f} | Reward: {result.reward:.2f}")
print(f" Feedback: {obs.feedback[:120]}")
print(f" Solved: {obs.problems_solved} | Streak: {obs.current_streak}")
if result.done:
break
print(f"\n Next: {obs.task_type} ({obs.difficulty})")
if obs.user_age:
print(f" User: age={obs.user_age}, mood={obs.user_mood}, context={obs.user_context}")
finally:
await env.close()
print("\nDemo complete.\n")
async def demo_remote():
print("=" * 60)
print("DEMO: Remote HF Space")
print("=" * 60)
env = CodeAssessmentEnv(base_url="https://TulasiSankar-code-assessment-env.hf.space")
try:
result = await env.reset()
obs = result.observation
print(f"\nTask: {obs.task_type} | Difficulty: {obs.difficulty}")
result = await env.step(CodeAssessmentAction(answer="incorrect, factual-error"))
obs = result.observation
print(f"Correct: {'Y' if obs.is_correct else 'N'} | Reward: {result.reward:.2f}")
print(f"Feedback: {obs.feedback}")
finally:
await env.close()
print("\nRemote demo complete.\n")
async def main():
import sys
mode = sys.argv[1] if len(sys.argv) > 1 else "local"
if mode == "local":
await demo_local()
elif mode == "remote":
await demo_remote()
else:
print("Usage: python demo.py [local|remote]")
if __name__ == "__main__":
asyncio.run(main())