没有LLMs,让 LangChain 跑起来的 3 个方法
背景说明
Langchain 官方文档地址: https://python.langchain.com/
使用 LangChain 开发 LLM 应用时,需要机器进行 LLMs 的私有化部署,或者购买相应的服务,好多同学第一步就被劝退了。
那么如何绕过这个步骤先学习 LLM 模型的应用,对 Langchain 进行快速上手?本文将告诉你 3 个方法,把 LangChain 跑起来
1. 使用 Langchian 提供的 FakeListLLM
首先引入依赖包
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.agents import load_tools
from langchain.llms.fake import FakeListLLM
然后创建一个假的LLMs
responses=[
"Action: requests_get\nAction Input: chatGpt原理 N",
"Final Answer: mock答案"
]
llm = FakeListLLM(responses=responses)
然后加载工具,并初始化Agent
question = 'langchain基本原理'
responses=[
f'Action: 固定的假设操作\nAction Input: {question}',
'Final Answer: mock答案'
]
llm = FakeListLLM(responses=responses)
agent.run 表示开始回答问题
tools = load_tools(['llm-math'], llm=llm, allow_dangerous_tools=True)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
完整代码如下
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.agents import load_tools
from langchain.llms.fake import FakeListLLM
question = 'langchain基本原理'
responses=[
f'Action: 固定的假设操作\nAction Input: {question}',
'Final Answer: mock答案'
]
llm = FakeListLLM(responses=responses)
tools = load_tools(['llm-math'], llm=llm, allow_dangerous_tools=True)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run('{question}_1')
agent.run('{question}_2')
agent.run('{question}_3')
2. 使用 Langchian 提供的 HumanInputLLM,访问维基百科查询
首先,需要使用 pip install wikipedia
命令安装依赖
使用维基百科工具
tools = load_tools(['wikipedia'])
这里必须要设置为中文url前缀,不然访问不了
set_lang('zh')
初始化LLM
llm = HumanInputLLM(prompt_func = lambda prompt: print(f'\n___提示词开始____\n{prompt}\n_____提示词结束______'))
初始化agent
agent = initialize_agent(tools, llm, agent = AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
question = '小猪佩奇是谁'
agent.run(question)
完整代码如下
from langchain.llms.human import HumanInputLLM
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from wikipedia import set_lang
set_lang('zh')
tools = load_tools(['wikipedia'])
llm = HumanInputLLM(prompt_func = lambda prompt: print(f'\n___提示词开始____\n{prompt}\n_____提示词结束______'))
agent = initialize_agent(tools, llm, agent = AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
question = '小猪佩奇是谁'
agent.run(question)
3 使用 huggingface
网址:https://huggingface.co/docs
首先,注册账号
然后,创建 Access Tokens
Demo: 使用模型对文档进行摘要
from langchain.document_loaders import UnstructuredFileLoader
from langchain.chains.summarize import load_summarize_chain
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain import HuggingFaceHub
import os
from decouple import config
from langchain.agents import load_tools
这里 mock 下 ChatGPT, 使用 HUGGINGFACEHUB
os.environ["HUGGINGFACEHUB_API_TOKEN"] = config('HUGGINGFACEHUB_API_TOKEN')
导入文本
loader = UnstructuredFileLoader("docment_store\helloLangChain.txt")
将文本转成 Document 对象
document = loader.load()
print(f'documents:{len(document)}')
初始化文本分割器
text_splitter = RecursiveCharacterTextSplitter(
chunk_size = 500,
chunk_overlap = 0
)
切分文本
split_documents = text_splitter.split_documents(document)
print(f'documents:{len(split_documents)}')
加载 LLM 模型
overal_temperature = 0.1
flan_t5xxl = HuggingFaceHub(repo_id="google/flan-t5-xxl",
model_kwargs={"temperature":overal_temperature,
"max_new_tokens":200}
)
llm = flan_t5xxl
tools = load_tools(["llm-math"], llm=llm)
创建总结链
chain = load_summarize_chain(llm, chain_type=“refine”, verbose=True)
执行总结链
chain.run(split_documents)
总结
尝试了3种方案后,我发现第一种方案是最适合国内网友的。第二种和第三种方法均需要翻墙,且执行速度较慢,国内就不推荐了
即使用 FakeLLMs 预置结果,进行输出
- 点赞
- 收藏
- 关注作者
评论(0)