import os from concurrent.futures import ThreadPoolExecutor from unittest.mock import patch import pytest from dotenv import load_dotenv from swarms.models.autotemp import AutoTempAgent api_key = os.getenv("OPENAI_API_KEY") load_dotenv() @pytest.fixture def auto_temp_agent(): return AutoTempAgent(api_key=api_key) def test_initialization(auto_temp_agent): assert isinstance(auto_temp_agent, AutoTempAgent) assert auto_temp_agent.auto_select is True assert auto_temp_agent.max_workers == 6 assert auto_temp_agent.temperature == 0.5 assert auto_temp_agent.alt_temps == [0.4, 0.6, 0.8, 1.0, 1.2, 1.4] def test_evaluate_output(auto_temp_agent): output = "This is a test output." with patch("swarms.models.OpenAIChat") as MockOpenAIChat: mock_instance = MockOpenAIChat.return_value mock_instance.return_value = "Score: 95.5" score = auto_temp_agent.evaluate_output(output) assert score == 95.5 mock_instance.assert_called_once() def test_run_auto_select(auto_temp_agent): task = "Generate a blog post." temperature_string = "0.4,0.6,0.8,1.0,1.2,1.4" result = auto_temp_agent.run(task, temperature_string) assert "Best AutoTemp Output" in result assert "Temp" in result assert "Score" in result def test_run_no_scores(auto_temp_agent): task = "Invalid task." temperature_string = "0.4,0.6,0.8,1.0,1.2,1.4" with ThreadPoolExecutor(max_workers=auto_temp_agent.max_workers) as executor: with patch.object( executor, "submit", side_effect=[None, None, None, None, None, None] ): result = auto_temp_agent.run(task, temperature_string) assert result == "No valid outputs generated." def test_run_manual_select(auto_temp_agent): auto_temp_agent.auto_select = False task = "Generate a blog post." temperature_string = "0.4,0.6,0.8,1.0,1.2,1.4" result = auto_temp_agent.run(task, temperature_string) assert "Best AutoTemp Output" not in result assert "Temp" in result assert "Score" in result def test_failed_initialization(): with pytest.raises(Exception): AutoTempAgent() def test_failed_evaluate_output(auto_temp_agent): output = "This is a test output." with patch("swarms.models.OpenAIChat") as MockOpenAIChat: mock_instance = MockOpenAIChat.return_value mock_instance.return_value = "Invalid score text" score = auto_temp_agent.evaluate_output(output) assert score == 0.0