ChatGPT等大语言模型存在问题是:
1,复杂问题的分步解决
2,外部访问的能力
3,长期记忆(更进一步学习能力)
langchain提出了解决方案,以下对其进行梳理:
1,复杂问题分步
使用chain解决问题的拆解,一个chain可以保护多个指令,甚至另外的chain。chain的套娃规则,构造一个任务树,非常类似于项目管理中的大任务套小任务。
那如何生成任务,答案是,以chain of thoughs 为原则,给ChatGPT模版提问,然后对回答的文本进行解析。具体在Agents中实现。
AgentExecutor不断地调用agent.plan创建任务actions,并执行,直到任务完成。
2,外部调用
Actions可以调用tools来执行任务,比如搜索,计算。所有actions都是text in,text out。
3,记忆问题
记忆无非是记忆短期,例如历史对话,当前要处理的任务。还有长期,例如大量的问题。 短期直接利用历史文本即可,当然要控制文本的长度,这里涉及到处理当前问题如何调取历史相关记录问题。
长期记忆,例如书本知识。现在的处理方式貌似都是利用text embedding 来做,将文本转出数字向量,然后利用问题与历史问题的数字向量的相似性来查找目标文本,并作为prompt的一部分。
langchain将相关文本的查找都规整到Retriever,不管底层实现如何,最终就是以文本找文本。
但是从chatpdf之类的实现来看,单纯的列出相关文本似乎并不能很好的回答问题。线性文本信息背后本质是结构,单纯的一段一段的文字并没有体现结构。人类虽然在思考问题时也会快速翻阅书籍的一些页面,但并不是单纯的累积文本,而是构造背后的结构。
所以可能问题不是文本累积+问题一个prompt就能解决,关键还是思维链条。利用langchain的思维链条工具去阅读pdf可能会解决问题。
例如,对于阅读论文设计以下几个tool
1,get relate text in {paper}
2,get related text in {ref paper}
3,search web for explaining {concept}
《Langchain是怎么样自动化任务的?》留言数:0