<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

把LangChain跑起來的3個方法

OSC開源社區 ? 來源:OSCHINA 社區 ? 2023-07-05 09:59 ? 次閱讀

使用 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 為了節約時間,直接上代碼

1f2f3f88-1a58-11ee-962d-dac502259ad0.png

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,訪問維基百科查詢

1f46da9e-1a58-11ee-962d-dac502259ad0.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"])

這里必須要設置為中文 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

1f60307a-1a58-11ee-962d-dac502259ad0.png

Demo:使用模型對文檔進行摘要

1f731bae-1a58-11ee-962d-dac502259ad0.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')

導入文本

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 所有的數據,本次日志對齊即完成。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    740

    瀏覽量

    43531
  • OpenAI
    +關注

    關注

    9

    文章

    880

    瀏覽量

    6024
  • ChatGPT
    +關注

    關注

    28

    文章

    1481

    瀏覽量

    5510

原文標題:把LangChain跑起來的3個方法

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    S3c6410六層核心板原理+PCB板圖,絕對能跑起來!

    `以前的項目資料,投過板,出過產品,絕對能跑起來!`
    發表于 12-26 17:26

    請問裸板程序運行是否一定需要uboot先跑起來?

    請問,裸板程序運行是否一定需要uboot先跑起來?像用keil開發,是不是在flash里不需要uboot存在或者事先運行
    發表于 07-23 05:45

    為什么任務跑起來直接進入了while(1)出不來了?

    我建立了2相同優先級的任務,一任務里是while(1);死循環,另一是閃爍燈, 為什么任務跑起來直接進入了while(1)出不來了?不是有時間片輪詢嗎?
    發表于 07-24 04:35

    如何讓你的ESP32跑起來

    ESP32是了國內樂鑫科技推出的Wifi&藍牙物聯網MCU,而最近項目正好在用ESP32,所以我們今天就來分享下,如何讓你的ESP32跑起來,并應用于更多實際項目。1ESP32簡...
    發表于 07-16 06:57

    Micropython平臺是如何實現在NUCLEO-F401RE開發板跑起來

    Micropython平臺是如何實現在NUCLEO-F401RE開發板跑起來的?有哪些操作流程?
    發表于 11-08 08:03

    怎樣讓自己編譯的uboot跑起來

    小目標:讓自己編譯的uboot跑起來參考:wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO首先熟悉一下板子和開發流程。維基主要參考《使用全志原廠BSP
    發表于 11-08 06:37

    程序能跑起來就是很好的c代碼嗎

    程序能跑起來并不見得你的代碼就是很好的c代碼了,衡量代碼的好壞應該從以下幾個方面來添加鏈接描述看:海風教育投訴1,代碼穩定,沒有隱患。2,執行效率高。3,可讀性高。4,便于移植。
    發表于 11-23 08:00

    如何利用XR806開發板讓hello跑起來?

    如何利用XR806開發板讓hello跑起來?
    發表于 12-29 06:16

    在板子上系統跑起來后怎么查看屏幕驅動

    請問一下,在板子上系統跑起來后怎么查看屏幕驅動
    發表于 01-10 06:24

    如何讓u-boot跑起來?

    如何讓u-boot跑起來?
    發表于 01-26 08:26

    如何借助STM32CubeProgrammer輕松將STM32MP1開發板跑起來

    在之前發布的一文中,我們獲悉了如何借助STM32CubeProgrammer,輕松將STM32MP1開發板跑起來。在STM32MP1開發板跑起來之后,我們相當于有了一臺微型嵌入式PC,可以支持多種
    發表于 02-22 06:07

    STM32如何區分程序跑起來用的是HSE還是HSI呢?

    本人用過f103和f030,為了取功耗低的方案,內部外部晶振都試過。但是有很多情況下,配置錯了,程序貌似會自己跑內部晶振去了;一般單片機如果外部晶振跑起來應該在晶振那兩腳會有波形。如果是按照我這種方法
    發表于 05-05 10:47

    Zynq 7015 linux跑起來之導入之BOOT.bin生成詳解

    本文主要介紹Zynq 7015 linux跑起來之導入之BOOT.bin生成,具體的跟隨小編一起來了解一下。
    的頭像 發表于 06-27 10:01 ?7046次閱讀

    FreeRTOS_003 _讓系統在板子上跑起來

    FreeRTOS_003_讓系統在板子上跑起來
    的頭像 發表于 03-14 11:25 ?2553次閱讀
    FreeRTOS_003 _讓系統在板子上<b class='flag-5'>跑起來</b>

    windows安裝ubuntu并讓pioneer1應用程序跑起來的過程

    本文介紹在windows下安裝ubuntu并且讓pioneer1的應用程序跑起來的全過程。雖然安裝ubuntu不是本文重點,但是還是啰嗦地寫一遍吧。
    的頭像 發表于 10-23 10:41 ?2148次閱讀
    windows安裝ubuntu并讓pioneer1應用程序<b class='flag-5'>跑起來</b>的過程
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>