把LangChain跑起来的3个方法

描述

使用 LangChain 开发 LLM 应用时,需要机器进行 GLM 部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习 LLM 模型的应用,对 Langchain 进行快速上手?本片讲解 3 个把 LangChain 跑起来的方法,如有错误欢迎纠正。

基础功能

LLM 调用

支持多种模型接口,比如 OpenAI、HuggingFace、AzureOpenAI …

Fake LLM,用于测试

缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL

用量记录

支持流模式(就是一个字一个字的返回,类似打字效果)

Prompt 管理,支持各种自定义模板 拥有大量的文档加载器,比如 Email、Markdown、PDF、Youtube … 对索引的支持

文档分割器

向量化

对接向量存储与搜索,比如 Chroma、Pinecone、Qdrand

Chains

LLMChain

各种工具 Chain

LangChainHub

测试 Langchain 工程的 3 个方法:

1 使用 Langchian 提供的 FakeListLLM 为了节约时间,直接上代码

OpenAI

 

import os
from decouple import config
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.agents import load_tools

 

这里 mock 下 ChatGPT, 使用 mockLLm

 

#from langchain.llms import OpenAI
from langchain.llms.fake import FakeListLLM
os.environ["OPENAI_API_KEY"] = config('OPENAI_API_KEY')

 

REPL 是 “Read–Eval–Print Loop”(读取 - 求值 - 打印 - 循环)的缩写,它是一种简单的、交互式的编程环境。

在 REPL 环境中,用户可以输入一条或多条编程语句,系统会立即执行这些语句并输出结果。这种方式非常适合进行快速的代码试验和调试。

 

tools = load_tools(["python_repl"])
responses=[
    "Action: Python REPL
Action Input: chatGpt原理",
    "Final Answer: mock答案"
]
llm = FakeListLLM(responses=responses)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("chatGpt原理2")
2 使用 Langchian 提供的 HumanInputLLM,访问维基百科查询

OpenAI
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

 

使用维基百科工具

 

tools = load_tools(["wikipedia"])

 

这里必须要设置为中文 url 前缀,不然访问不了

 

set_lang("zh")

 

初始化 LLM

 

llm = HumanInputLLM(prompt_func=lambda prompt: print(f"
===PROMPT====
{prompt}
=====END OF PROMPT======"))

 

初始化 agent

 

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("喜羊羊")
3 使用 huggingface 

1. 注册账号

2. 创建 Access Tokens

OpenAI

Demo:使用模型对文档进行摘要

OpenAI
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_storehelloLangChain.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)

 

 Leader 所有的数据,本次日志对齐即完成。






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分