使用 LangChain 開發(fā) LLM 應(yīng)用時,需要機(jī)器進(jìn)行 GLM 部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí) LLM 模型的應(yīng)用,對 Langchain 進(jìn)行快速上手?本片講解 3 個把 LangChain 跑起來的方法,如有錯誤歡迎糾正。
基礎(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
測試 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)行快速的代碼試驗(yàn)和調(diào)試。
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,訪問維基百科查詢
![1f46da9e-1a58-11ee-962d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9E/33/wKgaomToA0mAJhIzAALtQrO5qA4332.png)
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" ===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. 創(chuàng)建 Access Tokens
![1f60307a-1a58-11ee-962d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9E/33/wKgaomToA0mAOjs5AAGo34oIYNE213.png)
Demo:使用模型對文檔進(jìn)行摘要
![1f731bae-1a58-11ee-962d-dac502259ad0.png](https://file1.elecfans.com//web2/M00/9E/33/wKgaomToA0mABnLnAAMVM0bYJZ8032.png)
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_storehelloLangChain.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)
Leader 所有的數(shù)據(jù),本次日志對齊即完成。
審核編輯:劉清
-
SQL
+關(guān)注
關(guān)注
1文章
775瀏覽量
44276 -
OpenAI
+關(guān)注
關(guān)注
9文章
1164瀏覽量
6755 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1571瀏覽量
8119
原文標(biāo)題:把LangChain跑起來的3個方法
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
請問裸板程序運(yùn)行是否一定需要uboot先跑起來?
如何讓你的ESP32跑起來
Micropython平臺是如何實(shí)現(xiàn)在NUCLEO-F401RE開發(fā)板跑起來的
怎樣讓自己編譯的uboot跑起來
程序能跑起來就是很好的c代碼嗎
如何借助STM32CubeProgrammer輕松將STM32MP1開發(fā)板跑起來
STM32如何區(qū)分程序跑起來用的是HSE還是HSI呢?
Zynq 7015 linux跑起來之導(dǎo)入之BOOT.bin生成詳解
如何在鴻蒙OS上跑起來第一個hello world
![如何在鴻蒙OS上<b class='flag-5'>跑起來</b>第一<b class='flag-5'>個</b>hello world](https://file.elecfans.com/web1/M00/C9/1B/pIYBAF9xT92AFPzdAAFMKaSujsM644.png)
windows安裝ubuntu并讓pioneer1應(yīng)用程序跑起來的過程
![windows安裝ubuntu并讓pioneer1應(yīng)用程序<b class='flag-5'>跑起來</b>的過程](https://file.elecfans.com/web1/M00/CB/FB/pIYBAF-SQZmAFfiMAAAi2KBLh3E513.png)
評論