#!/usr/bin/env python """ Parameter Optimization Using BrowseComp Benchmark for Local Deep Research. This script demonstrates optimizing research parameters using the BrowseComp benchmark for higher quality evaluation. Usage: # Install dependencies with PDM cd /path/to/local-deep-research pdm install # Run the script with PDM pdm run python examples/optimization/browsecomp_optimization.py """ import json import sys from datetime import datetime from pathlib import Path from local_deep_research.benchmarks.optimization import optimize_parameters # Add the src directory to the Python path project_root = str(Path(__file__).parent.parent.parent.resolve()) sys.path.insert(0, str(Path(project_root) / "src")) def main(): # Create timestamp for unique output directory from datetime import timezone timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") output_dir = str( Path("examples") / "optimization" / "results" / f"browsecomp_opt_{timestamp}" ) Path(output_dir).mkdir(parents=True, exist_ok=True) print( f"Starting BrowseComp optimization - results will be saved to {output_dir}" ) # Define a simple parameter space for demonstration param_space = { "iterations": { "type": "int", "low": 1, "high": 3, "step": 1, }, "questions_per_iteration": { "type": "int", "low": 1, "high": 3, "step": 1, }, "search_strategy": { "type": "categorical", "choices": ["rapid", "standard", "parallel"], }, } # Run optimization with BrowseComp benchmark # Using a small number of trials and examples for demonstration print("\n=== Running balanced optimization with BrowseComp benchmark ===") balanced_params, balanced_score = optimize_parameters( query="Climate change effects on biodiversity", param_space=param_space, output_dir=output_dir, n_trials=3, # Small number for demo purposes search_tool="searxng", benchmark_weights={ "browsecomp": 1.0 }, # Specify BrowseComp benchmark only ) print(f"Best balanced parameters: {balanced_params}") print(f"Best balanced score: {balanced_score:.4f}") # Save optimization results summary = { "timestamp": timestamp, "benchmark_weights": {"browsecomp": 1.0}, "balanced": { "parameters": balanced_params, "score": float(balanced_score), }, } with open( Path(output_dir) / "browsecomp_optimization_summary.json", "w", encoding="utf-8", ) as f: json.dump(summary, f, indent=2) print( f"\nDemo complete! Results saved to {output_dir}/browsecomp_optimization_summary.json" ) print(f"Recommended parameters for BrowseComp: {balanced_params}") print( "\nNote: For actual optimizations, we recommend increasing n_trials to at least 20." ) print( "This demo runs with minimal trials to demonstrate the functionality quickly." ) if __name__ == "__main__": main()