本文 AI 產出,尚未審核

LangChain 教學:安裝與環境設定(Python / JavaScript)


簡介

在當前的 AI 應用熱潮中,LangChain 已成為串接大型語言模型(LLM)與外部資源的核心框架。它不僅提供了簡潔的 API,還支援多種語言(Python、JavaScript/TypeScript)與多樣的工具鏈(向量資料庫、搜尋引擎、工具呼叫等),讓開發者可以快速構建「思考」與「行動」結合的智慧應用。

本單元將說明 如何在本機或雲端環境中安裝 LangChain,並完成最基本的設定。內容涵蓋:

  1. 建立乾淨的虛擬環境(Python)或 Node 專案(JavaScript)
  2. 安裝核心套件與常用擴充套件
  3. 配置 OpenAI(或其他 LLM)金鑰
  4. 透過簡單範例驗證安裝是否成功

完成本單元後,你將能在 PythonJavaScript 中順利呼叫 LangChain,為後續的 Chain、Agent、Tool 開發奠定基礎。


核心概念

1. 為什麼要使用虛擬環境?

  • 依賴隔離:不同專案可能需要不同版本的 langchainopenai 或向量資料庫套件,虛擬環境可避免衝突。
  • 可重現性:透過 requirements.txt(Python)或 package.json(JS)鎖定套件版本,確保團隊成員或 CI/CD 環境得到相同結果。

技巧:在 Python 中使用 venvconda,在 JavaScript 中使用 npm/yarn + package-lock.json(或 pnpm-lock.yaml)。

2. 主要套件與功能

語言 核心套件 常見擴充套件 功能說明
Python langchain langchain-communitylangchain-openailangchain-chroma 提供 Chain、Agent、Memory、Retriever 等抽象層
JavaScript/TypeScript @langchain/core@langchain/openai @langchain/community@langchain/chroma 同樣支援 PromptTemplate、Chain、Tool 等概念,且可與前端/Node 生態整合

注意:JavaScript 仍在快速演進,若發現某功能缺少,可直接使用 @langchain/core 的低階 API,或參考官方 GitHub Issue。

3. LLM 金鑰管理

LangChain 本身不提供模型,必須透過 OpenAI、Azure OpenAI、Anthropic、Cohere 等服務的 API 金鑰。為了安全:

  • 環境變數.env)是最簡易且安全的做法。
  • 在 CI/CD 中使用 Secret Manager(GitHub Actions Secrets、GitLab CI Variables)注入金鑰。

以下示範 PythonJavaScript 的環境變數讀取方式。


程式碼範例

1️⃣ 建立與啟動虛擬環境(Python)

# 1. 建立虛擬環境
python -m venv .venv

# 2. 啟動環境(Linux/macOS)
source .venv/bin/activate

# 3. 啟動環境(Windows)
.\.venv\Scripts\activate

# 4. 安裝套件
pip install --upgrade pip
pip install langchain openai python-dotenv

說明python-dotenv 讓我們可以輕鬆載入 .env 檔案中的金鑰。

2️⃣ 建立與初始化 Node 專案(JavaScript)

# 1. 初始化 npm 專案
npm init -y

# 2. 安裝核心與 OpenAI 套件
npm install @langchain/core @langchain/openai dotenv

# 3. 建立 .env 檔案(同 Python)
echo "OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx" > .env

3️⃣ 讀取環境變數(Python)

# file: config.py
from pathlib import Path
from dotenv import load_dotenv
import os

# 載入 .env(放在專案根目錄)
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)

OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
if not OPENAI_API_KEY:
    raise ValueError("請在 .env 中設定 OPENAI_API_KEY")

4️⃣ 讀取環境變數(JavaScript)

// file: config.js
require('dotenv').config();   // 會自動讀取根目錄的 .env

const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
if (!OPENAI_API_KEY) {
  throw new Error('請在 .env 中設定 OPENAI_API_KEY');
}

module.exports = { OPENAI_API_KEY };

5️⃣ 測試 LangChain 與 LLM(Python)

# file: test_langchain_py.py
from langchain.llms import OpenAI
from config import OPENAI_API_KEY

# 初始化 LLM(使用 OpenAI 的 gpt-3.5-turbo)
llm = OpenAI(
    openai_api_key=OPENAI_API_KEY,
    model_name="gpt-3.5-turbo",
    temperature=0.7,
)

# 呼叫 LLM,確認能取得回應
response = llm.invoke("請用繁體中文說明什麼是 LangChain。")
print("LLM 回應:", response)

重點:若出現 Rate limitAuthenticationError,請檢查金鑰是否正確、是否已超過配額。

6️⃣ 測試 LangChain 與 LLM(JavaScript)

// file: test_langchain_js.mjs
import { OpenAI } from '@langchain/openai';
import { OPENAI_API_KEY } from './config.js';

const llm = new OpenAI({
  openAIApiKey: OPENAI_API_KEY,
  modelName: 'gpt-3.5-turbo',
  temperature: 0.7,
});

async function main() {
  const response = await llm.invoke(
    '請用繁體中文說明什麼是 LangChain。'
  );
  console.log('LLM 回應:', response);
}

main().catch(console.error);

7️⃣ 建立最簡單的 Chain(Python)

# file: simple_chain.py
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from config import OPENAI_API_KEY

# PromptTemplate 讓我們把變數插入 Prompt 中
template = """以下是一段中文說明,請將它改寫成 3 個要點,並加上編號:
{input_text}
"""
prompt = PromptTemplate(template=template, input_variables=["input_text"])

llm = OpenAI(
    openai_api_key=OPENAI_API_KEY,
    model_name="gpt-3.5-turbo",
    temperature=0.5,
)

chain = LLMChain(llm=llm, prompt=prompt)

result = chain.run({"input_text": "LangChain 是一個用於構建 LLM 應用的框架,提供了 Chain、Agent、Tool 等抽象層。"})
print(result)

8️⃣ 建立最簡單的 Chain(JavaScript)

// file: simple_chain.mjs
import { PromptTemplate } from '@langchain/core/prompts';
import { LLMChain } from '@langchain/core/chains';
import { OpenAI } from '@langchain/openai';
import { OPENAI_API_KEY } from './config.js';

const template = `以下是一段中文說明,請將它改寫成 3 個要點,並加上編號:
{input_text}`;
const prompt = PromptTemplate.fromTemplate(template);

const llm = new OpenAI({
  openAIApiKey: OPENAI_API_KEY,
  modelName: 'gpt-3.5-turbo',
  temperature: 0.5,
});

const chain = new LLMChain({ llm, prompt });

async function run() {
  const result = await chain.invoke({
    input_text: 'LangChain 是一個用於構建 LLM 應用的框架,提供了 Chain、Agent、Tool 等抽象層。',
  });
  console.log(result);
}
run().catch(console.error);

小結:以上範例展示了從 安裝環境變數呼叫 LLM建立基本 Chain 的完整流程。只要環境設置正確,兩種語言的程式碼幾乎可以互相對照學習。


常見陷阱與最佳實踐

陷阱 說明 最佳實踐
金鑰硬編碼 直接把 sk-... 寫在程式碼裡,會導致資安風險。 使用 .envdotenv,或在雲端平台使用 Secret Manager。
版本不一致 LangChain 更新頻繁,舊版 API 可能失效。 requirements.txt / package.json 中鎖定版本,並在每次升級前閱讀 Release Notes。
未安裝依賴的向量資料庫 想使用 ChromaFAISS 等檢索功能卻忘了安裝相應套件。 依需求安裝 langchain-chromafaiss-cpu(Python)或 @langchain/chroma(JS)。
模型名稱錯誤 使用 gpt-3.5-turbo 時寫成 gpt3.5,會拋出 InvalidRequestError 參考官方文件的 model_name 列表,並使用 常數 方式管理。
同步/非同步混用 Python 示例多為同步,JavaScript 多為 async/await,混用會導致程式卡住。 明確決定執行環境:Python 使用 awaitasyncio)或同步;Node.js 全部使用 async/await
忘記啟動虛擬環境 直接在全域環境安裝套件,導致衝突。 每次開發前執行 source .venv/bin/activatenpm run dev 前確認 node_modules 正確。

其他實務建議

  1. 使用 TypeScript(對於 JavaScript 開發者)
    • @langchain/core 已提供完整型別,能在開發階段即捕捉錯誤。
  2. 把 LLM 初始化抽離成單例
    • 多個 Chain 共用同一個 LLM 實例,可減少金鑰重新驗證的開銷。
  3. 加入 Logging
    • LangChain 支援 langchain.callbacks,可在開發期間觀察 Prompt、LLM 回傳與 Token 使用情況。
  4. 測試(Unit Test)
    • 使用 pytestjest 搭配 Mock(例如 unittest.mockmsw)模擬 LLM 回傳,避免每次測試都消耗配額。

實際應用場景

場景 使用的 LangChain 元件 為什麼適合
客服機器人 LLMChain + ConversationBufferMemory 讓機器人能記住對話上下文,提供連貫回應。
文件問答系統 RetrievalQAChain + Chroma 向量資料庫 先把文件向量化,再以檢索結果作為 Prompt,提升答案正確率。
自動化報告產出 LLMChain + PromptTemplate 只需要提供數據,LLM 自動產出報告文字。
代碼輔助 (Co-pilot) AgentExecutor + Tool(如 PythonREPLTool Agent 能根據使用者指令呼叫工具執行程式碼,回傳結果。
多語言翻譯與校對 LLMChain + TranslationPrompt 透過 Prompt 控制翻譯風格與校對規則,支援繁體中文與其他語言。

範例:若要在企業內部建置「合約條款檢索」系統,只需將所有合約上傳至 Chroma,使用 RetrievalQAChain 讓 LLM 先檢索相關段落,再根據 Prompt 給出法律建議。整個流程可在 PythonNode.js 中同樣完成。


總結

  • LangChain 為 LLM 應用提供了統一且可擴充的抽象層,讓開發者能快速從「呼叫模型」升級到「組合 Chain、Agent、Tool」的完整方案。
  • 本文詳細說明了 PythonJavaScript 的安裝步驟、環境變數管理、最小可執行範例,以及常見的陷阱與最佳實踐。
  • 只要遵守 虛擬環境、金鑰安全、版本鎖定 三大原則,即可在本機或雲端穩定運行 LangChain,進一步開發客服、問答、報告產出等實務應用。

下一步:在掌握了安裝與基本呼叫後,建議嘗試 Chain 組合(如 SequentialChainRouterChain)或 Agent 與 Tool(如 PythonREPLToolRequestsGetTool),逐步打造屬於自己的智慧工作流。祝開發順利,玩得開心! 🚀