没有LLMs,让 LangChain 跑起来的 3 个方法

举报
福州司马懿 发表于 2024/04/22 11:40:34 2024/04/22
【摘要】 背景说明Langchain 官方文档地址: https://python.langchain.com/使用 LangChain 开发 LLM 应用时,需要机器进行 LLMs 的私有化部署,或者购买相应的服务,好多同学第一步就被劝退了。那么如何绕过这个步骤先学习 LLM 模型的应用,对 Langchain 进行快速上手?本文将告诉你 3 个方法,把 LangChain 跑起来 1. 使用 L...

背景说明

Langchain 官方文档地址: https://python.langchain.com/

图片.png

使用 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')

图片.png

2. 使用 Langchian 提供的 HumanInputLLM,访问维基百科查询

首先,需要使用 pip install wikipedia 命令安装依赖

图片.png

使用维基百科工具

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)

图片.png

3 使用 huggingface

网址:https://huggingface.co/docs

首先,注册账号

然后,创建 Access Tokens

图片.png

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 预置结果,进行输出

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。