何謂 LangChain?
LangChain 是開放原始碼的架構,可根據大型語言模型 (LLM) 打造應用程式。LLM 是針對大量資料預先訓練的大型深度學習模型,可以對使用者查詢生成回應,例如回答問題或從文本提示中建立影像。LangChain 提供工具和抽象化,藉以改善模型產生之資訊的客製化程度、準確度和關聯性。例如,開發人員可使用 LangChain 元件建立新提示鏈,或客製化現有的範本。LangChain 還包括其他元件,讓 LLM 無須重新訓練即可取得新資料。
LangChain 為何重要?
LLM 在於一般情境中回應提示方面十分出色,但在從未受訓練的特定領域中卻難以運作。提示詞是人員用來尋求 LLM 之回應的查詢。例如,LLM 可藉由提供估算來提供有關電腦價格的解答。但是,其無法列出您公司銷售之特定電腦型號的價格。
若要執行此點,機器學習工程師必須將 LLM 與組織的內部資料來源整合,並採用提示詞工程,此為資料科學家將輸入精簡為具有特定結構和情境的生成式模型中的實務操作。
LangChain 會簡化開發此類資料回應應用程式的中繼步驟,使提示詞工程更有效率。其旨在更輕鬆地開發由語言模型驅動的多種應用程式,包括聊天機器人、回答問題、產生內容、摘要器等。
以下各節會描述 LangChain 的優勢。
重新使用語言模型
組織可以使用 LangChain 來重新使用 LLM,以適用於網域特定的應用程式,而無需重新訓練或微調。開發團隊可參考專有資訊來建立複雜應用程式,以擴增模型回應。例如,您可使用 LangChain 來建置應用程式,從已儲存的內部文件讀取資料,並將其彙總為對話式回應。您可建立檢索增強生成 (RAG) 工作流程,在提示期間將新資訊引入語言模型。執行如 RAG 之類的情境感知工作流程,可減少模型幻覺並提高回應準確度。
簡化 AI 開發
LangChain 會藉由將資料來源整合和提示詞完善的複雜性虛擬化,簡化人工智慧 (AI) 開發。開發人員可自訂序列,以快速建置複雜應用程式。軟體團隊無需對商業邏輯進行程式設計,而是可修改 LangChain 提供的範本和程式庫,以縮短開發時間。
開發人員支援
LangChain 為 AI 開發人員提供工具,用以連接語言模型與外部資料來源。其為開放原始碼,並由活躍的社群提供支援。各機構可免費使用 LangChain,並從其他專精該架構的開發人員取得支援。
LangChain 如何運作?
開發人員可以使用 LangChain,藉由指定會產生所需結果的步驟,靈活地採用適合特定業務環境的語言模型。
鏈
鏈是在 LangChain 中包含各種 AI 元件的基本原則,以提供情境感知回應。鏈是從使用者查詢到模型輸出的一系列自動化行動。例如,開發人員可將鏈用於:
- 連線至不同的資料來源。
- 產生獨特內容。
- 翻譯多種語言。
- 回答使用者查詢。
連結
鏈由連結組成。開發人員執行之串聯在一起以形成鏈接序列的每個動作都稱為鏈。開發人員可以使用連結將複雜的任務分為多個較小任務。連結的範例包括:
- 格式化使用者輸入。
- 將查詢傳送至 LLM。
- 從雲端儲存中擷取資料。
- 從一種語言翻譯至另一種語言。
在 LangChain 框架中,一個連結會接受來自使用者的輸入內容,並將其傳遞至 LangChain 庫以進行處理。LangChain 也允許連結重新排序,以建立不同 AI 工作流程。
概觀
若要使用 LangChain,開發人員可使用以下命令在 Python 中安裝架構:
管道安裝 LangChain
接著,開發人員會使用鏈建構塊或 LangChain Expression Language (LCEL),利用簡單的程式設計命令來編寫鏈。chain () 函數會將連結的引數傳遞至程式庫。execute () 命令會擷取結果。開發人員可將目前連結結果傳遞給以下連結,或將其作為最終輸出來傳回。
以下是以多種語言傳回產品詳細資訊的聊天機器人鏈函數範例。
chain([
retrieve_data_from_product_database().
send_data_to_language_model().
format_output_in_a_list().
translate_output_in_target_language()
])
LangChain 的核心元件是什麼?
使用 LangChain,軟體團隊便可以利用以下模組來建置情感感知語言模型系統。
LLM 介面
LangChain 會提供 API,開發人員可以從其代碼連接和查詢 LLM。開發人員可執行簡單的 API 呼叫,而非編寫複雜的程式碼,以使用 LangChain 來與公有和專有模型(例如 GPT、Bard 和 PaLM)相互連接。
提示範本
提示範本是開發人員使用的預先建置結構,以一致且精確地為 AI 模型的查詢格式化。開發人員可為聊天機器人應用程式建立提示範本、少量學習,或將特定指示傳遞至語言模型。此外,其可在不同的應用程式和語言模型中重複使用範本。
代理程式
開發人員會使用 LangChain 提供的工具和程式庫來為複雜應用程式編寫和自訂現有鏈。代理程式是一個特殊鏈,其會提示語言模型以決定最佳順序來回應查詢。使用代理程式時,開發人員會提供使用者的輸入內容、可用工具,以及潛在的中繼步驟,以達到所需結果。然後,語言模型會傳回應用程式可採用之可行的行動序列。
擷取模組
LangChain 使用許多工具進行 RAG 系統的架構,可以轉換、儲存、搜尋和檢索資訊,以精簡語言模型回應的資訊。開發人員可使用字詞內嵌來建立資訊的語義表示,並將其儲存在本機或雲端向量資料庫中。
記憶體
部分對話語言模型應用程式會利用從過去互動中調用的資訊來精簡其回應。LangChain 允許開發人員在其系統中納入記憶體功能。支援內容:
- 簡單的記憶體系統,可調用最近對話。
- 複雜的記憶體結構,可分析歷史訊息以傳回最相關的結果。
回呼
回呼是開發人員放置在其應用程式中的代碼,以記錄、監控和串流 LangChain 操作中的特定事件。例如,開發人員可追蹤鏈的第一次呼叫時間以及回呼時遇到的錯誤。
AWS 如何協助滿足 LangChain 要求?
使用 Amazon Bedrock、Amazon Kendra、Amazon SageMaker JumpStart、LangChain 和您的 LLM,可在企業資料上建置高準確度的生成式人工智慧 (生成式 AI) 應用程式。LangChain 是連結這些組件的界面:
- Amazon Bedrock 是一種託管服務,組織可用來建置和部署生成式 AI 應用程式。可藉由 Amazon Bedrock 設置一個世代模型,該模型可自 LangChain 存取。
- Amazon Kendra 是一項機器學習 (ML) 運作服務,可協助組織執行內部搜尋。可將 Amazon Kendra 連接至 LangChain,使用專有資料庫的資料來進行精簡語言模型輸出。
- Amazon SageMaker Jumpstart 是一個 ML 中樞,提供預先建置的演算法和基礎模型,使開發人員可以快速部署。您可以在 SageMaker Jumpstart 託管基礎模型,並自 LangChain 進行驅使。
立即建立帳戶,開始在 AWS 上使用 LangChain。