()
| 143 | print(f" Error: {approach_result['result']}") |
| 144 | |
| 145 | def main(): |
| 146 | parser = argparse.ArgumentParser(description="Test different LLM inference approaches.") |
| 147 | parser.add_argument("--test_cases", type=str, default=None, help="Path to test cases JSON file") |
| 148 | parser.add_argument("--approaches", nargs='+', default=list(APPROACHES.keys()), help="Approaches to test") |
| 149 | parser.add_argument("--model", type=str, default="gpt-4o-mini", help="Model to use for testing") |
| 150 | parser.add_argument("--base-url", type=str, default=None, help="The base_url for the OpenAI API compatible endpoint") |
| 151 | parser.add_argument("--single-test", type=str, default=None, help="Name of a single test case to run") |
| 152 | args = parser.parse_args() |
| 153 | |
| 154 | # Set default test_cases path relative to this script |
| 155 | if args.test_cases is None: |
| 156 | script_dir = os.path.dirname(os.path.abspath(__file__)) |
| 157 | args.test_cases = os.path.join(script_dir, "test_cases.json") |
| 158 | |
| 159 | # If using local inference mode, override model to a local model |
| 160 | if API_KEY == "optillm" and args.model == "gpt-4o-mini": |
| 161 | args.model = TEST_MODEL |
| 162 | logger.info(f"Using local model: {args.model}") |
| 163 | |
| 164 | # Set environment variable for local inference |
| 165 | if API_KEY == "optillm": |
| 166 | os.environ["OPTILLM_API_KEY"] = "optillm" |
| 167 | |
| 168 | test_cases = load_test_cases(args.test_cases) |
| 169 | |
| 170 | # Use local inference by default for testing |
| 171 | if args.base_url: |
| 172 | client = OpenAI(api_key=API_KEY, base_url=args.base_url) |
| 173 | elif API_KEY == "optillm": |
| 174 | # Use local inference endpoint |
| 175 | client = OpenAI(api_key=API_KEY, base_url="http://localhost:8000/v1") |
| 176 | logger.info("Using local inference endpoint: http://localhost:8000/v1") |
| 177 | else: |
| 178 | client = OpenAI(api_key=API_KEY) |
| 179 | # client = LiteLLMWrapper() |
| 180 | |
| 181 | results = run_tests(test_cases, args.approaches, client, args.model, args.single_test) |
| 182 | print_summary(results) |
| 183 | |
| 184 | # Optionally, save detailed results to a file |
| 185 | with open('test_results.json', 'w') as f: |
| 186 | json.dump(results, f, indent=2) |
| 187 | |
| 188 | if __name__ == "__main__": |
| 189 | main() |
no test coverage detected