0 前言
隨LLM技術演進,AI應用開發部署越來越複雜。LangServe應運而生,旨在簡化AI服務部署和運維的框架。專為LLM部署和管理而設計;本文旨在講解LangServe的功能特點和實踐運用。
1 概述
LangServe 提供一整套將LLM部署成產品服務的解決方案。可將LLM應用連結入常見Python Web框架(如FastAPI、Pydantic、uvloop、asyncio),進而生成一套RESTful API。LangServe減少開發人員的運維部署任務,使他們可以更專注於LLM應用開發。不僅簡化從開發到生產的過渡,還確保服務的高效能和安全性。它提供了包括模型管理器、請求處理器、推理引擎、結果快取、監控與日誌記錄以及API閘道器等各類元件。LangServe的目標是讓開發者能夠輕鬆整合、部署和管理AI模型,從零到一無縫地實現LLM應用從原型到產品的過渡。
倉庫地址:https://github.com/langchain-ai/langserve
2 功能
多模型支援
LangServe支援部署多種型別的AI模型,包括文字生成、影像識別、語音處理等,開發人員能夠按需切換。
高效推理快取
為了提高響應速度和節省計算資源,LangServe包含了一個高效的結果快取系統,可以智慧地儲存和管理熱點資料。
安全訪問控制
透過角色和策略的管理,LangServe提供了靈活的訪問控制機制,確保了服務的安全性和資料的隱私性。
實時監控與日誌
內建的監控系統可以實時跟蹤服務的執行狀態,詳盡的日誌記錄有助於問題的除錯和分析。
簡潔易用的API介面
LangServe的API設計簡潔直觀,易於理解和使用,大大減少了開發者的學習成本。
3 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
4 Postman呼叫測試
通常可直接訪問 http://localhost:9999/docs
,在瀏覽器線上的介面文件中找到對應的介面,並直接在網頁上進行測試。目前由於新的Pydantic版本存在相容性問題,無法生成OpenAPI文件,因此暫用Postman進行介面測試。
5 客戶端呼叫測試
在後臺開發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應用開發
- 區塊鏈應用開發
- 大資料開發挖掘經驗
- 推薦系統專案
目前主攻市級軟體專案設計、構建服務全社會的應用系統。
參考:
- 程式設計嚴選網
本文由部落格一文多發平臺 OpenWrite 釋出!