mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-05-31 19:59:43 +08:00
50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
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")
|
|
|
|
# LLM parameter
|
|
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")
|
|
|
|
# PromptOptimizer parameter
|
|
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()
|