设计流程
使用此技能将诸如“创建一个统计文本中单词数的流程”之类的请求转化为步骤计划。然后通过 create-process 技能构建它。
包位于 process_package/ 目录下。父类是 process_package/toy_process/process.py。
1. 列出步骤
将目标写成一个有序的小操作列表,每个操作以动词短语形式呈现:
WordReport
1. 清洗文本
2. 统计单词
3. 生成报告
每个步骤应只做一件事,并将结果放入共享的 context 字典中。
2. 确定每个步骤的性质
对于每个步骤,做出选择:
| 使用方法步骤的情况... | 使用子流程步骤的情况... |
|---|---|
| 它是单个小操作 | 它是属于一起的多个操作 |
| 它仅在此处使用 | 它可以在其他流程中复用 |
| 它不需要自己的设置 | 它有自己的参数 |
子流程可以包含子流程。保持嵌套层次浅:对于大多数 toy 流程,两层已经足够。
3. 写下计划
对于每个流程(父流程及每个子流程),记录:
- 类名:采用
CamelCase命名的名词或动词短语,例如CleanText。 - 参数:名称 → 默认值。这些放在
set_parameters中。 - 步骤:按顺序。方法使用
snake_case;子流程使用其类名。 - 上下文键:每个步骤读取和写入的内容。
示例计划:
CleanText 参数: lowercase=True
- strip_punctuation 读取 text 写入 text
- normalise_case 读取 text 写入 text
WordReport 参数: text="", lowercase=True, top_n=3
- load_text 读取 - 写入 text
- CleanText(lowercase=...) (子流程)
- count_words 读取 text 写入 counts
- build_report 读取 counts 写入 report
4. 检查计划
- 每个步骤读取的上下文键都必须由之前的某个步骤写入。
- 每个步骤使用的参数都必须存在于该流程的参数列表中。
- 子流程从其父流程以关键字参数形式获取参数,例如
CleanText(lowercase=self.params["lowercase"])。
如果请求比较模糊,请将计划展示给用户,然后遵循 create-process 技能。