返回文章列表

LangChain應用程式佈署

本文介紹如何佈署 LangChain 應用程式,涵蓋 Git 環境設定、API 金鑰安全管理、版本控制最佳實踐以及佈署至 GitHub 的完整流程。文章詳細說明瞭設定 Git 身份、使用環境變數保護 API 金鑰、使用 .env 檔案管理敏感資訊,以及解決 Git

Web 開發 DevOps

在實際佈署 LangChain 應用程式之前,必須先建立完善的開發環境。這包含設定 Git 身份以便追蹤程式碼版本,以及妥善管理 API 金鑰等敏感資訊以確保安全性。透過正確設定 Git 環境變數,可以避免 API 金鑰直接暴露在程式碼中,有效降低安全風險。此外,建立 .env 檔案能集中管理環境變數,提升開發效率和程式碼可維護性。這些準備工作能為後續的佈署流程奠定穩固的基礎,確保應用程式順利上線運作。

佈署 LangChain 應用程式

要將 LangChain 應用程式佈署到生產環境,需要進行一系列的步驟。首先,需要確保 Git 已經安裝在系統中。

安裝 Git

如果 Git 尚未安裝,需要下載並安裝它。安裝步驟如下:

  1. 下載 Git 安裝程式:可以從官方網站下載 Git 安裝程式。
  2. 執行安裝程式:按照安裝程式的指引完成安裝。
  3. 新增 Git 到系統路徑:安裝完成後,需要將 Git 新增到系統路徑中,以便可以在命令提示符中使用 Git 命令。

設定 Git 身份

Git 使用您的身份資訊來關聯提交作者。需要設定 Git 組態以包含您的姓名和電子郵件地址。設定步驟如下:

  1. 開啟命令提示符:需要在命令提示符中執行 Git 命令。
  2. 執行git config命令:使用git config命令設定您的姓名和電子郵件地址。
  3. 驗證設定:可以使用git config命令驗證您的設定是否正確。

初始化 Git 倉函式庫

需要在您的專案目錄中初始化 Git 倉函式庫。初始化步驟如下:

  1. 開啟命令提示符:需要在命令提示符中執行 Git 命令。
  2. 執行git init命令:使用git init命令初始化 Git 倉函式庫。
  3. 驗證初始化:可以使用git status命令驗證 Git 倉函式庫是否已經初始化。

佈署 LangChain 應用程式

佈署 LangChain 應用程式需要將您的專案上傳到遠端倉函式庫。上傳步驟如下:

  1. 建立遠端倉函式庫:需要在 GitHub 或其他 Git 伺服器上建立一個遠端倉函式庫。
  2. 新增遠端倉函式庫:使用git remote add命令新增遠端倉函式庫。
  3. 上傳專案:使用git push命令上傳您的專案到遠端倉函式庫。

圖表翻譯:

@startuml
skinparam backgroundColor #FEFEFE
skinparam sequenceArrowThickness 2

title LangChain應用程式佈署

actor "客戶端" as client
participant "API Gateway" as gateway
participant "認證服務" as auth
participant "業務服務" as service
database "資料庫" as db
queue "訊息佇列" as mq

client -> gateway : HTTP 請求
gateway -> auth : 驗證 Token
auth --> gateway : 認證結果

alt 認證成功
    gateway -> service : 轉發請求
    service -> db : 查詢/更新資料
    db --> service : 回傳結果
    service -> mq : 發送事件
    service --> gateway : 回應資料
    gateway --> client : HTTP 200 OK
else 認證失敗
    gateway --> client : HTTP 401 Unauthorized
end

@enduml

圖表展示了佈署 LangChain 應用程式的步驟,包括安裝 Git、設定 Git 身份、初始化 Git 倉函式庫和佈署 LangChain 應用程式。

內容解密:

以上步驟展示瞭如何佈署 LangChain 應用程式。首先,需要安裝 Git 並設定 Git 身份。然後,需要初始化 Git 倉函式庫並上傳專案到遠端倉函式庫。這些步驟可以幫助您成功佈署 LangChain 應用程式。

設定 Git 身分與環境變數

在開始使用 Git 進行版本控制之前,設定您的 Git 身分和環境變數是非常重要的步驟。這不僅能夠確保您的提交被正確地歸屬於您,而且還能夠保護您的敏感資訊,如 API 金鑰。

設定 Git 身分

  1. 設定電子郵件地址:您可以使用以下命令設定您的 Git 電子郵件地址,請替換 [email protected] 為您的實際電子郵件地址。
    git config --global user.email "[email protected]"
    
2. **設定您的姓名**:使用以下命令設定您的姓名,請替換 `Your Name` 為您的實際姓名。
   ```bash
git config --global user.name "Your Name"
  1. 驗證您的設定:您可以使用以下命令來驗證您的 Git 設定。
    git config --list
    
   這將顯示所有您的 Git 組態,包括您剛剛設定的電子郵件地址和姓名。
4. **再次嘗試提交**:設定了電子郵件地址和姓名後,再次嘗試您的提交命令。
   ```bash
git commit -m "Initial commit for Streamlit Q&A app"

重要注意事項

  • --global 標誌設定此組態適用於您電腦上的所有 Git 倉函式庫。如果您想要為不同的專案使用不同的設定,可以省略 --global 並在特定的倉函式庫中執行這些命令。
  • 請確保使用與您的 GitHub 帳戶相關聯的電子郵件地址,如果您計劃將提交推播到 GitHub。
  • 如果您關心隱私,GitHub 提供選項以保持您的電子郵件地址私密。您可以在 Git 組態中使用 GitHub 提供的無回復電子郵件地址。

設定 OpenAI 金鑰為環境變數

為了保持敏感資訊(如 API 金鑰)的安全,您應該將 OpenAI 金鑰設定為環境變數。以下是如何做到的詳細解釋:

Windows

  1. 臨時設定(僅適用於當前會話)
    • 開啟命令提示符。
    • 輸入:set OPENAI_API_KEY=your_api_key_here
  2. 永久設定
    • 在開始選單中搜尋「環境變數」。
    • 點選「編輯系統環境變數」。
    • 點選「環境變數」。
    • 在「使用者變數」下,點選「新建」。
      • 變數名稱:OPENAI_API_KEY
      • 變數值:your_api_key_here
    • 點選「確定」以儲存。

macOS/Linux

請參考您所使用的作業系統的檔案以瞭解如何設定環境變數。一般來說,您可以在終端中使用 export 命令來設定環境變數,例如:

export OPENAI_API_KEY=your_api_key_here

請記得替換 your_api_key_here 為您的實際 OpenAI API 金鑰。

透過這些步驟,您將能夠正確地設定您的 Git 身分和環境變數,從而保護您的敏感資訊並順暢地進行開發工作。

環境變數設定與安全性最佳實踐

在開發過程中,為了確保 API 金鑰和其他敏感資訊的安全性,正確設定環境變數至關重要。以下將介紹如何設定環境變數以及相關的最佳實踐。

暫時設定(僅限當前會話)

  1. 開啟終端機。
  2. 輸入:export OPENAI_API_KEY=你的API金鑰

永久設定

  1. 開啟你的 shell 組態檔案(例如,~/.bash_profile~/.zshrc)。
  2. 新增以下行:export OPENAI_API_KEY=你的API金鑰
  3. 儲存檔案並重新啟動你的終端機,或執行 source ~/.bash_profile(或相關檔案)。

使用 .env 檔案

  1. 在你的專案目錄中建立一個名為 .env 的檔案。

  2. 新增以下行到檔案中:OPENAI_API_KEY=你的API金鑰

  3. 安裝 python-dotenv 包:pip install python-dotenv

  4. 在你的 Python 程式碼中載入環境變數:

    from dotenv import load_dotenv
    import os
    
    load_dotenv()
    
    openai_api_key = os.getenv("OPENAI_API_KEY")
    

存取環境變數

一旦你設定了環境變數,你就可以在你的 Python 程式碼中這樣存取它:

import os

openai_api_key = os.getenv("OPENAI_API_KEY")

使用環境變數的優點

  • 安全性:你的 API 金鑰不會被硬編碼在你的原始碼中。
  • 靈活性:易於更改而不需要修改程式碼。
  • 可移植性:在不同的環境中(開發、預發布、生產)都能夠正常工作。

最佳實踐

  • 永遠不要 將你的 .env 檔案提交到版本控制中。
  • .env 新增到你的 .gitignore 檔案中。
  • 為其他開發者提供一個包含佔位值的 .env.example 檔案。
  • 透過這種方式,你可以在本地開發而不會暴露你的敏感資訊。在佈署應用程式時,你將使用佈署平臺的金鑰管理系統(如 Streamlit Cloud 的 Secrets 管理)來安全地儲存和存取 API 金鑰在生產環境中。

解決儲存函式庫中的敏感資訊問題

如果你注意到你的儲存函式庫中仍然有一些敏感資訊問題,你可以遵循以下步驟來解決它們:

  1. 檢查你的程式碼和提交歷史,以確定哪些敏感資訊已經被公開。
  2. 使用 git filter-branchgit filter-repo 等工具從你的儲存函式庫中刪除敏感資訊。
  3. 更新你的 .gitignore 檔案,以確保敏感檔案不會再次被提交。
  4. 通知你的團隊成員關於敏感資訊的洩露,並指導他們如何保護自己的 API 金鑰和其他敏感資訊。

透過遵循這些步驟和最佳實踐,你可以保護你的敏感資訊,並維護一個安全且可靠的開發環境。

私密檔案與 Git 版本控制最佳實踐

在使用 Git 版本控制系統時,管理私密檔案和敏感資訊(如 API 金鑰)至關重要。以下步驟將引導您完成移除 API 金鑰、更新.gitignore檔案,並強制推播變更到遠端儲存函式庫的過程。

移除 API 金鑰

  1. 建立.env檔案:建立一個名為.env的檔案,用於儲存敏感資訊,如 API 金鑰。
  2. 從 Git 追蹤中移除.env檔案:使用以下命令從 Git 追蹤中移除.env檔案:
    git rm --cached.env
    
3. **更新`.gitignore`檔案**:確保您的`.gitignore`檔案包含以下內容,以忽略敏感檔案:

.env *.pyc pycache/


### 更新程式碼以使用環境變數

1. **修改程式碼以載入環境變數**:在您的Python檔案(如`LangChainUI.py`)中,使用`dotenv`函式庫載入環境變數:
   ```python
import os
from dotenv import load_dotenv

load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")

提交變更

  1. 提交更新:提交您的變更,包括更新的.gitignore檔案和修改過的程式碼:
    git add.gitignore LangChainUI.py
    git commit -m "移除API金鑰並更新.gitignore"
    
2. **強制推播變更**:強制推播您的變更到遠端儲存函式庫:
   ```bash
git push -u origin main --force

清理 Git 歷史記錄

如果 API 金鑰仍然存在於您的 Git 歷史記錄中,您可能需要清理它:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch.env LangChainUI.py" --prune-empty --tag-name-filter cat -- --all

然後,再次強制推播:

git push origin --force --all

解決電子郵件隱私相關問題

有時,您可能會遇到與電子郵件隱私相關的錯誤訊息。為瞭解決這個問題:

  1. 組態 Git 使用 GitHub 提供的無回復電子郵件地址
    • 登入您的 GitHub 帳戶。
    • 前往設定 > 電子郵件。
    • 找到一段文字,類別似於“在網頁上根據 Git 操作和代表您傳送電子郵件時保持我的電子郵件地址私密。”
    • 複製這個電子郵件地址(它應該類別似於[email protected])。
  2. 設定 Git 組態:開啟您的命令提示符或終端,並執行以下命令:
    git config --global user.email "您的GitHub無回復電子郵件地址"
    

透過遵循這些步驟,您可以確保敏感資訊不會被提交到您的Git儲存函式庫,並解決可能出現的電子郵件隱私相關問題。

### 解決 Git Commit 中的 Email 隱私限制

當您嘗試推播 Git Commit 時,可能會遇到 Email 隱私限制的問題。這通常發生在您的 Git 設定中的 Email 地址與 GitHub 設定的 Email 地址不匹配時。以下是解決此問題的步驟:

1. **檢查 Git 設定的 Email 地址**:您可以使用 `git config --global user.email` 來檢查目前的 Email 地址設定。
2. **更新 Git Commit 的 Email 地址**:如果您想要保持 Email 地址私密,您可以更新 Git Commit 的 Email 地址為 GitHub 提供的無回復 Email 地址。這可以透過 `git commit --amend --reset-author` 來完成,然後儲存並關閉編輯器。
3. **強制推播變更**:更新 Email 地址後,您需要強制推播變更到 GitHub。使用 `git push origin --force --all` 來完成這一步。

或者,如果您願意公開您的 Commit Email 地址,您可以:

1. **前往 GitHub 設定**:進入 GitHub 的設定頁面,找到「Emails」部分。
2. **取消保持 Email 地址私密**:勾選「Keep my email address private」的對勾框,以允許您的 Email 地址在 Commit 中公開顯示。
3. **設定公開 Commit Email**:確保您的公開 Commit Email 地址設定為您願意公開的地址。

### 佈署應用程式到 GitHub

要將您的應用程式佈署到 GitHub,請按照以下步驟:

1. **建立新的 GitHub 倉函式庫**:如果您尚未建立,請在 GitHub 上建立一個新的倉函式庫,例如「streamlit-qa-app」。
2. **修改命令以符合您的資訊**:更新 Git 命令以指向您的 GitHub 倉函式庫。例如:

git remote add origin https://github.com/actual-username/streamlit-qa-app.git git branch -M main git push -u origin main

這些命令分別做了以下事情:
- 新增一個名為「origin」的遠端倉函式庫,指向您的 GitHub 倉函式庫。
- 將當前的分支重新命名為「main」(如果它尚未命名為「main」)。
- 推播您的本地「main」分支到遠端倉函式庫,並設定跟蹤。
3. **連線本地倉函式庫與 GitHub 倉函式庫**:執行以上命令後,您的本地倉函式庫將與 GitHub 倉函式庫連線,且您的程式碼將被推播到 GitHub。

### 提供 GitHub 存取權

在佈署應用程式到 GitHub 時,您可能需要授予 GitHub 相應的許可權。若您遇到無法存取倉函式庫或沒有許可權的問題,請按照以下步驟:

1. **驗證倉函式庫是否存在**:確認您的倉函式庫名稱是否正確,例如「qa-app」。如果您看到 404 錯誤,則表示倉函式庫不存在。
2. **建立新的倉函式庫(如果必要)**:如果倉函式庫不存在,請在 GitHub 上建立一個新的倉函式庫,確保它位於您的帳戶下(您的使用者名稱)。如果您推播現有的倉函式庫,請勿初始化倉函式庫以包含 README、.gitignore 或授權檔案。
3. **檢查遠端 URL**:使用 `git remote -v` 來驗證遠端 URL 是否正確。它應該顯示類別似於 `https://github.com/actual-username/qa-app.git (fetch)` 的內容。

透過這些步驟,您應該能夠解決 Git Commit 中的 Email 隱私限制問題,並成功佈署您的應用程式到 GitHub。

從技術架構與佈署的視角來看,LangChain 應用程式佈署的核心在於妥善管理程式碼版本、環境變數及私密檔案。本文詳述了 Git 的安裝、設定、初始化及遠端倉函式庫操作,涵蓋了從程式碼提交到佈署的完整流程。其中,特別強調了環境變數的設定,以確保 API 金鑰等敏感資訊的安全,並推薦使用 `.env` 檔案搭配 `python-dotenv` 函式庫,實作更佳的私密檔案管理。此外,文章也針對常見的 Git 操作問題,例如電子郵件隱私限制、遠端倉函式庫連結錯誤等,提供了詳盡的解決方案。然而,單純將程式碼佈署至 GitHub 並不足以成為一個可執行的應用程式,後續還需考慮伺服器環境設定、持續整合/持續佈署(CI/CD)流程的建立等議題。展望未來,隨著雲端原生技術的發展,預期 LangChain 應用程式的佈署將更加簡便,並朝向自動化、彈性化及可擴充套件性的方向發展。對於追求效率的開發者而言,善用伺服器less 平臺或容器化技術,將是未來佈署 LangChain 應用程式的主流趨勢。玄貓認為,掌握這些佈署技巧,並持續關注相關技術的發展,將有助於開發者更有效率地建構與釋出根據 LangChain 的 AI 應用程式。