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