08|使用LLM辅助业务理解
下载APP
关闭
渠道合作
推荐作者
08|使用LLM辅助业务理解
徐昊 · 徐昊 · AI时代的软件工程
课程介绍
讲述:徐昊
时长05:31大小5.05M
你好,我是徐昊,今天我们来继续学习 AI 时代的软件工程。
在上一节课,我们介绍了如何使用业务模型通过模型展开的方式,帮助我们理解业务。我们也谈到了,在使用模型展开的时候,我们处在庞杂的认知模式下。因此,提效的关键在于构造思维链,让 LLM 帮助我们更好地应用不可言说知识。
那么今天,我们就围绕之前的例子,看看如何通过 LLM 辅助我们理解不同的业务场景。
通过半结构化自然语言表示模型
当我们想让大语言模型(Large Language Model,LLM)帮助我们通过模型解释业务知识时,首先就会碰到一个问题,如何将我们的模型表达为大语言模型能够理解的形式。
其实这比想象中要容易得多,因为 LLM 不仅仅懂得自然语言,它还懂得各种编程语言或结构化描述语言。我们可以使用 Mermaid 描述我们的领域模型:
当我们把这段 Mermaid 录入 LLM,它会为我们提供它的理解:
其中大部分的内容都是正确的,只是不够准确。比如领域概念的名字,在 LLM 中的解读部分就是错误的。再比如,关联所代表的含义,也不甚准确。图里 Department、Program、Offer 三个对象间的意思就不对。
这时候,我们可以使用一个我发明的技巧,叫半结构化自然语言。所谓半结构化自然语言,就是在结构化的描述中混入自然语言去补充对应的上下文。说人话就是写注释。
那为什么要叫半结构化自然语言呢?因为在 LLM 的视角来看,结构化的信息和非结构化的自然语言一样重要。半结构化自然语言既可以看作以自然语言给予结构化数据补充,也可以看作结构化数据赋予自然语言结构。而从赋予自然语言结构的角度,就能够解锁更多对于 LLM 应用的巧思。
首先我们来解决一下命名的问题。在 Mermaid 中增加注释,并给出解释和例子:
这就是半结构化自然语言为什么会被称作半结构化自然语言。我们通过注释,实际上使用了少样本迁移学习(Few Shots Example),在一个小范围的上下文中,给 LLM 提供了更为具体的迁移指引。
接下来我们用同样的方法来处理关联关系。通过 Mermaid 的语法,标注关系之间方向和含义,并提供注释:
至此,我们可以看到 LLM 已经可以理解我们包含在模型中的业务知识了。
围绕业务上下文进行模型的展开
让我们再看一下上节课中模型展开之后的结果:
可以明显看到,我们的模型展开了两次。第一次是根据 Given 描述的场景,寻找样例数据,然后再用模型实例化解释这个数据。第二次是根据 When 的描述,引入了数据改变,然后再用模型实例化解释这个数据。
这是一个典型的知识生成(Generated Knowledge)场景。下面我来展示一下这个知识提取的过程。让我们先做一个提示词模板,然后先给出第一个任务,让 LLM 根据验收条件生成样例数据。
我们看到此处的模型展开与图中得到的结果是一样的,并且 LLM 按照模型的指引,在当前的上下文中给出了为什么如此展开的解释。最后 LLM 按照要求以 YAML 的格式给出数据,便于我们进行数据处理与准备。我们可以改进任务,让 LLM 帮助我们生成后续的结果。
这个结果基本是正确的,但是在注册的时候,LLM 认为应该连同课程一起注册了。这并不是我们希望的结果。
那么我们可以继续在半结构化自然语言中,包含一部分思维链的内容(Chain of Thought,CoT),也就是解释一下为什么注册和选课应该是分开的环节,并不应该合并。
通过在模型描述的注释中,引入部分思维链的内容,我们成功地指导了 LLM 按照模型与我们的期待,完成了模型展开的部分。
小结
到此为止,我们通过将模型转化为 Mermaid 格式,并将其转化为半结构化自然语言,指导 LLM 帮助我们完成了模型展开。这里有几个问题需要注意。
第一,通过 Mermaid 描述的类图,极大地简化了我们构造 CoT 的难度。这是因为 Mermaid 描述的类图,本身就是对于抽象概念的表述。而 LLM 可以理解 Mermaid 中的内容,这样 LLM 会自然而然地使用 Mermaid 中的概念,做下一步分解映射的指引。这也是目前为止(2023 年 12 月),我们构造思维链最简单的方法。
第二,在 LLM 通过 Mermaid 构造的原始思维链中,LLM 会更多地将它映射到方案域。所以需要我们通过半结构化自然语言的方式,以问题域的角度,对思维链进行标注。也就是,通过注释给予更多的上下文信息,并且在 Mermaid 允许提供额外信息的地方,提供自然语言的说明。
第三,由于我们使用的是类图,一些隐含的关系需要通过额外的方式补充。当然,如果我们愿意,还可以逐步引入关键逻辑的时序图,进一步帮助 LLM 理解业务上下文。但是,以我的经验,大部分时候,一些简单的补充就已经足够了。
最后,如果你不会写 Mermaid 或是别的结果描述,可以使用 ChatGPT-4 的识图功能,让它生成最初始的版本,再在其上修改。
思考题
请使用这节课介绍的技术,在其他场景中展开模型。
欢迎你在留言区分享自己的思考或疑惑,我们会把精彩内容置顶供大家学习讨论。
本文介绍了如何使用LLM(Large Language Model)辅助理解业务知识。作者首先提到了使用Mermaid描述领域模型,并通过半结构化自然语言的方式补充注释,以帮助LLM更好地理解模型中的业务知识。其次,文章讨论了围绕业务上下文进行模型展开的过程,以及如何引导LLM根据模型与期望完成模型展开。最后,作者总结了使用Mermaid描述类图简化了构造思维链的难度,强调了通过半结构化自然语言的方式对思维链进行标注的重要性,并提到了逐步引入时序图来帮助LLM理解业务上下文的可能性。整体而言,本文通过具体的例子和技巧,详细阐述了如何利用LLM辅助理解不同的业务场景,为读者提供了实用的指导和建议。文章内容丰富,通过实际案例和技巧,为读者提供了一种新的思路和方法,可以帮助他们更好地利用LLM来理解和应用业务知识。
分享给需要的人,Ta购买本课程,你将得29元
生成海报并分享
2024-03-25
赞 5
提建议
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
07|通过业务建模应用业务知识
下一篇
09|LLM辅助建模(一):构造反馈循环
全部留言(8)
- 最新
- 精选
- 李威置顶2024-03-26 来自湖南请教老师:对于一个复杂的软件系统有大量的领域模型,所有的领域模型及其他们之间的关系我都用mermaid格式编写好,并添加相应的注释,但是最终生成的文本超过了LLM可接受最大字数限制,我譔怎么办呢? 当然我可以根据限界上下文或者功能模块将领域模型进行拆分,每次只为LLM提供部分领域模型的半结构化自然语言描述文本,这样可以让LLM针对部分业务需求为我提供相关的辅助。 还有一种办法是每次为LLM提供部分领域模型的半结构化自然语言描述文本,然后让其先总结一把,之后再输入另一部分的领域模型,继续让其总结以压缩文本内容。但是我试了一下发现,针对这种领域模型的半结构化自然语言的描述文本,LLM一总结就把重要的领域概念直接给总结没了,下次直接使用LLM总结后的文本重新发起一轮新的聊天对话,他就完全不知道自己在说什么了。 所以,请教老师,如何突破LLM对字数的限制,将大量的领域知识一把喂给LLM?展开
作者回复: 以目前chtgpt的context window 很难超过 而如果超过 你可以看一下 领域模型是不是抽程度不够
2 - 一只豆置顶2024-03-25 来自广东有个很模糊的直觉性感触:这两讲中的业务模型好像是比较 E-R 样子的,好像偏重于显性知识的核心脉络全写出来。看了编辑推荐的 《创造知识的企业》后,特别是SECI 模型,我在想 未来的模型是不是 不一定停留在显性知识范畴,而是从人类直接提取不可言说知识后形成的模型。所以我的问题是:我的推论是否合理?哪里偏差了?如果存在这种新模型,LLM 如何辅助我们展开,并增强业务理解?
作者回复: 不是显式知识 是不可言说 因为任何概念模型的使用 至少都是complicated。这就好像 不能说因为有书教游泳 游泳就是显式知识
共 2 条评论 - 术子米德2024-03-26 来自浙江08 | 使用LLM辅助业务理解 🤔☕️🤔☕️🤔 【R】Mermaid(🧜🏻♀️),用它来描述业务模型,能绘制成示意图,人瞄一眼就懂,LLM也能读懂,这样就双赢。 半结构化自然语言(即:写注释),一方面,作为自然语言的结构化补充,另一方面,作为结构化语言的自然补充,这样就双边补充、双边互通。 【.I.】之前,我敲代码,敲的时候,我Clear,跑一下发现不对,那就转到调试,调的时候,我到处打断点,待程序跑到那里,我停下来看看,我大概率是Complex、小概率是Chaotic。无论怎样,我总能一点点来,喝点水、走走路、熬个夜、睡一觉、问一问,总能搞定。 【Q】如今,自然语言的描述、加上半结构化的注释、再加上增强半结构化的Mermaid,输出的内容有个三长两短,除了一遍又一遍尝试,我咋个“逐行调试”法? — by 术子米德@2024年3月25日展开
作者回复: 使用模型 目的是理解业务 并不是要从模型直接去写代码
共 4 条评论 - 范飞扬2024-03-25 来自广东神操作! 问个细微的问题,请教一下老师和各位同学的经验: 对于比较庞大的领域模型,画图的方式和顺序有什么经验嘛?比如,应该采用以下哪种方式呢? 1、先用draw.io等类似工具画图,再让gpt生成 mermaid. (可能gpt看不懂?) 2、一开始就用mermaid来画图(可能有些没法用mermaid表达?或者不太灵活?) 3、迭代交织使用1和2。 4、还有更好的方式?
作者回复: whatever works for you
共 4 条评论 - 范飞扬2024-04-01 来自广东趁还没讲到测试驱动AI开发,我盲猜一下:生成 yaml 数据后,就可以用于编写 TDD的测试了,有了测试,“功能良好”的软件 就不是啥问题了。不过仅靠这些yaml,应该还没法保证“架构良好”?架构良好得靠CoT? 那CoT从哪来呢?直接复制粘贴架构的描述?(比如六边形架构的描述?)1
- aoe2024-03-30 来自浙江第二次学习,把示例中变量 {user_story}、{ac} 从 07 课中补充完整后询问 AI 获得了正常的答案 第一次学习时,直接粘贴了模板,AI 和我都懵了1
- 赫伯伯2024-04-10 来自河北所以,模型展开的用途是什么???共 4 条评论
- 范飞扬2024-04-04 来自浙江和 chatGPT 的聊天:https://chat.openai.com/share/587f2e0f-53be-4fa0-8458-7f5658b30714