LangChain系列文章
- LangChain 實現給動物取名字,
- LangChain 2模塊化prompt template并用streamlit生成網站 實現給動物取名字
- LangChain 3使用Agent訪問Wikipedia和llm-math計算狗的平均年齡
- LangChain 4用向量數據庫Faiss存儲,讀取YouTube的視頻文本搜索Indexes for information retrieve
- LangChain 5易速鮮花內部問答系統
- LangChain 6根據圖片生成推廣文案HuggingFace中的image-caption模型
- LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
- LangChain 8 模型Model I/O:輸入提示、調用模型、解析輸出
- LangChain 9 模型Model I/O 聊天提示詞ChatPromptTemplate, 少量樣本提示詞FewShotPrompt
- LangChain 10思維鏈Chain of Thought一步一步的思考 think step by step
- LangChain 11實現思維樹Implementing the Tree of Thoughts in LangChain’s Chain
- LangChain 12調用模型HuggingFace中的Llama2和Google Flan t5
- LangChain 13輸出解析Output Parsers 自動修復解析器
- LangChain 14 SequencialChain鏈接不同的組件
- LangChain 15根據問題自動路由Router Chain確定用戶的意圖
- LangChain 16 通過Memory記住歷史對話的內容
- LangChain 17 LangSmith調試、測試、評估和監視基于任何LLM框架構建的鏈和智能代理
- LangChain 18 LangSmith監控評估Agent并創建對應的數據庫
- LangChain 19 Agents Reason+Action自定義agent處理OpenAI的計算缺陷
- LangChain 20 Agents調用google搜索API搜索市場價格 Reason Action:在語言模型中協同推理和行動
- LangChain 21 Agents自問自答與搜索 Self-ask with search
1. 概述
LangServe幫助開發人員將LangChain可運行程序和Chains部署為REST API。
該庫集成了FastAPI,并使用pydantic進行數據驗證。
此外,它提供了一個客戶端,可用于調用部署在服務器上的可運行程序。 LangChainJS中提供了一個JavaScript客戶端。
2. Features特點
- 從您的LangChain對象自動推斷輸入和輸出模式,并在每次API調用中執行,并提供豐富的錯誤消息
- API文檔頁面包含JSONSchema和Swagger(插入示例鏈接)
- 高效的
/invoke/
,/batch/
和/stream/
端點,支持單個服務器上的許多并發請求 /stream_log/
端點,用于流式傳輸鏈/代理的所有(或部分)中間步驟- 在
/playground/
上的游樂場頁面,具有流式輸出和中間步驟 - 內置(可選)跟蹤到LangSmith,只需添加您的API密鑰(請參見說明)
- 所有都是使用經過實戰考驗的開源Python庫構建,如FastAPI,Pydantic,uvloop和asyncio。
- 使用客戶端SDK調用LangServe服務器,就像它是在本地運行的Runnable一樣(或直接調用HTTP API)
- LangServe Hub
3. 限制
- 目前還不支持在服務器上發生的事件的客戶端回調
- 當使用Pydantic V2時,將不會生成OpenAPI文檔。Fast API不支持混合使用pydantic v1和v2命名空間。有關更多詳細信息,請參見下文。
4. 托管版的LangServ
我們將發布托管版的LangServe,用于一鍵部署LangChain應用程序。在這里注冊以加入等待名單。
5. 安全漏洞
版本0.0.13 - 0.0.15存在安全漏洞——游樂場端點允許訪問服務器上的任意文件。在版本0.0.16中已解決。
6. 安裝
對于客戶端和服務器:
pip install "langserve[all]"
或者使用pip install "langserve[client]"
安裝客戶端代碼,使用pip install "langserve[server]"
安裝服務器端代碼。
7. LangChain CLI 🛠?
使用LangChain CLI快速引導LangServe項目。
要使用langchain CLI,請確保已安裝最新版本的langchain-cli。您可以使用pip install -U langchain-cli
進行安裝。
langchain app new ../path/to/directory
8. LangChain模板
LangChain模板是構建生產就緒的LLM應用程序的最簡單和最快速的方法。這些模板作為各種流行的LLM用例的參考架構集。它們都采用標準格式,使得使用LangServe部署它們變得很容易。
🚩 我們將發布LangServe的托管版本,以一鍵式部署LangChain應用程序。在此處注冊以加入等待列表。
9. 快速開始
要使用,首先安裝LangChain命令行界面。
pip install -U langchain-cli
接下來,創建一個新的LangChain項目:
langchain app new my-app
這將創建一個名為my-app的新目錄,其中包含兩個文件夾:
- app:這是LangServe代碼的存放位置
- packages:這是您的鏈或代理的存放位置
要將現有模板作為包引入,首先需要進入您的新項目:
cd my-app
你可以把一個模板添加為一個項目。在這個入門指南中,我們將添加一個簡單的海盜語言項目。這個項目的作用是將用戶輸入轉換成海盜語言。
langchain app add pirate-speak
這將在packages/pirate-speak
中引入指定的模板
然后會提示您是否要安裝它。這相當于運行pip install -e packages/pirate-speak
。通常應該接受這一點(或者之后運行相同的命令)。我們使用-e安裝它,這樣如果您修改模板(您很可能會這樣做),更改將會更新。
之后,它會問您是否要為此項目生成路由代碼。這是您需要添加到您的應用程序中以開始使用此鏈的代碼。如果我們接受,我們將看到生成以下代碼:
from pirate_speak.chain import chain as pirate_speak_chainadd_routes(app, pirate_speak_chain, path="/pirate-speak")
你現在可以編輯你拉下來的模板。你可以更改package/pirate-speak
的代碼文件,以使用不同的模型、不同的提示、不同的邏輯。請注意,上面的代碼片段始終期望最終鏈可導入為from pirate_speak.chain import chain
,因此您應該保持包的結構足夠相似,以尊重該要求,或準備更新該代碼片段。
一旦你想做的都做完了,為了讓LangServe使用這個項目,你需要修改app/server.py
。具體來說,你應該將上面的代碼片段添加到app/server.py
中,以便該文件看起來像:
from fastapi import FastAPI
from langserve import add_routes
from pirate_speak.chain import chain as pirate_speak_chainapp = FastAPI()add_routes(app, pirate_speak_chain, path="/pirate-speak")
(可選)現在讓我們配置 LangSmith。LangSmith 將幫助我們跟蹤、監視和調試 LangChain 應用程序。LangSmith 目前處于私人測試階段,您可以在這里注冊。如果您無法訪問,可以跳過此部分。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # if not specified, defaults to "default"
對于這個特定的應用程序,我們將使用OpenAI作為LLM,所以我們需要導出我們的OpenAI API密鑰:
export OPENAI_API_KEY=sk-...
您可以通過運行以下命令,啟動生產就緒的端點以及一個playground:
langchain serve
這現在提供了一個完全部署的LangServe應用程序。例如,您可以訪問
http://127.0.0.1:8000/pirate-speak/playground/
Access API documentation at http://127.0.0.1:8000/docs
使用LangServe的Python或js SDK與API進行交互,就好像它是一個常規的Runnable。
from langserve import RemoteRunnableapi = RemoteRunnable("http://127.0.0.1:8000/pirate-speak")
api.invoke({"text": "hi"})
快速入門就到這里!您已成功下載了第一個模板,并使用LangServe部署了它。
代碼
https://github.com/zgpeace/pets-name-langchain/tree/develop
參考
- https://python.langchain.com/docs/langserve
- https://github.com/langchain-ai/langchain/blob/master/templates/README.md