概念指南
本指南說明 LangChain 框架和更廣泛的 AI 應用程式背後的關鍵概念。
我們建議您在深入概念指南之前,至少瀏覽過一篇教學。這將提供實務背景,讓您更容易理解此處討論的概念。
概念指南不涵蓋逐步說明或具體實作範例 — 這些內容可在操作指南和教學中找到。如需詳細參考資料,請參閱API 參考。
高階
- 為什麼選擇 LangChain?:LangChain 提供的價值概述。
- 架構:LangChain 生態系統中套件的組織方式。
概念
- 聊天模型:透過聊天 API 公開的 LLM,可處理訊息序列作為輸入並輸出訊息。
- 訊息:聊天模型中的通訊單位,用於表示模型輸入和輸出。
- 聊天記錄:以訊息序列表示的對話,在使用者訊息和模型回應之間交替。
- 工具:具有關聯結構描述的函式,定義函式的名稱、描述及其接受的引數。
- 工具呼叫:一種聊天模型 API,它接受工具結構描述以及訊息作為輸入,並傳回這些工具的調用作為輸出訊息的一部分。
- 結構化輸出:使聊天模型以結構化格式回應的技術,例如符合給定結構描述的 JSON。
- 記憶體:關於對話的資訊,這些資訊會被持久化,以便在未來的對話中使用。
- 多模態:處理以不同形式出現的資料的能力,例如文字、音訊、影像和影片。
- 可執行介面:許多 LangChain 組件和 LangChain 運算式語言建立在其上的基本抽象。
- 串流:LangChain 串流 API,用於在結果產生時顯示結果。
- LangChain 運算式語言 (LCEL):用於協調 LangChain 組件的語法。對於較簡單的應用程式最有用。
- 文件載入器:將來源載入為文件列表。
- 檢索:資訊檢索系統可以從資料來源檢索結構化或非結構化資料,以回應查詢。
- 文字分割器:將長文字分割成較小的區塊,這些區塊可以單獨索引以實現細粒度檢索。
- 嵌入模型:在向量空間中表示資料(例如文字或影像)的模型。
- 向量儲存:向量及其關聯元資料的儲存和有效搜尋。
- 檢索器:一個組件,用於從知識庫返回與查詢相關的文件。
- 檢索增強生成 (RAG):一種透過將語言模型與外部知識庫結合來增強語言模型的技術。
- 代理:使用語言模型來選擇要採取的一系列動作。代理可以透過工具與外部資源互動。
- 提示範本:用於分解模型「提示」(通常是一系列訊息)的靜態部分的組件。適用於序列化、版本控制和重複使用這些靜態部分。
- 輸出解析器:負責取得模型的輸出並將其轉換為更適合下游任務的格式。在工具呼叫和結構化輸出普遍可用之前,輸出解析器主要是有用的。
- 少量提示:一種透過在提示中提供一些要執行的任務範例來提高模型效能的技術。
- 範例選擇器:用於根據給定的輸入從資料集中選擇最相關的範例。範例選擇器在少量提示中用於為提示選擇範例。
- 非同步程式設計:應了解在非同步環境中使用 LangChain 的基礎知識。
- 回呼:回呼啟用內建組件中自訂輔助程式碼的執行。回呼用於從 LangChain 中的 LLM 串流輸出、追蹤應用程式的中間步驟等等。
- 追蹤:記錄應用程式從輸入到輸出所採取步驟的過程。追蹤對於偵錯和診斷複雜應用程式中的問題至關重要。
- 評估:評估 AI 應用程式的效能和有效性的過程。這涉及根據一組預定義的標準或基準測試模型的響應,以確保其符合所需的品質標準並實現預期的目的。此過程對於建立可靠的應用程式至關重要。
- 測試:驗證整合或應用程式的組件是否按預期運作的過程。測試對於確保應用程式行為正確,並且對程式碼庫的變更不會引入新的錯誤至關重要。
詞彙表
- AIMessageChunk:來自 AI 訊息的部分回應。在從聊天模型串流回應時使用。
- AIMessage:表示來自 AI 模型的完整回應。
- astream_events:從 LCEL 鏈串流細粒度資訊。
- BaseTool:LangChain 中所有工具的基底類別。
- batch:用於使用批次輸入執行可執行物件 Runnable。
- bind_tools:允許模型與工具互動。
- 快取:儲存結果以避免對聊天模型進行冗餘呼叫。
- 聊天模型:處理多種資料模態的聊天模型。
- 可配置的可執行物件:建立可配置的可執行物件。
- 上下文視窗:聊天模型可以處理的最大輸入大小。
- 對話模式:聊天互動中的常見模式。
- Document:LangChain 的文件表示形式。
- 嵌入模型:為各種資料類型產生向量嵌入的模型。
- HumanMessage:表示來自人類使用者的訊息。
- InjectedState:注入到工具函式中的狀態。
- InjectedStore:可以注入到工具中以進行資料持久化的儲存。
- InjectedToolArg:將引數注入到工具函式中的機制。
- 輸入和輸出類型:用於可執行物件中輸入和輸出的類型。
- 整合套件:與 LangChain 整合的第三方套件。
- 整合測試:驗證組件之間互動正確性的測試,通常在存取為整合提供支援的底層 API 的情況下執行。
- invoke:調用可執行物件的標準方法。
- JSON 模式:以 JSON 格式傳回回應。
- langchain-community:社群驅動的 LangChain 組件。
- langchain-core:核心 langchain 套件。包括基本介面和記憶體內實作。
- langchain:用於較高階組件(例如,某些預先建立的鏈)的套件。
- langgraph:LangChain 的強大協調層。用於建立複雜的管線和工作流程。
- langserve:用於將 LangChain 可執行物件部署為 REST 端點。使用 FastAPI。主要適用於 LangChain 可執行物件,目前不與 LangGraph 整合。
- LLM (傳統):較舊的語言模型,將字串作為輸入並傳回字串作為輸出。
- 管理聊天記錄:維護和管理聊天記錄的技術。
- OpenAI 格式:OpenAI 用於聊天模型的訊息格式。
- RunnableConfig 的傳播:透過可執行物件傳播配置。如果使用 python 3.9、3.10 和 async,請閱讀。
- 速率限制:聊天模型的用戶端速率限制。
- RemoveMessage:用於從聊天記錄中移除訊息的抽象,主要在 LangGraph 中使用。
- role:表示聊天訊息的角色(例如,使用者、助理)。
- RunnableConfig:用於將執行階段資訊傳遞給可執行物件(例如,
run_name
、run_id
、tags
、metadata
、max_concurrency
、recursion_limit
、configurable
)。 - 聊天模型的標準參數:API 金鑰、
temperature
和max_tokens
等參數。 - 標準測試:所有整合都必須通過的已定義單元和整合測試集。
- stream:用於從可執行物件或圖形串流輸出。
- 權杖化:將資料轉換為權杖及其反向的過程。
- 權杖:語言模型在底層讀取、處理和產生的基本單位。
- 工具工件:將工件新增到工具的輸出,這些工件不會傳送到模型,但可用於下游處理。
- 工具綁定:將工具綁定到模型。
- @tool:用於在 LangChain 中建立工具的裝飾器。
- 工具組:可以一起使用的一組工具。
- ToolMessage:表示包含工具執行結果的訊息。
- 單元測試:驗證個別組件正確性的測試,在隔離狀態下執行,無法存取網際網路。
- 向量儲存:專門用於儲存和有效搜尋向量嵌入的資料儲存。
- with_structured_output:一種聊天模型的輔助方法,原生支援工具呼叫,以取得符合透過 Pydantic、JSON 結構描述或函式指定的給定結構描述的結構化輸出。
- with_types:用於覆寫可執行物件的輸入和輸出類型的方法。在處理複雜的 LCEL 鏈並使用 LangServe 部署時非常有用。