| |
| """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()) |
|
|