Skip to content

Commit

Permalink
Modifying SPO's README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
XiangJinyu committed Feb 7, 2025
1 parent f2929b2 commit f54903a
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 25 deletions.
10 changes: 9 additions & 1 deletion examples/spo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Configure LLM parameters in `config/config2.yaml` (see `examples/aflow/config2.e
Create a Iteration template file `metagpt/ext/spo/settings/task_name.yaml`:
```yaml
prompt: |
solve question.
Please solve the following problem.
requirements: |
...
Expand All @@ -40,6 +40,14 @@ faq:
...
```
Notes:
- `prompt`: Initial prompt for iteration
- `requirements`: Desired effects/outcomes (e.g., generate more thinking, use more humorous language)
- `count`: Target word count for the generated prompt (e.g., 50). Set to None for no limit
- `faq`: QA pairs used for iteration, can include appropriate number of pairs (typically 3)
- `question`: Questions from the dataset used for iteration
- `answer`: Corresponding answers. Can contain desired thinking patterns or responses instead of actual answers, or can be left empty. See `metagpt/ext/spo/settings/Navigate.yaml` for reference

### 3. Implement the Optimizer 🔧

Use `metagpt/ext/spo/optimize.py` to execute:
Expand Down
48 changes: 24 additions & 24 deletions examples/spo/optimize.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,32 @@ def parse_args():
parser = argparse.ArgumentParser(description='SPO Optimizer CLI')

# LLM parameter
parser.add_argument('--optimize-model', type=str, default='claude-3-5-sonnet-20240620',
help='Model for optimization')
parser.add_argument('--optimize-temperature', type=float, default=0.7,
help='Temperature for optimization')
parser.add_argument('--evaluate-model', type=str, default='gpt-4o-mini',
help='Model for evaluation')
parser.add_argument('--evaluate-temperature', type=float, default=0.3,
help='Temperature for evaluation')
parser.add_argument('--execute-model', type=str, default='gpt-4o-mini',
help='Model for execution')
parser.add_argument('--execute-temperature', type=float, default=0,
help='Temperature for execution')
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')

# Optimizer parameter
parser.add_argument('--workspace', type=str, default='workspace',
help='Path for optimized output')
help='Path for optimized output')
parser.add_argument('--initial-round', type=int, default=1,
help='Initial round number')
help='Initial round number')
parser.add_argument('--max-rounds', type=int, default=10,
help='Maximum number of rounds')
help='Maximum number of rounds')
parser.add_argument('--template', type=str, default='Poem.yaml',
help='Template file name')
help='Template file name')
parser.add_argument('--name', type=str, default='Poem',
help='Project name')
help='Project name')
parser.add_argument('--no-iteration', action='store_false', dest='iteration',
help='Disable iteration mode')
help='Disable iteration mode')

return parser.parse_args()

Expand All @@ -42,16 +42,16 @@ def main():

SPO_LLM.initialize(
optimize_kwargs={
"model": args.optimize_model,
"temperature": args.optimize_temperature
"model": args.opt_model,
"temperature": args.opt_temp
},
evaluate_kwargs={
"model": args.evaluate_model,
"temperature": args.evaluate_temperature
"model": args.eval_model,
"temperature": args.eval_temp
},
execute_kwargs={
"model": args.execute_model,
"temperature": args.execute_temperature
"model": args.exec_model,
"temperature": args.exec_temp
}
)

Expand Down
47 changes: 47 additions & 0 deletions metagpt/ext/spo/settings/Navigate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
prompt: |
Please think step by step.
Ensure the response concludes with the answer in the XML format:
<answer>[Yes or No]</answer>.
requirements: |
Must put the final answer at the end with XML. (<answer>(Yes or No)</answer>,such as <answer>Yes</answer>)
The provided prompt needs to adapt to all current types of questions.
count: None

faq:
- question: |
If you follow these instructions, do you return to the starting point? Always face forward. Take 7 steps left. Take 2 steps backward. Take 7 steps backward. Take 7 steps backward. Take 3 steps forward.
Options:
- Yes
- No
answer: |
A lot of thinking and analysis processes.
...
Final Answer:
<answer>(Yes or No)</answer>
- question: |
If you follow these instructions, do you return to the starting point? Always face forward. Take 6 steps backward. Take 8 steps left. Take 3 steps right. Take 7 steps forward. Take 3 steps right. Take 9 steps right. Take 1 step backward. Take 7 steps left.
Options:
- Yes
- No
answer: |
A lot of thinking and analysis processes.
...
Final Answer:
<answer>(Yes or No)</answer>
- question: |
If you follow these instructions, do you return to the starting point? Turn left. Turn left. Take 6 steps. Take 3 steps. Turn around. Take 1 step. Take 3 steps. Take 5 steps.
Options:
- Yes
- No
answer: |
A lot of thinking and analysis processes.
...
Final Answer:
<answer>(Yes or No)</answer>

0 comments on commit f54903a

Please sign in to comment.