"""Debug script to test a single infinite loop test case.""" import asyncio import os from openai import AsyncOpenAI from suno_orpheus.eval.runner import evaluate_test_case_single_run from suno_orpheus.eval.test_cases_infinite_loop import INFINITE_LOOP_001 async def main(): # Check API key api_key = os.environ.get("ORPHEUS_TEST_OPENAI_KEY") if not api_key: print("āŒ ERROR: ORPHEUS_TEST_OPENAI_KEY not set") print("Please set it with: export ORPHEUS_TEST_OPENAI_KEY=") return print(f"āœ… API key found: {api_key[:10]}...") print(f"šŸ“ Testing: {INFINITE_LOOP_001.name}") print(f"šŸ“‹ Context messages: {len(INFINITE_LOOP_001.context.get('messages', []))}") print(f"šŸ’¬ User prompts: {INFINITE_LOOP_001.user_prompts}") print() # Create OpenAI client openai_client = AsyncOpenAI(api_key=api_key) # Run single test print("šŸƒ Running single test case...") try: result = await evaluate_test_case_single_run(INFINITE_LOOP_001, openai_client) print("\nšŸ“Š Result:") print(f" Passed: {result['passed']}") print(f" Duration: {result['duration']:.2f}s") if "error" in result: print(f"\nāŒ Error: {result['error']}") else: response = result.get("response", {}) print(f" Exchanges: {response.get('exchanges', 'N/A')}") print(f" Tool calls: {len(response.get('tool_calls', []))}") if response.get("tool_calls"): first_tool = response["tool_calls"][0]["function"]["name"] print(f" First tool: {first_tool}") print("\n Metrics:") for metric in result.get("metric_results", []): status = "āœ…" if metric["success"] else "āŒ" print(f" {status} {metric['name']}: {metric['reason']}") except Exception as e: print(f"\nāŒ Exception: {e}") import traceback traceback.print_exc() if __name__ == "__main__": asyncio.run(main())