【易编橙·终身成长社群】
大家好,我是小森( ﹡ˆoˆ﹡ ) ! 易编橙·终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官、CSDN人工智能领域优质创作者 。
Langchain使用大模型
我们除了可以使用Langchain进行模型对话、提示词创作、嵌入模型,还可以使用其他的组件对大模型封装使用,打造我们自己的大模型。
首先,我们来谈谈Agents。在Langchain,Agents是执行特定任务或功能的智能实体。它们可以被看作是自动化的小助手,能够根据预设的规则和逻辑,在Langchain生态系统中自主地执行操作。比如,有的Agent负责监控区块链上的交易活动,有的则负责处理语言任务,如文本生成、翻译或情感分析等。这些Agent的存在,极大地提高了Langchain系统的自动化程度和效率。
AI大模型虽然很强大,但是还有一些局限性,比如:
- 数据不及时:ChatGPT数据更新到2022年底,也就是说今年的新闻它是不知道的。
- 处理复杂任务:大模型虽然在问答方面很出色,但是不能直接处理复杂任务。
- 大模型的核心能力是理解意图和文本生成。
我们在使用Langchain的时候,可以通过pycharm的某个函数,Ctrl + b 查看提供的参数,也可以去Langchain官网查看提供的各种API,如我们之前使用的baiduqianfan:
可以看到LLMs是我们的LLMs模块,BaiduQianfan是其中的库。
其中:ERNIE-Bot-turbo是默认的模型(文心一言 ),也可以使用其他的模型,比如:Qianfan-Chinese-Llama-2-7B,是通过Llama微调的中文大模型。
我们先假设,想要查询山东省2023年高考人数有多少,我们可以使用多个代理工具,让Agents选择执行。
pip install duckduckgo-search
import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
os.environ['QIANFAN_AK'] = "******"
os.environ['QIANFAN_SK'] = "******"
llm = QianfanChatEndpoint(model='Chinese-Llama-2-7B')
tools = load_tools(["ddg-search", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
# verbose=True参数是在执行任务时打印更多的调试信息。
print('agent', agent)
from langchain import PromptTemplate
prompt_template = "山东省2023年高考人数是多少"
prompt = PromptTemplate.from_template(prompt_template)
# 创建了一个提示模板,并将其转换为PromptTemplate对象。
print('prompt-->', prompt)
agent.run(prompt)
输出:
agent verbose=True tags=['zero-shot-react-description'] agent=ZeroShotAgent(llm_chain=LLMChain(prompt=PromptTemplate(input_variables=['agent_scratchpad', 'input'], template='Answer the following questions as best you can. You have access to the following tools:\n\nduckduckgo_search - A wrapper around DuckDuckGo Search. Useful for when you need to answer questions about current events. Input should be a search query.\nCalculator(*args: Any, callbacks: Union[List[langchain_core.callbacks.base.BaseCallbackHandler], langchain_core.callbacks.base.BaseCallbackManager, NoneType] = None, ta