| import argparse |
|
|
| from metagpt.ext.spo.components.optimizer import PromptOptimizer |
| from metagpt.ext.spo.utils.llm_client import SPO_LLM |
|
|
|
|
| def parse_args(): |
| parser = argparse.ArgumentParser(description="SPO PromptOptimizer CLI") |
|
|
| |
| parser.add_argument("--opt-model", type=str, default="claude-3-5-sonnet-20240620", help="Model for optimization") |
| parser.add_argument("--opt-temp", type=float, default=0.7, help="Temperature for optimization") |
| parser.add_argument("--eval-model", type=str, default="gpt-4o-mini", help="Model for evaluation") |
| parser.add_argument("--eval-temp", type=float, default=0.3, help="Temperature for evaluation") |
| parser.add_argument("--exec-model", type=str, default="gpt-4o-mini", help="Model for execution") |
| parser.add_argument("--exec-temp", type=float, default=0, help="Temperature for execution") |
|
|
| |
| parser.add_argument("--workspace", type=str, default="workspace", help="Path for optimized output") |
| parser.add_argument("--initial-round", type=int, default=1, help="Initial round number") |
| parser.add_argument("--max-rounds", type=int, default=10, help="Maximum number of rounds") |
| parser.add_argument("--template", type=str, default="Poem.yaml", help="Template file name") |
| parser.add_argument("--name", type=str, default="Poem", help="Project name") |
|
|
| return parser.parse_args() |
|
|
|
|
| def main(): |
| args = parse_args() |
|
|
| SPO_LLM.initialize( |
| optimize_kwargs={"model": args.opt_model, "temperature": args.opt_temp}, |
| evaluate_kwargs={"model": args.eval_model, "temperature": args.eval_temp}, |
| execute_kwargs={"model": args.exec_model, "temperature": args.exec_temp}, |
| ) |
|
|
| optimizer = PromptOptimizer( |
| optimized_path=args.workspace, |
| initial_round=args.initial_round, |
| max_rounds=args.max_rounds, |
| template=args.template, |
| name=args.name, |
| ) |
|
|
| optimizer.optimize() |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|