AI 工具

李彤

2024-11-21

LangChain是什麼?最詳細的入門指南:從基礎到進階應用

LangChain是什麼?最詳細的入門指南:從基礎到進階應用
LangChain是什麼?為什麼LangChain很重要?跟開發AI有什麼關聯?LangChain需要付費嗎?本文將介紹LangChain 框架,介紹並整理不同的付費方案,最後透過LangChain應用實例,帶你深入認識LangChain!

LangChain 是什麼?正在學習 AI 的你一定要知道!

(一)什麼是 LangChain?跟開發 AI 有什麼關聯?

LangChain 是一種幫助應用程式構築的框架,特別是「大型語言模型」 LLM。LLM 是一種人工智慧模型,通過大量的文本資料訓練,即可生成文字、翻譯以及回答問題。而 LangChain 整合了 LLMs(多種 LLM)、資料庫與應用介面,使我們能夠更直觀地操作。

根據 LangChain 中文官網 的資訊,其包含 Chains(鏈)以及一些功能元件,這些是可以直接使用的程式碼,讓我們能根據實際需求自由組合。

簡單來說,可以將 LangChain 形容成一個積木箱,裡面提供了許多現成的積木,讓我們可以依據情況取用並組裝,因此建構時就不需要從零開始寫所有的程式碼。

因為 AI 的發展變化迅速,若是每次改變方式都要從頭寫程式碼,會浪費太多時間在基礎的變動上。如果藉由 LangChain 整合、串聯 LLMs 與程式應用 ,就能簡化編寫 AI 的過程,讓使用者更專注在系統的設計,也能提高效率!

(二)LangChain 為什麼重要?4 大優勢一次解析!

上面我們介紹 LangChain 主要功能在於整合 LLMs 、資料庫和程式應用,使得我們可以更加簡單地使用 LLMs。除此之外, LangChain 還有哪些特點讓它如此重要呢?以下就來談談 LangChain 的 4 大優勢:

Langchain 的 4 大優勢

1. 高度靈活性

LangChain 支援 Python、JavaScript 這兩種主要程式語言。由於兩者的語法和編寫方式不同,所以在兩種語言之間切換時需要修改程式碼。不過 LangChain 的設計使其在各個語言版本中提供相似的介面和功能,讓你可以在不同的語言環境下,用相似的操作邏輯來完成,這為開發者在不同語言間切換時提供了一定的靈活性。

2. 簡化使用流程

LangChain 提供相當豐富的應用程式介面(API),裡面包含多種常使用到的元件,這讓使用者可以直接根據情況自由運用,不需要一一深入了解模型內容、從頭開始撰寫程式碼,簡化了使用流程。

3. 方便擴充

LangChain 可以配置和擴充外部的資源和工具,如資料數據庫。因此當使用者需要更詳細的資料時,便能方便使用。同時也能運用外部的工具和資源,進行更複雜的數據運算。

4. 整合組件生態系統

LangChain 支援多種 LLM 及各類第三方服務,能夠快速整合應用組件的生態系統。這讓使用者可以輕易切換不同工具,也可以運用外部的功能,使得應用過程獲得全面的支援。

LangChain 需要付費嗎?費用怎麼算?

只單純使用 LangChain 不需要付費,但如果你想進一步提升開發效率和準確性,可以考慮使 LangSmith 檢查、監控和評估你在 LangChain 上的應用,包含更深入的測試、評估和數據追蹤等。

這時你可以參考官網上提供的不同付費方案,以便你的運作過程。接下來我們將詳細介紹這些方案的類型,幫助你根據需求挑選適合的方案!

1. Startups

此方案提供使用者免費使用,但僅限最基礎的功能。此外,因為這個方案不限制人數,所以適合初期接觸 LangChain 的團隊。

2. Developer

這個方案提供 1 人免費使用,並且可以使用 LangSmith 的追蹤、監測等進階功能,因此適合一人開發者。除此之外,該方案中每月提供 5,000 個追蹤額度。如果你覺得免費的數量不夠,還可以用 0.50 美金加購 1,000 基本追蹤額度。

3. Plus

此方案的使用者人數上限為 10 人,一人每月 39 美金。相較於 Developer,Plus 特別提供了官方信箱,使用時遇到的相關問題都能寄信詢問。除此之外,此方案提供的追蹤額度增加到每月 1 萬個,同樣能以加價的方式增價額度。綜合以上特點,方案 Plus 相當適合小型開發團隊。

4. Enterprise

企業版包含最完整的功能,你會發現在官網中沒有標示明確的價格,因為這個方案會依照企業的所有需求,提供客製的數量。除了能使用更進階的 LangSmith 技術功能,企業版還擁有完善的服務功能,包含數據隱私管理以及 SLA(服務級別協定),因此相當適合具規模的企業或開發團隊。

根據上述提到的特點,我們幫你整理成以下表格:

DeveloperPlusEnterprise
使用者人數1人最多10人根據客製
追蹤功能
監測功能
信箱支援
Slack 頻道支援
數據隱私管理

LangChain 框架介紹|功能及元件完整解析

(一)LangChain 架構包含什麼?

LangChain 架構

  • LangChain-core

LangChain-core 是 LangChain 的核心部分,包含可使用的基礎元件,和 LangChain 表達式語言(LangChain Expression Language),用於連結和組成 LangChain 的不同功能。

  • LangChain-community

第三方集成庫,包含了各種組件,如記憶功能。當我們在使用 LangChain 時,可以依據情形使用這個第三方提供的組件功能。常見的組件為了方便使用者直接運用,會被另外區分出來(例如 OpenAI)。

  • LangChain(物件儲存服務 OSS)

物件儲存服務(OSS) 是 LangChain 上的儲存區塊,用來存放和管理數據。其中包含所有的 LangChain。

  • LangGraph

LangChain 的擴展,幫助 LangChain 在使用大型語言模型時,能更有效地抓取相關資料。可以想像成每個資料都有對應的節點,這樣就能快速依據資料性質找到跟問題相關的資訊。

  • LangServe

LangServe 用於將流程機制或應用擴展成一個可使用的服務,這樣其他人可以通過應用程式請求來使用這些應用,讓操作過程變得更加簡單。例如,有人將網路相關的機制建立成一個服務,這樣當我們需要在處理相關問題的時候,就能使用現成的網路服務,不需要自己另外從頭建設。

  • LangSmith

LangSmith 是專門為開發者設計的平台,它提供了檢查、評估和追蹤 LangChain 等的工具。當我們想更進一步檢視並提升 LangChain 的效率時,便可以使用 LangSmith 進行更深入測試。

(二)LangChain 包含哪些功能元件?

上面我們介紹了 LangChain 的框架,接著來講述我們使用 LangChain 時會用到的主要功能 。首先 LangChain 基礎是 Models,我們需要先要執行的語言模型,再根據使用需求加入其他元件。以下介紹 7 個常用功能元件:

Langchain 7 個主要功能元件

1. Models

LangChain 可以串聯不同的模型,其中包含 LLMs 語言模型和 ChatModel 聊天模型,讓使用者根據情況選擇想執行的模型。

  • LLMs

這裡提到的 LLMs 是一種用來生成和摘要文字的語言模型。我們可以對語言模型下達指令,並仔細描述這個動作內容。LLMs 便會根據這段文字敘述,創造或改寫出新的內容。

  • ChatModel

ChatModel 則是用來進行對話的聊天模型,它會接收一系列的對話訊息,然後輸出回應訊息。在 LangChain 裡,我們會依照情境使用 3 種角色(Role)讓語言模型辨識說話者,其中HumanMessage 代表「使用者」;AI 表示語言模型的回應; System 則指示語言模型需要執行的動作。

2. Prompt Templates

提示(Prompt) 是指使用者提供的一組指示或輸入,可以理解為我們對 LLMs 下達的指令動作,或是想要它如何執行的詳細描述。在 Langchain 含有 Prompt Template 可以使用,這是一個固定的框架或模板,讓使用者可以只藉由替換部分元件,就能在不同的語言模型上重複使用指令。

3. Output Parser

Output Parser 是 LangChain 中的輸出解析器,它能接收並處理 LLMs 生成的回應。LLMs 的回應通常會是一大段文字,但我們在其他應用場景,會需要使用具結構化的資料,例如表格、列表或特定的格式,可以讓電腦更有效地分析。這時就需使用解析器轉換資料,使其變成更有結構化的格式,以方便後續的處理。

Output Parser 提供了多種解析器,例如我們需要 JSON 物件(Object)時,便可以利用 JsonOutputParser 輸出。

4. Embedding Models

因為 LLMs 一次只能接受幾千個單字,但我們大多時候都需要語言模型分析並解讀相當大的文檔,所以這時會需要使用向量嵌入模型(Embedding Models)。它會將文本轉換成向量呈現,這些向量可以視為一組數字。

嵌入(Embedding)是指將一段文字轉換成數字的技術,這組數字能涵蓋文本的內容意義並代表文本。這使得 LLMs 可以透過數學運算,不需要分析大量的文字或圖片,就能找到意義相似的其他文本。

5. Vector Stores

Vector Stores 可當作一個向量資料庫,將 Embedding Models 產生的向量(數字)儲存在其中。當 LLMs 遇到問題時,LangChain 的 Vector Stores 會先將查詢內容轉換成向量,接著系統會搜尋大量的資料庫,分析最相似的其他向量,這個過程稱為檢索(Retrieval)。如此就能找到意義相近的內容,並將這項結果回傳給 LLMs,幫助其回答。

6. Agents

我們通常會想利用 LLMs 回答一些較為複雜的問題,並希望得到更精確的結果。但 LLMs 自己只能輸出簡單訊息(如回應或是翻譯文本)。這時候我們就需要使用 LangChain 中的 Agent 代理元件。

Agent 代理元件可以將 LLMs 視為一種推理引擎,藉此讓 LLMs 使用其他功能去分析問題,讓它看起來像能夠「思考」。這樣 LLMs 能依據我們設定的資料,自動選擇使用適合的工具執行,並運用得出的結果回答我們輸入的問題。

7. Chat History

Chat History 主要是用來記錄和管理對話的過程。它可以包裝任何類型的鏈,因此能跟蹤這些鏈的輸入和輸出,並且將這些訊息傳送到數據庫內。如此一來,系統就可以調動以前的訊息,根據這些舊資訊作為背景資訊,以應對未來的對話。

舉例來說,當你跟機器人進行對話的時候,Chat History 會記錄這個完整對話,可以幫助機器人回憶之前的紀錄,提供更連貫、更精準的回應。

LangChain 應用實例教學,6 步驟讓你輕鬆上手!

現在我們已經對 LangChain 有了基本認識。接下來,我們將使用 LangChain 來實現一個簡單的翻譯功能,藉由實例教學,幫助你更深入了解 LangChain 的工作原理。

步驟 1:安裝 LangChian

首先,我們要在電腦上安裝 LangChain,可以使用 pip 安裝:

pip install langchain

步驟 2:選擇使用的語言模型

LangChain 支援許多不同的語言模型,除了示範中選擇的 OpenAI,還有來自法國的新創 MistralAI、以及由 OpenAI 前成員開發的 Anthropic

我們先選擇好使用的語言模型,在這裡選擇使用 OpenAI,先透過 pip 安裝:

pip install langchain-openai

接著,這裡選擇使用較為便宜的 gpt-3.5-turbo 參數,輸入以下語法:

from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-3.5-turbo")

步驟 3:設計提示模板

提示模板可以告訴模型我們要讓它執行的動作,這裡我們希望模型幫我們把句子翻譯成特定語言,因此設定模板如下:

rom langchain_core.prompts import ChatPromptTemplate

system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
    [("system", system_template), ("user", "{text}")]
)

其中,{language} 可以填入我們想翻譯成的語言,比如義大利語或法語;而 {text} 則是我們希望翻譯的句子內容。

步驟 4:設置輸出解析器

這一步驟是告訴 LangChain 如何處理模型的回應。因為我們只需要模型回傳簡單的句子,所以使用 StrOutputParser(),它可以確保最終的輸出為純文字,方便我們後續直接使用或顯示。輸入以下語法:

from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()

步驟 5:組合成鏈(Chain)

我們把上面的提示模板、模型和輸出解析器串在一起,形成一個「鏈(Chain)」。這條鏈的作用是讓每一部分依序執行:先用模板告訴模型該做什麼,再由模型產生回應,最後由解析器處理輸出。語法如下:

chain = prompt_template | model | parser

步驟 6:執行並取得結果

最後,我們可以啟動這條「鏈」,並給它一些要翻譯的內容,例如翻譯「hi」成義大利語:

chain.invoke({"language": "italian", "text": "hi"})

這時你便會得到翻譯好的結果。

以上就是 LangChain 的介紹,如果您想要了解更多 Solwen AI 資訊,或者想要免費諮詢 AI 導入評估,都可以透過下方藍色按鈕與 Solwen AI 團隊聯繫!

李彤

李彤

AI 工程師

擁有深厚的Fintech背景,曾任職於玉山金控與台灣經濟新報。專精於 NLP,在 RAG 技術應用與 AI Agent 開發方面有豐富經驗。曾獲工研院離職預測分析競賽冠軍,以及玉山 AI 手寫辨識競賽前段佳績。擅長運用 AI 技術優化業務流程,在風險管理與效能提升方面實作經驗豐富。

cta image

想收到更多 Solwen 彙整的國內外 AI 產業快訊嗎?

編輯精選

最新文章

solwen.ai logo

訂閱 Solwen 電子報,定期獲取 AI 產業快報

hello@solwen.ai

02-77305901

台北市基隆路二段51號11樓-2

Copyright © 2024 薩爾文科技股份有限公司 All rights reserved.

隱私權政策