夜雨聆风学习资料网

ARTICLE · 1168053

融合型pdf转md工具开发续集——一般规则和局部修复

融合型pdf转md工具开发续集——一般规则和局部修复
融合型pdf转md工具的开发——WHWM系统工程案例
之前,我已经给AI了一个来完成融合型pdf转md工具的整体思路,对于各个pdf识别md的通道,先从整体到个体识别出来结构,然后以切分最细的通道给出的结构当目标对齐各个通道的结构,对这些最细的结构的内容做投票融合,接着反过来从最细的结构走到更大的结构,从个体走到整体。
我也给了每一个对象的更细节的投票方式:先看各个通道有无这个对象,做投票;再看这个对象被识别为什么结构(公式、正文、图片、列表等等),做投票;接着看这个对象是否属于更大的对象的一部分,也就是父子关系,做投票;最后,看内容,也就是这个对象内的具体字符是不是相同,选多数票。
结合上面的整体规则,这个投票细则就可以把所有对象的融合和整体问题解决。这是我认为的。
但是,在具体编程实现中,我发现AI不是这样做的。AI先大概实现了一个版本。然后,它就开始测试。对于纯文字、文字+公式的PDF的识别基本上很成功。然后,就到了测试更复杂的嵌套结构了。例如,标题中有公式,表格中有图片,表格中有公式,表格可以跨行或者跨列,图中有图片、图标题、图说明,图说明中有公式和文字,等等等等。
然后,我就发现,每一次AI遇到一个具体问题,它都会发明一套针对这个具体问题的规则。例如,遇到表格之中有公式和文字,它会发明“如果你现在在处理一个表格的单元,遇到了公式(文字、公式+文字),你要怎样怎样...”;遇到图说明之中有公式和文字,它会发明“如果你现在在处理一个图说明,遇到了公式(文字、公式+文字),你要怎样怎样...”。每次都能通过这样的具体问题具体场景的规则把正确的pdf转化做出来(AI可以直接阅读PDF,所以其实知道正确答案),而且有的时候这些规则特别别扭。
当我看到这个问题的时候,我做了两件事情:第一,给AI完整的之前的一般规则,并且让它复述和系统性地检查代码是否遵从这个一般规则;第二,给AI一个处理没有正确完成任务的一般方法。具体方法如下:
  1. 你处理没有正确完成任务的目的不是把任务完成。这是测试任务,是否做对本身没有意义。你的目标是从这个测试任务中找到一般的解决方法,找到现有代码的问题,未来遇到其他任务的时候能够把那个任务正确完成。
  2. 你要按照下面的流程来完成:
    1. 从出错的结果开始,反向找出来每一步的输入状态-计算和决策过程-输出状态,直到找出来和一般规则最大的偏离;
    2. 从偏离点之前(或者更早)开始,按照一般规则做脑内预演,看看如果不是按照现有代码,而是按照一般规则,应该有哪些步骤,每个步骤的结果,尤其是最后的结果是什么;
    3. 针对这个实际结果和过程与脑内预演的偏离,找到根因,重新按照一般规则做代码实现,如果确实一般规则还需要补充细则才能完成这个任务一定要有一般规则不够的证据;
    4. 用类似案例做进一步测试,保证能处理类似问题;
    5. 做总结反思,对于最后实现的方案和处理这个问题的过程,写下来,成为案例。
然后,绝大多数时候,当AI再一次遇到没有解决好的问题的时候,它仍然是制定这个特殊场景的规则,来把答案做对。每一次,我都在这个具体场景下,
  1. 先展示如何用一般规则来把这个问题解决,
  2. 提示前面的解决问题的一般流程,让AI找出来多大程度上用了这个一般流程,如果用了为什么没有向着一般规则收敛,而是给出这个场景的具体规则,
  3. 再一次做总结反思,写出来下次遇到问题怎么做(用解决这个项目的问题的一般流程,以及尽可能用这个pdf转md项目的一般规则)。
直到AI转变过来,每次向着这个pdf转md项目的一般规则去收敛,每次用前面的解决问题的一般流程来解决问题。
中间,我还需要多次在合适的场合(刚好下面的高层知识发挥作用的场合)提示AI要用批判性思维、系联性思考(整体到个体,个体到整体,具体到抽象)、科学研究方法和科学精神等等等等。
现在,在这个具体项目的具体这个codex对话中,基本上它能做到前面的两条了。甚至,把这些一般规则写入到这个项目的AGENTS.md之后(我写了一个辅助技能来自动提炼这个层次的规则),在这个项目上,新开一个对话,也不需要太多的案例就可以达到类似的境界。当然,换一个项目还是不行的,因为这个项目的一般规则不一定能够迁移到其他项目。
接着,我逼迫AI做了一个反向追问:为什么你总是给每个具体场景编制规则,为什么你总是先不设计一个一般规则和一般流程,而是通过试错来在一个基本能执行的代码的基础上就开始做局部修正?它的回答是:我把测试当成了方案的主要发现机制。见例如下图。

所以,我们要如何使用和提升AI,以及提升学生和自己呢?一个道理:

  1. 在所有可能的场景下,尽可能地使用高层知识来解决问题,

  2. 形成用高层知识来解决问题的习惯,

  3. 最好有一个指导者,能够启发和逼迫AI/学生/我们自己来认识到这个问题,

  4. 时时刻刻注意提炼,明确地用文字表达出来。

供老师们和AI使用者训练者们参考。

希望有一天这样的高层知识可以直接被训练到AI里面去。我们正在做这个尝试。要是成功那就不一样了。

希望有一天这样的高层知识可以成为每一个学习者的默认思维方式。我们正在做这个尝试。要是成功那就不一样了。

相关学习资料