把LangChain跑起來的三個方法
使用LangChain開發(fā)LLM應(yīng)用時,需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個把LangChain跑起來的方法,如有錯誤歡迎糾正。
Langchain官方文檔地址:https://python.langchain.com/
基礎(chǔ)功能
LLM 調(diào)用
- 支持多種模型接口,比如 OpenAI、HuggingFace、AzureOpenAI …
- Fake LLM,用于測試
- 緩存的支持,比如 in-mem(內(nèi)存)、SQLite、Redis、SQL
- 用量記錄
- 支持流模式(就是一個字一個字的返回,類似打字效果)
Prompt管理,支持各種自定義模板
擁有大量的文檔加載器,比如 Email、Markdown、PDF、Youtube …
對索引的支持
- 文檔分割器
- 向量化
- 對接向量存儲與搜索,比如 Chroma、Pinecone、Qdrand
Chains
- LLMChain
- 各種工具Chain
- LangChainHub
詳細(xì)地址可參考:https://www.langchain.cn/t/topic/35
測試Langchain工程的3個方法:
1 使用Langchian提供的FakeListLLM
為了節(jié)約時間,直接上代碼
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”(讀取-求值-打印-循環(huán))的縮寫,它是一種簡單的、交互式的編程環(huán)境。
在 REPL 環(huán)境中,用戶可以輸入一條或多條編程語句,系統(tǒng)會立即執(zhí)行這些語句并輸出結(jié)果。這種方式非常適合進(jìn)行快速的代碼試驗和調(diào)試。
tools = load_tools(["python_repl"])
responses=[
"Action: Python REPL\nAction 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,訪問維基百科查詢
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"])
這里必須要設(shè)置為中文url前綴,不然訪問不了
set_lang("zh")
初始化LLM
llm = HumanInputLLM(prompt_func=lambda prompt: print(f"\n===PROMPT====\n{prompt}\n=====END OF PROMPT======"))
初始化agent
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("喜羊羊")
3 使用huggingfacehttps://huggingface.co/docs
1)注冊賬號
2)創(chuàng)建Access Tokens
Demo: 使用模型對文檔進(jìn)行摘要
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')
導(dǎo)入文本
loader = UnstructuredFileLoader("docment_store\helloLangChain.txt")
將文本轉(zhuǎn)成 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)
創(chuàng)建總結(jié)鏈
chain = load_summarize_chain(llm, chain_type="refine", verbose=True)
執(zhí)行總結(jié)鏈
chain.run(split_documents)
作者:京東科技 楊建
來源:京東云開發(fā)者社區(qū)