Streamlit 框架簡化了互動式 Web 應用程式的開發流程,而將這些應用程式佈署到雲端平臺,則能讓更多使用者輕鬆存取。本文除了 Streamlit Cloud 官方平臺外,也涵蓋了 LangServe、Heroku、AWS、Google Cloud Run 及 DigitalOcean 等多元佈署選項,讓開發者能根據專案規模和需求選擇最合適的方案。文章也提供實用的 Git 推播錯誤排除技巧,以及使用 LangChain 框架串接 OpenAI GPT 模型的佈署,讓開發者能快速上手,順利完成從開發到佈署的完整流程。

佈署 Streamlit 應用程式到雲端

佈署 Streamlit 應用程式到雲端可以讓您的應用程式更容易被他人存取和使用。以下是佈署到 Streamlit Cloud 的步驟:

步驟 1:建立 Streamlit Cloud 帳戶

首先,您需要建立一個 Streamlit Cloud 帳戶。這個過程相對簡單,只需要幾個步驟。

步驟 2:建立新應用程式

登入您的 Streamlit Cloud 帳戶後,點選「New app」按鈕來建立一個新的應用程式。

步驟 3:選擇 GitHub 倉函式庫

選擇您想要佈署的 GitHub 倉函式庫、分支(通常是「main」)和主 Python 檔案(例如「LangChainUI.py」)。

步驟 4:佈署應用程式

點選「Deploy」按鈕來佈署您的應用程式。如果一切順利,您的應用程式就會成功佈署到 Streamlit Cloud,讓他人可以存取。

其他雲端佈署選項

除了 Streamlit Cloud,還有其他方法可以將您的應用程式佈署到雲端:

1. LangServe

LangServe 是一個專門為佈署 LangChain 應用程式設計的工具。它提供了易於建立 API 的功能,並且有一個用於測試端點的使用者介面。

使用 LangServe

要使用 LangServe,您通常需要:

  • 安裝 LangServe:使用 pip 安裝 LangServe,命令為pip install langserve
  • 組態 LangServe:根據您的需求組態 LangServe,包括設定 API 和端點。
  • 佈署應用程式:使用 LangServe 佈署您的 LangChain 應用程式。

Git 推播錯誤解決

如果您在推播程式碼到 GitHub 時遇到錯誤,可以嘗試以下步驟:

  1. 更新 URL:確保您的 URL 正確無誤。如果不正確,更新它為your_user_name/streamlit-qa-app.git
  2. 登入:如果您看到「請在瀏覽器中完成身份驗證」的錯誤訊息,請確保您已登入。
  3. 檢查 GitHub 帳戶:確保您正在使用正確的 GitHub 帳戶,並且具有推播到該倉函式庫的必要許可權。
  4. 再次推播:嘗試再次推播,使用命令git push -u origin main
  5. 生成新的個人存取令牌:前往 GitHub 設定中的開發者設定,生成一個具有倉函式庫許可權的新令牌,並使用它作為您的密碼進行推播。
  6. 使用 HTTPS:如果您正在使用 SSH URL,請嘗試切換到 HTTPS URL,命令為git remote set-url origin https://github.com/your_user_name/your_repo.git
  7. 檢查網際網路連線和防火牆設定:確保您的網際網路連線穩定且防火牆設定不會干擾您的推播。

透過這些步驟,您可以成功地將您的 Streamlit 應用程式佈署到雲端,並讓他人可以存取。

使用 Python 建立 LangChain 應用程式並佈署到雲端平臺

LangChain 應用程式的建立

首先,您需要定義您的 chain 或 agent 在一個 Python 檔案中。然後,建立一個 FastAPI 應用程式並將您的 chain 新增為一個路由。最後,使用 uvicorn 啟動您的伺服器。

佈署選項

有多種雲端平臺可供您佈署 LangChain 應用程式,包括:

  1. Heroku:適合快速佈署,使用者友好且支援 Python 應用程式。
  2. AWS Elastic Beanstalk:更強大的選擇,適合大型應用程式,需要設定 AWS 帳戶和 CLI 工具。
  3. Google Cloud Run:適合容器化應用程式,需要建立 Dockerfile 和推播到 Google Container Registry。
  4. DigitalOcean App Platform:簡單易用的平臺,介於 Heroku 和 AWS 之間。
  5. Streamlit Cloud:Streamlit 官方的雲端平臺,簡單易用。

佈署步驟

每個平臺都有其特定的佈署步驟,以下是簡要概述:

  1. Heroku:註冊 Heroku 帳戶,安裝 CLI 工具,建立 Procfile,建立應用程式,推播程式碼。
  2. AWS Elastic Beanstalk:註冊 AWS 帳戶,安裝 CLI 工具,初始化 EB 環境,建立環境,佈署應用程式。
  3. Google Cloud Run:建立 Dockerfile,建置容器映像,推播到 Google Container Registry,佈署到 Cloud Run。
  4. DigitalOcean App Platform:連線 GitHub 儲存函式庫,選擇專案和分支,選擇資源計劃,點選佈署。
  5. Streamlit Cloud:直接使用 Streamlit Cloud 平臺佈署您的應用程式。

重點

  • 建立 LangChain 應用程式並佈署到雲端平臺
  • 選擇適合的雲端平臺(Heroku、AWS Elastic Beanstalk、Google Cloud Run、DigitalOcean App Platform、Streamlit Cloud)
  • 完成了從原型到生產的旅程
  • 學會瞭如何建立互動式 Q&A 應用程式,管理聊天記錄,並佈署您的應用程式到雲端平臺

測試問題

  1. Streamlit 主要用途是什麼? A. 資料儲存 B. 建立互動式 Web 應用程式 C. 機器學習模型訓練 D. 網路安全

答案:B. 建立互動式 Web 應用程式

2. Python 函式庫連線 OpenAI 的 GPT-3.5-turbo 模型

在本章中,連線 OpenAI 的 GPT-3.5-turbo 模型所需的 Python 函式庫是 LangChain。LangChain 提供了一種簡單的方式來與 OpenAI 的 API 進行互動,從而實作對 GPT-3.5-turbo 模型的存取和使用。

3. Streamlit 中的 st.text_input 函式

Streamlit 的 st.text_input 函式主要用於建立文字輸入欄位,以便使用者輸入查詢內容。在本章的背景下,st.text_input 的作用是為使用者提供一個輸入框,讓使用者可以輸入他們的查詢或問題。

4. Streamlit 中的對話歷史記錄功能

Streamlit 中實作對話歷史記錄功能的方法是透過會話狀態(Session state)。會話狀態允許應用程式在使用者會話期間儲存和存取資料,這對於跟蹤對話歷史和維護使用者與 AI 模型之間的對話上下文非常重要。

5. 佈署 Streamlit 應用程式的第一步

佈署 Streamlit 應用程式的第一步是設定佈署環境。這包括選擇一個合適的網路伺服器或雲端服務提供商,以便將應用程式佈署到網際網路上。這一步驟對於讓您的應用程式可被外部使用者存取至關重要。

6. LangChain 如何增強 AI 模型的整合

LangChain 透過簡化與 OpenAI API 的互動來增強 AI 模型的整合。它提供了一個簡單、直觀的 API,讓開發人員可以輕鬆地將 GPT-3.5-turbo 等 AI 模型整合到自己的應用程式中。

7. 執行 Streamlit 應用程式的命令

執行 Streamlit 應用程式的命令是 streamlit run。這個命令可以讓您在本地機器上啟動 Streamlit 伺服器,並透過網頁瀏覽器存取您的應用程式。

從技術架構視角來看,佈署 Streamlit 應用程式到雲端平臺是將原型轉化為可公開存取服務的關鍵步驟。本文探討了 Streamlit Cloud、LangServe、Heroku、AWS、Google Cloud Run 和 DigitalOcean 等多種佈署方案,並提供了詳盡的操作。其中,Streamlit Cloud 的便捷性使其成為快速佈署的首選,而 LangServe 則專注於 LangChain 應用程式的 API 佈署,展現了技術方案的多樣性。然而,不同平臺的學習曲線和維護成本差異顯著,技術團隊需要根據專案規模、資源限制和長期目標進行權衡。Heroku 適合小型專案快速上線,AWS 和 Google Cloud 則更適合大型、複雜的應用程式,但需要更專業的雲端技能。

目前,Serverless 佈署方案和容器化技術正逐漸成為主流,有效降低了營運成本和佈署複雜度。預計未來,更多自動化佈署工具和平臺將湧現,進一步簡化佈署流程,降低技術門檻。同時,針對不同 AI 模型和框架的客製化佈署方案也將蓬勃發展,例如 LangServe 對 LangChain 的支援。

玄貓認為,開發者應優先掌握 Streamlit Cloud 和 LangServe 等易於上手的佈署方案,快速驗證產品概念。隨著專案規模的擴大,再逐步學習更進階的雲端佈署技術,才能在快速迭代和長期維護之間取得最佳平衡。對於追求極致效能和客製化的團隊,深入理解容器化技術和 Serverless 架構將是不可或缺的技能。