三步上手
更新时间:2025-12-29
伐谋是一个强大的代码进化引擎:它会在你的目标与约束下,不断生成更优的代码。要开始使用伐谋,你需要准备好两个代码文件(初始代码与评估器代码)以及提示词。
1)初始代码:进化的起点,你提供一份“能跑的基线代码”,伐谋会在此基础上生成变体、持续优化。
2)评估器:进化的“裁判”,每一轮伐谋生成的新代码,都需要由评估器运行并打分,评估器会告诉伐谋:
- 这份代码是否有效(是否满足约束)
- 这份代码有多优秀(分数越高越好)
- 如果无效,具体哪里不满足(用于指导下一轮改进)
3)提示词:进化的“说明书”,在提示词中详细告诉伐谋应该如何改代码、优化方向是什么、有哪些必须遵守的限制。

初始代码、评估器以及提示词有一些硬性要求和使用建议,下边会进行详细介绍。你也可以直接跳转到使用模版,直接根据模板进行修改。
1.准备初始代码
- 硬性要求:使用 # EVOLVE-BLOCK-START 和 # EVOLVE-BLOCK-END 标记出你希望被伐谋改进的代码块
-
设计原则:推荐把代码分成两层。
- 稳定层(不可改):I/O、数据解析、主入口函数等
- 可变层(可改):你希望伐谋优化的部分,写在# EVOLVE-BLOCK-START 和 # EVOLVE-BLOCK-END内
Plain Text
1# EVOLVE-BLOCK-START
2def your_function():
3 # 希望被伐谋演化的部分放在# EVOLVE-BLOCK内
4 pass
5def helper1():
6 # 可以要求模型生成一些辅助函数,希望被修改的辅助函数也放在# EVOLVE-BLOCK内
7 pass
8# EVOLVE-BLOCK-END
9
10def helper2():
11 # 不希望被修改的辅助函数放在# EVOLVE-BLOCK外
12 pass
13
14def main():
15 # 建议把主入口函数放在# EVOLVE-BLOCK外
2.编写评估器
- 核心职能:运行并评估初始代码。
-
硬性要求:必须包含 evaluate 函数且该函数有如下硬性规定:
- 必须包含参数 path_user_py 且参数名不可改变
- 返回为字典格式且须包含以下三个关键字段(字段名不可变):
| 字段名 | 类型 | 含义及要求 |
|---|---|---|
| validity | 0.0/1.0 | 字段作用:判断新生成的代码的有效性 自定义有效性判断条件,如果新生成的代码符合约束条件,设置为1,不符合设置为0 |
| combined_score | float | 字段作用:伐谋以combined_score为指南针,不断改进代码提高combined_score 自定义计算方式,combined_score值越高说明新生成的代码越好 |
| error_info | dict | 字段作用:在validity为0的时候,通过error_info字段告诉模型不满足约束的具体原因,模型才能知道具体的改进方向 在validity=1的时候,需要将error_info设为空字典{};在validity=0的时候,需要自定义返回error_info的信息 |
Plain Text
1def evaluate(path_user_py: str) :#函数名不可变,path_user_py参数名不可变
2
3 #定义返回的字典
4 metrics= {
5 "validity": 0.0, #必须,0.0/1.0,判断生成的代码的有效性
6 "combined_score": 0.0, #必须,float,判断生成的代码的质量,分数越高越好
7 "feature1": 0.0, #添加任何你关注的指标,可以没有,变量名自定义
8 "feature2": 0.0, #添加任何你关注的指标,可以没有,变量名自定义
9 "error_info": {}#必须,字典格式,在生成的代码无效的时候,需要在这个字段中说明为什么无效
10 }
3.编写提示词
提示词是指导伐谋改进代码的重要说明,一个好的prompt通常需要包括以下五个部分:
Plain Text
11. 角色与目标
2 - 我是谁
3 - 我要优化什么指标
4
52. 任务定义
6 - 详细说明任务具体背景
7
83. 数据与字段说明
9 - 输入数据各字段含义
10
114. EVOLVE-BLOCK内代码要求
12 - 只能修改 EVOLVE-BLOCK
13 - 生成函数的输入输出要求
14 - 可以说明希望采取的具体策略,指导演化
15
165. 约束校验与评估逻辑说明
17 - 如果是组合优化问题,需要把约束详细说明,与评估器中validity的判断逻辑一一对应
18 - 介绍metrics中的指标具体如何计算的,详细介绍combined_score及其他自定义字段的具体含义
