LangChain解决问题的思路
LangChain解决问题的思路
可以把解决问题当做一个过程,我们可以从不同的角度去观察解决问题的方式,主要分成按数据源,按问题复杂度,按问题的解决方式划分,只是概念上的不同,其实最终解决问题的方式是灵活的,统一的。
按数据源:
非结构化数据–方式1(向量化)
Step1:源文档向量化
Step2: 问答时检索相似向量作为context
其它方式: KNN聚类,Time Weighted VectorStore,TFIDF
非结构化数据:各种文档,电子书,word,pdf, 代码等
结构化数据–方式1(数据库SQL,知识图谱CQL)
自然语言问题–>SQL–>(SQL语法检查)–>查询结果–>自然语言答案
按问题复杂度
普通问题
参考上述按数据源的方式
复杂问题
Chains的方式,问题解决步骤较多时,拆分多个子步骤
Chains的种类:SequentialChain,RouterChain,FLARE等
FLARE: 开始回答问题,如果您开始生成模型不确定的token,请查找相关文档,使用那些文档继续生成,重复直到完成,需要生成答案的 LLM 需要返回 logprobs,这样我们才能识别不确定的token。
按问题的解决方式, 不同的Agent
Agent: 根据用户输入,去调用其它的工具,把Chain,Prompt,model之类的都放在Agent里,Agent负责调用这些,用户只需和Agent对话。可以认为现实世界中的一个人。
Action Agents:最终的任务执行的人,例如工程师,操作者。
Plan-and-Execute Agents:只做计划的人,例如架构师,领导者。
Action Agents
执行流程和状态:
Agent决定使用哪个工具(如果有的话),以及该工具的输入应该是什么;然后使用该工具输入调用该工具,并记录观察结果(这只是使用该工具输入调用该工具的输出);工具、工具输入和观察的历史被传回Agent,并决定下一步采取什么步骤;重复此操作,直到代理决定不再需要使用工具,然后直接响应用户。
Plan-and-Execute Agents
收到一些用户输入;计划者列出了要采取的步骤;执行者遍历步骤列表,执行它们
有意思的思路1
Agent Simulations: 构建一个虚拟环境,多个Agent之间进行交互,类强化学习中的多Agent,互相学习。
有意思的思路2:
以协作方式运行 BLOOM-176B 等大型语言模型——您加载模型的一小部分,然后与服务其他部分的人员合作进行推理或微调。
Autonomous Agents,自治思想
Agent的自治思想是指Agent作为一个独立的个体,能够自主地执行任务并做出决策,而不需要外部干预或控制。这种思想源于人工智能领域中的Agent理论,强调Agent应该具备自主性、灵活性、适应性和自适应性等特点,能够在不断变化的环境中自主地学习、适应和优化自己的行为,以实现预设的目标。
在实际应用中,Agent的自治思想通常通过为其设计合适的目标和约束来实现。例如,为Agent设定明确的目标,使其能够自主地根据环境变化调整自己的行为,同时在行为上设定一些约束,以确保其在执行任务时不会对环境和其他Agent造成不良影响。同时,Agent的自治思想也需要考虑到其与其他Agent之间的协作和竞争关系,以实现整个系统的高效运行。
Agent的自治思想是为了让Agent能够更加独立、自主地执行任务,更好地适应不断变化的环境,并实现预设的目标。