LangServe如何革新LLM應用部署?

公众号-JavaEdge發表於2024-10-14

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 釋出!

相關文章