微信扫码
与创始人交个朋友
我要投稿
大模型,它们能通过一系列的推理步骤来完成相当复杂的任务,真的很厉害。
但是,你有没有发现,它们有时候也会“犯错”呢?
这其实是因为大模型有一个固有的问题:它们无法主动更新自己的知识。
换句话说,它们只能依靠训练时学到的那些东西,以及我们给它们的提示信息来做出回答。
如果超出了这个范围,它们要么坦诚地告诉你“我不知道”,要么就开始瞎猜了。
那么,面对这一问题,我们该如何是好呢?
这时,LangChain走进了我们的视野。
LangChain是一个强大的应用开发工具,它基于大语言模型的预测能力,以灵活和模块化的方式简化语言模型的处理。
它是否就是我们解决大模型知识更新难题的钥匙呢?
LangChain开源框架又是如何帮助大模型实现知识库的实时更新的呢?
LangChain的运作原理又是什么呢?
我们一起探究下。
当我们给大模型一个提示时,它会先在自己的本地知识库里找找看,有没有相关的信息。
如果找到了,它就会仔细地比对一下,看看我们给的信息和它的知识库里的是不是一样。
如果一样,那就说明我们的信息是靠得住的,大模型就会放心大胆地输出答案。
但是,如果大模型在自己的知识库里没找到相关的信息怎么办呢?
我需要借助“外部工具”。
当我们需要模型自主行动时,背后其实有个默默工作的“代理”。
在LangChain里,它就像个多功能的接口,连接大模型和外部工具。但要让这个代理真正发挥作用,还需要三个关键元素:大模型、外部工具和控制它们的代理。
大模型负责思考和预测,外部工具提供数据和信息,而代理则是这一切的协调者。
不过,这里有个问题:大模型怎么知道自己下一步要做什么呢?
这就需要代理出场了。
代理会引导大模型进行观察、思考和行动,就像人一样。
这背后的秘密武器就是ReAct框架,它让大模型能像人一样学习新任务、做决策。
但仅仅这样还不够,因为大模型有时会“幻觉”,给出不真实的信息。
这时,ReAct框架和思维链的结合就派上用场了。
它们让大模型能同时使用内部和外部的知识,给出更真实、可靠的答案。
现在,你是不是对LangChain和ReAct框架更感兴趣了?
我们一起看下代码实现。
在开始之前,有一个准备工作,就是你需要在 serpapi.com 注册一个账号,并且拿到你的 SERPAPI_API_KEY,这个就是我们要为大模型提供的 Google 搜索工具。
import os
os.environ["OPENAI_API_KEY"] = 'Your OpenAI API Key'
os.environ["SERPAPI_API_KEY"] = 'Your SerpAPI API Key'
# 导入新的包和类
from langchain_openai import OpenAI
from langchain.agents import load_tools, AgentExecutor
# 使用新的代理构造方法(这里只是一个示例,根据你的需要选择正确的方法)
from langchain.agents import create_react_agent
from langchain import hub
prompt = hub.pull("hwchase17/react")
# 初始化LLM
llm = OpenAI(temperature=0)
# 加载工具
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 使用新的方法创建代理
agent = create_react_agent(tools=tools, llm=llm, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 使用invoke代替run(根据你选择的代理类型,这里的方法可能需要相应更改)
response = agent_executor.invoke({"input": "目前市场上python技术书的平均价格是多少?如果我在此基础上加价15%卖出,应该如何定价?"})
# 输出结果
print(response)
你已经了解了ReAct框架的原理,现在我们来说说LangChain中的“代理”和“链”的差异。
其实,简单来说,链中的操作是提前在代码里写好的,而代理则是用语言模型来决定要做什么和怎么做。
就像是你给代理一个任务,它会自己思考怎么去完成,然后调用需要的工具。这个过程中,代理就像是一个智能的决策者,它会根据任务和环境来选择最合适的操作。
而工具,就是代理用来完成任务的具体手段。
比如,代理要发送一封邮件,那么邮件发送工具就是它要调用的一个工具。
在LangChain中,代理和工具都是非常重要的组件。
代理负责决策,工具负责执行。
而且,你还可以给代理设定不同的性格和背景,让它以不同的方式响应任务。
这样一来,代理就变得更加灵活和可定制了。
当然,代理也不是万能的。
如果它没有合适的工具,或者工具描述不清楚,那么它就可能无法完成任务。
所以,在使用LangChain时,你需要确保给代理提供正确的工具和清晰的描述。
现在,你是不是对LangChain的代理和工具有了更深入的了解呢?
经过这一番探讨,你是否对大模型的知识更新难题及其可能的解决方案——LangChain有了更深入的理解呢?
我们共同揭开了ReAct框架与代理作用的神秘面纱,一窥了LangChain如何助力大模型实现知识库的实时更新。
我们可以试用下LangChain!
探究下LangChain源码!
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-04-26
2024-08-21
2024-04-11
2024-07-09
2024-08-13
2024-07-18
2024-10-25
2024-07-01
2024-06-17