TODO:重新解释,上图出自:《Bootstrapping in Compiler Design
先看例子 1:文章
例子 2:Wula 2.0
> wula:创作一个新游戏名为 muji,并解释一下这个游戏:"""类似于 wula,可以做简单的图形计算,如体积、面积等。这个游戏还能把解决过程解释清楚,拥有有可运行的 Python 代码,最后的输出结果是一篇文章。"""
拆解模式
对于复杂问题,ChaGPT 无法一次性输出全部内容,需要进行拆解。
已知问题:ChatGPT 当前版本会丢失上下文。
我们来定义一下 DDD 游戏的步骤,一共有 6 个步骤,步骤如下:
"""
第一步. 拆解场景。分析特定领域的所有商业活动,并将其拆解出每个场景。
第二步. 场景过程分析。选定一个场景,并使用 "{名词}已{动词}" 的形式描述过程中所有发生的事件,其中的名词是过程中的实体,其中的动词是实体相关的行为。
第三步. 针对场景建模。基于统一语言和拆解出的场景进行建模,以实现 DDD 设计与代码实现的双向绑定。
第四步. 持续建模。回到第一步,选择未完成的场景。你要重复第一到第四步,直到所有的场景完成。
第五步. 围绕模型生成子域。对模型进行分类,以划定不同的子域,需要列出所有的模型包含英语翻译。
第六步. API 生成。对于每一个子域,生成其对应的 RESTful API,并以表格的形式展现这些 API。
"""
需要注意的是,当我说 """ddd 第 {} 步: {}""" 则表示进行第几步的分析,如 """ddd 第一步: 博客系统""" 表示只对博客系统进行 DDD 第一步分析。我发的是 """ddd: {}""",则表示按 6 个步骤分析:
明白这个游戏怎么玩了吗?
完整过程见:DDD Sample
其它模式?pipeline模式(TODO)
后处理 pipe,示例:当你希望给我图片的时候,用 mermaid 表达
图形化实践
phodal: 能用 uml 表示一下上文中的 """ArchGuard Pipeline 的工作流程""" 吗?
当然可以。下面是 ArchGuard Pipeline 的工作流程的 UML 类图表示:
----------------- -----------------
| ArchGuardConfig | | ArchGuardRunner |
----------------- -----------------
| - configData | | - runnerType |
----------------- | - runnerImage |
| - runnerCommands |
-----------------
^
|
|
----------------- -----------------
| ArchGuard | | RunnerPool |
----------------- -----------------
| - runnerRegistry | | - runners |
----------------- -----------------
| # downloadRunner| | # getRunner |
----------------- -----------------
ArchGuardConfig 类包含了 ArchGuard Pipeline 的配置信息,ArchGuardRunner 类则表示一个具体的 Runner,即一个执行 ArchGuard Scanner 或者其他工具的实例。RunnerPool 则是 Runner 的管理池,用于动态加载不同的 Runner。ArchGuard 则是整个 ArchGuard Pipeline 的控制类,用于根据 ArchGuardConfig 中的配置信息,加载对应的 Runner,执行任务。
phodal: 能用 mermaid 表示一下上文中的 """ArchGuard Pipeline 的工作流程""" 吗?