什么是 LangChain?
LangChain 是一個開源框架,用于構(gòu)建基于大型語言模型(LLM)的應用程序。LLM 是基于大量數(shù)據(jù)預先訓練的大型深度學習模型,可以生成對用戶查詢的響應,例如回答問題或根據(jù)基于文本的提示創(chuàng)建圖像。LangChain 提供各種工具和抽象,以提高模型生成的信息的定制性、準確性和相關性。例如,開發(fā)人員可以使用 LangChain 組件來構(gòu)建新的提示鏈或自定義現(xiàn)有模板。LangChain 還包括一些組件,可讓 LLM 無需重新訓練即可訪問新的數(shù)據(jù)集。
為什么 LangChain 很重要?
LLM 擅長在常規(guī)上下文下對提示做出響應,但在未接受過訓練的特定領域卻很吃力。提示是人們尋求 LLM 回復時所用的查詢。例如,LLM 可以通過提供估算值來回答計算機成本問題。但是,它無法列出貴公司銷售的特定計算機型號的價格。
為此,機器學習工程師必須將 LLM 與組織內(nèi)部數(shù)據(jù)來源整合,并應用提示工程,即數(shù)據(jù)科學家根據(jù)特定的結(jié)構(gòu)和上下文對生成模型的輸入進行細化的實踐。
LangChain 簡化了開發(fā)此類數(shù)據(jù)響應式應用程序的中間步驟,提高了提示工程的效率。它旨在更輕松地開發(fā)由語言模型提供支持的各種應用程序,包括聊天機器人、問答、內(nèi)容生成、摘要器等。
以下部分介紹了 LangChain 的好處。
重新利用語言模型
借助 LangChain,組織可以重新將 LLM 用于特定領域的應用程序,而無需重新訓練或微調(diào)。開發(fā)團隊可以構(gòu)建引用專有信息的復雜應用程序,以增強模型響應。例如,您可以使用 LangChain 來構(gòu)建應用程序,從存儲的內(nèi)部文檔中讀取數(shù)據(jù)并將其匯總為對話式響應。您可以創(chuàng)建檢索增強生成(RAG)工作流程,在提示時向語言模型引入新信息。實施 RAG 等上下文感知工作流程可減少模型幻覺并提高響應精度。
簡化人工智能開發(fā)
LangChain 通過對數(shù)據(jù)來源集成和提示細化的復雜性進行抽象,來簡化人工智能(AI)的開發(fā)。開發(fā)人員可以自定義序列,以快速構(gòu)建復雜的應用程序。軟件團隊無需編程業(yè)務邏輯,即可修改 LangChain 提供的模板和庫,從而縮短開發(fā)時間。
開發(fā)人員支持
LangChain 為人工智能開發(fā)人員提供將語言模型與外部數(shù)據(jù)來源相連接的工具。LangChain 是開源的,由活躍社區(qū)提供支持。組織可以免費使用 LangChain,并獲得其他精通該框架的開發(fā)人員提供的支持。
LangChain 如何運作?
借助 LangChain,開發(fā)人員可以通過指定產(chǎn)生預期結(jié)果所需的步驟,靈活調(diào)整語言模型以適應特定的業(yè)務環(huán)境。
鏈
鏈是在 LangChain 中容納各種人工智能組件以提供上下文感知響應的基本原則。鏈是從用戶查詢到模型輸出的一系列自動化操作。例如,開發(fā)人員可以將鏈用于:
連接到不同的數(shù)據(jù)來源。
生成獨特的內(nèi)容。
翻譯多種語言。
答復用戶查詢。
鏈接
鏈由鏈接組成。開發(fā)人員串聯(lián)在一起形成鏈式序列的每個操作都稱為鏈接。通過鏈接,開發(fā)人員可以將復雜的任務分成多個較小的任務。鏈接示例包括:
調(diào)整用戶輸入格式。
向 LLM 發(fā)送查詢。
從云存儲中檢索數(shù)據(jù)。
從一種語言翻譯成另一種語言。
在 LangChain 框架中,鏈接接受來自用戶的輸入并將其傳遞給 LangChain 庫進行處理。LangChain 還允許對鏈接重新排序,創(chuàng)建不同的人工智能工作流程。
概述
要使用 LangChain,開發(fā)人員需要使用以下命令在 Python 中安裝框架:
pip install langchain
然后,開發(fā)人員使用鏈構(gòu)建塊或 LangChain 表達式語言(LCEL)通過簡單編程命令組成鏈。chain() 函數(shù)將鏈接的參數(shù)傳遞給庫。execute() 命令會檢索結(jié)果。開發(fā)人員可以將當前鏈接結(jié)果傳遞到以下鏈接,也可以將其作為最終輸出返回。
以下是以多種語言返回產(chǎn)品詳細信息的聊天機器人鏈函數(shù)示例。
chain([
retrieve_data_from_product_database().
send_data_to_language_model().
format_output_in_a_list().
translate_output_in_target_language()
])
LangChain 的核心組件是什么?
使用 LangChain,軟件團隊可以通過以下模塊構(gòu)建上下文感知語言模型系統(tǒng)。
LLM 接口
LangChain 提供 API,開發(fā)人員可以利用這些接口通過其代碼連接和查詢 LLM。開發(fā)人員可以利用 LangChain,通過進行簡單的 API 調(diào)用,與 GPT、Bard 和 PaLM 等公共模型和專有模型交互,無需編寫復雜代碼。
提示模板
提示模板是預構(gòu)建結(jié)構(gòu),開發(fā)人員使用該結(jié)構(gòu)來一致且精確地編排 AI 模型的查詢格式。開發(fā)人員可以為聊天機器人應用程序、小樣本學習創(chuàng)建提示模板,也可以向語言模型提供特定指令。此外,他們還可以在不同的應用程序和語言模型中重復使用這些模板。
代理
開發(fā)人員使用 LangChain 提供的工具和庫來為復雜的應用程序編寫和自定義現(xiàn)有的鏈。代理是一種特殊的鏈,提示語言模型決定響應查詢的最佳順序。使用代理時,開發(fā)人員會提供用戶輸入、可用工具和可能的中間步驟,以實現(xiàn)預期的結(jié)果。然后,語言模型會返回應用程序可以采取的可行操作順序。
檢索模塊
LangChain 支持使用大量工具來構(gòu)建 RAG 系統(tǒng),從而轉(zhuǎn)換、存儲、搜索和檢索信息,優(yōu)化語言模型響應。開發(fā)人員可以使用單詞嵌入創(chuàng)建信息的語義表示,并將其存儲在本地或云向量數(shù)據(jù)庫中。
內(nèi)存
一些對話語言模型應用程序使用從過去的交互中召回的信息來完善其響應。LangChain 讓開發(fā)人員可以在其系統(tǒng)中包含內(nèi)存功能。它支持:
簡單的內(nèi)存系統(tǒng),可召回最近的對話。
復雜的內(nèi)存結(jié)構(gòu),可分析歷史消息以返回最相關的結(jié)果。
回撥
回調(diào)是開發(fā)人員在其應用程序中使用的代碼,用于記錄、監(jiān)控和流式傳輸 LangChain 操作中的特定事件。例如,開發(fā)人員可以跟蹤鏈首次被調(diào)用的時間以及在回調(diào)中遇到的錯誤。
AWS 如何幫助您應對 LangChain 要求?
使用 Amazon Bedrock、Amazon Kendra、Amazon SageMaker JumpStart、LangChain 和 LLM,您可以在企業(yè)數(shù)據(jù)上構(gòu)建高精度的生成式人工智能(生成式 AI)應用程序。LangChain 是將這些組件聯(lián)系在一起的接口:
Amazon Bedrock 是一項托管式服務,組織可以使用它來構(gòu)建和部署生成式人工智能應用程序。您可以使用 Amazon Bedrock 來設置世代模型,您可以通過 LangChain 訪問該模型。
Amazon Kendra 是一項由機器學習(ML)所賦能的服務,可幫助組織進行內(nèi)部搜索。您可以將 Amazon Kendra 連接到 LangChain,后者使用來自專有數(shù)據(jù)庫的數(shù)據(jù)來完善語言模型輸出。
Amazon SageMaker Jumpstart 是一個 ML 中心,提供開發(fā)人員可以快速部署的預建算法和基礎模型。您可以在 SageMaker Jumpstart 上托管基礎模型,然后從 LangChain 上顯示其提示。
立即創(chuàng)建賬戶,開始在 AWS 上使用 LangChain。
參考:https://aws.amazon.com/cn/what-is/langchain/
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。