概念指南
本指南提供了 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:用於使用批次輸入執行可執行物件。
- bind_tools:允許模型與工具互動。
- 快取:儲存結果以避免對聊天模型進行冗餘調用。
- 聊天模型:處理多種資料模態的聊天模型。
- 可配置的可執行物件:建立可配置的可執行物件。
- 上下文視窗:聊天模型可以處理的最大輸入大小。
- 對話模式:聊天互動中的常見模式。
- 文件: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:用於從可執行物件或圖形串流輸出。
- Token 化:將資料轉換為 Token 以及反向轉換的過程。
- Token:語言模型在底層讀取、處理和生成的基本單位。
- 工具工件:將工件添加到工具的輸出,這些工件不會發送到模型,但可用於下游處理。
- 工具綁定:將工具綁定到模型。
- @tool:用於在 LangChain 中建立工具的裝飾器。
- 工具組:可以一起使用的一組工具。
- ToolMessage:表示包含工具執行結果的訊息。
- 單元測試:驗證個別組件正確性的測試,在隔離環境中運行,無法訪問網際網路。
- 向量儲存庫:專門用於儲存和有效搜尋向量嵌入的資料儲存庫。
- with_structured_output:用於聊天模型的輔助方法,這些模型原生支援工具調用以獲取符合給定架構的結構化輸出,該架構透過 Pydantic、JSON 架構或函數指定。
- with_types:用於覆寫可執行物件的輸入和輸出類型的方法。在處理複雜的 LCEL 鏈並使用 LangServe 部署時很有用。