LangServe如何革新LLM應(yīng)用部署?
一、前言
隨LLM技術(shù)演進(jìn),AI應(yīng)用開發(fā)部署越來越復(fù)雜。LangServe應(yīng)運(yùn)而生,旨在簡化AI服務(wù)部署和運(yùn)維的框架。專為LLM部署和管理而設(shè)計;本文旨在講解LangServe的功能特點(diǎn)和實(shí)踐運(yùn)用。
二、概述
LangServe 提供一整套將LLM部署成產(chǎn)品服務(wù)的解決方案??蓪LM應(yīng)用鏈接入常見Python Web框架(如FastAPI、Pydantic、uvloop、asyncio),進(jìn)而生成一套RESTful API。LangServe減少開發(fā)人員的運(yùn)維部署任務(wù),使他們可以更專注于LLM應(yīng)用開發(fā)。不僅簡化從開發(fā)到生產(chǎn)的過渡,還確保服務(wù)的高性能和安全性。它提供了包括模型管理器、請求處理器、推理引擎、結(jié)果緩存、監(jiān)控與日志記錄以及API網(wǎng)關(guān)等各類組件。LangServe的目標(biāo)是讓開發(fā)者能夠輕松集成、部署和管理AI模型,從零到一無縫地實(shí)現(xiàn)LLM應(yīng)用從原型到產(chǎn)品的過渡。
倉庫地址:https://github.com/langchain-ai/langserve
三、功能
多模型支持
LangServe支持部署多種類型的AI模型,包括文本生成、圖像識別、語音處理等,開發(fā)人員能夠按需切換。
高效推理緩存
為了提高響應(yīng)速度和節(jié)省計算資源,LangServe包含了一個高效的結(jié)果緩存系統(tǒng),可以智能地存儲和管理熱點(diǎn)數(shù)據(jù)。
安全訪問控制
通過角色和策略的管理,LangServe提供了靈活的訪問控制機(jī)制,確保了服務(wù)的安全性和數(shù)據(jù)的隱私性。
實(shí)時監(jiān)控與日志
內(nèi)置的監(jiān)控系統(tǒng)可以實(shí)時跟蹤服務(wù)的運(yùn)行狀態(tài),詳盡的日志記錄有助于問題的調(diào)試和分析。
簡潔易用的API接口
LangServe的API設(shè)計簡潔直觀,易于理解和使用,大大減少了開發(fā)者的學(xué)習(xí)成本。
四、REST API 開發(fā)
1.環(huán)境準(zhǔn)備
安裝依賴:
pip install "langserve[all]"
該命令包含了服務(wù)端和客戶端的安裝。
設(shè)置環(huán)境變量:OPENAI_API_KEY=<your valid openai api key>
2.代碼開發(fā)
簡單的翻譯接口。除了LangServe,還引入Web框架FastAPI和Web服務(wù)器uvicorn:
from fastapi import FastAPI
from langchain.prompts.chat import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
from langchain_openai import ChatOpenAI
from langserve import add_routes
# FastAPI是一個基于Python的Web框架,用于構(gòu)建高性能、可擴(kuò)展的API
app = FastAPI(
title="LangChain Server",
version="1.0",
description="A simple API server using Langchain's Runnable interfaces",
)
# 接口1
add_routes(
app,
ChatOpenAI(),
path="/openai",
)
# 接口2
system_message_prompt = SystemMessagePromptTemplate.from_template("""
You are a helpful assistant that translates {input_language} to {output_language}.
""")
human_message_prompt = HumanMessagePromptTemplate.from_template("{text}")
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
add_routes(
app,
chat_prompt | ChatOpenAI(),
path="/translate",
)
if __name__ == "__main__":
import uvicorn
# Python的Web服務(wù)器
uvicorn.run(app, host="localhost", port=9999)
3.啟動
python app.py
四、Postman調(diào)用測試
通??芍苯釉L問 http://localhost:9999/docs,在瀏覽器在線的接口文檔中找到對應(yīng)的接口,并直接在網(wǎng)頁上進(jìn)行測試。目前由于新的Pydantic版本存在兼容性問題,無法生成OpenAPI文檔,因此暫用Postman進(jìn)行接口測試。
五、客戶端調(diào)用測試
在后臺開發(fā)LangServe客戶端,進(jìn)行遠(yuǎn)程調(diào)用REST API。
from langchain.prompts.chat import ChatPromptTemplate
from langserve import RemoteRunnable
# 配置遠(yuǎn)程接口
openai_llm = RemoteRunnable("http://localhost:9999/openai/")
# 創(chuàng)建提示詞
prompt = ChatPromptTemplate.from_messages(
[
("system", "你是一名資深的AI大模型專家"),
("human", "請幫忙講解一下,有哪些常用的通用開源大模型,中外各自羅列5個"),
]
).format_messages()
# LLM接口調(diào)用
openai_llm.invoke(prompt)
# 輸出:
# AIMessage(content='當(dāng)談?wù)撏ㄓ瞄_源大模型時,常常會提到自然語言處理(NLP)領(lǐng)域中的預(yù)訓(xùn)練模型。以下是中外各自常用的5個通用開源大模型:
# **國外:**
# 1. BERT(Bidirectional Encoder Representations from Transformers):由Google開發(fā),是一種基于Transformer架構(gòu)的預(yù)訓(xùn)練模型,用于各種NLP任務(wù)。
# 2. GPT-3(Generative Pre-trained Transformer 3):由OpenAI發(fā)布,是一個非常大的語言生成模型,可以用于文本生成等任務(wù)。
# 3. RoBERTa(A Robustly Optimized BERT Approach):由Facebook發(fā)布的預(yù)訓(xùn)練模型,基于BERT進(jìn)行了一些優(yōu)化,用于提高性能。
# 4. T5(Text-to-Text Transfer Transformer):由Google發(fā)布,是一個通用的文本生成模型,可以應(yīng)用于多種NLP任務(wù)。
# 5. XLNet:由谷歌Brain團(tuán)隊(duì)發(fā)布,是一種自回歸預(yù)訓(xùn)練模型,結(jié)合Transformer-XL和自回歸方法。
# **國內(nèi):**
# 6. ERNIE(Enhanced Representation through kNowledge Integration):由百度發(fā)布,是一種基于Transformer架構(gòu)的多語言預(yù)訓(xùn)練模型,融合了知識融合的方法。
# 7. GPT-2(Generative Pre-trained Transformer 2):由哈工大訊飛聯(lián)合實(shí)驗(yàn)室發(fā)布,是一個類似于GPT-3的語言生成模型,用于文本生成等任務(wù)。
# 8. HFL/THU Bert:由清華大學(xué)自然語言處理與社會人文計算實(shí)驗(yàn)室發(fā)布,是一個BERT的中文預(yù)訓(xùn)練模型,適用于中文NLP任務(wù)。
# 9. RoFormer:由華為發(fā)布,是一種優(yōu)化的中文預(yù)訓(xùn)練模型,用于中文NLP任務(wù)。
# 10. PaddleNLP:由百度發(fā)布,是一個NLP模型庫,提供了多種預(yù)訓(xùn)練模型,包括BERT、ERNIE等,適用于各種NLP任務(wù)。')
總結(jié)
LangServe作為一款專注于AI模型部署和運(yùn)維的平臺,通過其精心設(shè)計的架構(gòu)和豐富的功能集合,顯著降低了AI項(xiàng)目的門檻,提升了開發(fā)效率和服務(wù)穩(wěn)定性。無論是初創(chuàng)公司還是大型企業(yè),LangServe都提供了一個可靠的解決方案,以應(yīng)對AI領(lǐng)域中的挑戰(zhàn)和機(jī)遇。隨著AI技術(shù)的不斷進(jìn)步,LangServe將繼續(xù)在AI服務(wù)的革新和發(fā)展中扮演關(guān)鍵角色。
作者簡介:魔都架構(gòu)師,多家大廠后端一線研發(fā)經(jīng)驗(yàn),在分布式系統(tǒng)設(shè)計、數(shù)據(jù)平臺架構(gòu)和AI應(yīng)用開發(fā)等領(lǐng)域都有豐富實(shí)踐經(jīng)驗(yàn)。各大技術(shù)社區(qū)頭部專家博主。具有豐富的引領(lǐng)團(tuán)隊(duì)經(jīng)驗(yàn),深厚業(yè)務(wù)架構(gòu)和解決方案的積累。
負(fù)責(zé):
- 中央/分銷預(yù)訂系統(tǒng)性能優(yōu)化
- 活動&券等營銷中臺建設(shè)
- 交易平臺及數(shù)據(jù)中臺等架構(gòu)和開發(fā)設(shè)計
- 車聯(lián)網(wǎng)核心平臺-物聯(lián)網(wǎng)連接平臺、大數(shù)據(jù)平臺架構(gòu)設(shè)計及優(yōu)化
- LLM Agent應(yīng)用開發(fā)
- 區(qū)塊鏈應(yīng)用開發(fā)
- 大數(shù)據(jù)開發(fā)挖掘經(jīng)驗(yàn)
- 推薦系統(tǒng)項(xiàng)目
目前主攻市級軟件項(xiàng)目設(shè)計、構(gòu)建服務(wù)全社會的應(yīng)用系統(tǒng)。
參考:
- 編程嚴(yán)選網(wǎng)