Streamlit 開發環境的建立,除了安裝必要的套件之外,設定環境變數以保護 OpenAI 金鑰是相當重要的環節。此舉能避免金鑰直接暴露於程式碼中,降低安全風險。GitHub 佈署和存取控制設定則能確保程式碼版本控管和團隊協作的順暢。Streamlit Cloud 提供便捷的一鍵式佈署方案,簡化了應用程式上線流程。此外,AWS、Google Cloud 和 Azure 等雲端平臺也提供 Streamlit 應用程式的佈署選項,開發者可依據需求選擇。

import os
import streamlit as st
from langchain import OpenAI, LLMChain, PromptTemplate
from transformers import AutoModelForSequenceClassification, AutoTokenizer

os.environ['OPENAI_KEY'] = 'YOUR_OPENAI_KEY_HERE'

# ... (其餘程式碼依照原文順序)

玄貓的 Streamlit 開發環境設定

環境變數設定:保護 OpenAI 金鑰

為了確保開發過程中的敏感資訊安全,特別是 OpenAI 金鑰,設定環境變數是一種良好的做法。這樣可以避免在程式碼中直接硬編碼金鑰,從而減少因版本控制系統而導致的安全風險。

內容解密:

import os

# 設定OpenAI金鑰為環境變數
os.environ['OPENAI_KEY'] = 'YOUR_OPENAI_KEY_HERE'

在上述程式碼中,YOUR_OPENAI_KEY_HERE應該被替換為您的實際 OpenAI 金鑰。這樣,金鑰就不會直接出現在您的程式碼中,而是透過環境變數安全地儲存和存取。

GitHub 佈署與存取控制

佈署應用於 GitHub

Streamlit 應用可以輕鬆地佈署於 GitHub Pages 或 GitHub Repository 中。這需要您先將應用程式的程式碼推播到 GitHub 倉函式庫,然後設定 GitHub Actions 或其他 CI/CD 工具來自動佈署您的應用。

提供 GitHub 存取權

為了讓他人能夠存取和貢獻您的專案,您需要設定適當的存取許可權。這包括邀請合作者加入您的倉函式庫、設定倉函式庫的可見性(公眾或私人),以及管理不同使用者的許可權等。

Streamlit Cloud 佈署

Streamlit Cloud 是一種專門為 Streamlit 應用設計的平臺,提供了一鍵佈署和管理 Streamlit 應用的功能。使用 Streamlit Cloud,您可以輕鬆地佈署、更新和管理您的應用,不需要關心底層的基礎設施。

圖表翻譯:

上述流程圖展示了從本地開發到佈署應用於 Streamlit Cloud 的整個過程。

其他雲端佈署選項

除了 Streamlit Cloud,還有許多其他雲端平臺可以用於佈署 Streamlit 應用,例如 AWS、Google Cloud、Azure 等。每個平臺都有其自己的優點和缺點,選擇哪一個取決於您的具體需求和現有的基礎設施。

回顧問題

  1. 如何保護 OpenAI 金鑰不被公開?
  2. Streamlit Cloud 的主要優點是什麼?
  3. 如何設定 GitHub 存取許可權?

回顧答案

  1. 透過設定環境變數來保護 OpenAI 金鑰。
  2. Streamlit Cloud 提供了一鍵佈署和管理 Streamlit 應用的功能,簡化了佈署過程。
  3. 可以透過邀請合作者、設定倉函式庫可見性和管理使用者許可權來控制 GitHub 存取許可權。

進一步閱讀

開發環境設定

在桌面執行 Streamlit

要開始使用 Streamlit,您需要先安裝 Streamlit 函式庫。這可以透過 pip 進行安裝:

pip install streamlit

安裝完成後,您可以透過以下命令執行 Streamlit:

streamlit run your_app.py

建立和使用語言模型

語言模型是自然語言處理任務中的核心元件。您可以使用 Hugging Face 的 Transformers 函式庫來建立和使用語言模型:

from transformers import AutoModelForSequenceClassification, AutoTokenizer

# 載入預訓練模型和分詞器
model = AutoModelForSequenceClassification.from_pretrained('distilbert-base-uncased')
tokenizer = AutoTokenizer.from_pretrained('distilbert-base-uncased')

處理使用者輸入

處理使用者輸入是互動式 Web 應用的關鍵部分。您可以使用 Streamlit 的輸入元件來收集使用者輸入:

import streamlit as st

# 建立一個文字輸入框
user_input = st.text_input('請輸入您的文字')

這些只是 Streamlit 開發中的一些基本概念和技術。透過實踐和學習,您可以建立出更加複雜和功能豐富的 Web 應用。

佈署應用程式與 GitHub 整合

在現代軟體開發中,佈署應用程式和版本控制系統的整合是非常重要的步驟。這不僅能夠確保軟體的可靠性和穩定性,也能夠提高開發團隊的效率和協作性。

佈署應用程式

佈署應用程式的過程涉及將已經開發完成的軟體從開發環境移至生產環境。這個過程需要仔細的規劃和執行,以確保軟體能夠順暢地執行在生產環境中。佈署的步驟包括設定伺服器、組態資料函式庫、佈署程式碼等。

程式碼佈署

import os
from fabric import Connection

# 定義遠端伺服器連線資訊
host = 'example.com'
user = 'username'
password = 'password'

# 建立遠端連線
conn = Connection(host=host, user=user, connect_kwargs={'password': password})

# 上傳程式碼到遠端伺服器
conn.put('local_file.py', '/remote/path/')

# 執行遠端命令
conn.run('python /remote/path/local_file.py')

GitHub 整合

GitHub 是一個非常流行的版本控制平臺,許多開發團隊都使用它來管理他們的程式碼。透過 GitHub 整合,開發團隊可以更容易地合作、追蹤變更和管理版本。

GitHub API

import requests

# 定義GitHub API端點和Token
url = 'https://api.github.com/repos/user/repo'
token = 'your_token'

# 設定API請求標頭
headers = {'Authorization': f'token {token}'}

# 傳送GET請求
response = requests.get(url, headers=headers)

# 處理回應
print(response.json())

圖表翻譯:

此圖示為 GitHub API 的簡單示範,展示瞭如何使用 Python 的 requests 函式庫來傳送 GET 請求到 GitHub API 端點,並處理回應資料。

人工智慧應用開發入門

在人工智慧(AI)領域中,LangChain 和大語言模型(LLMs)是兩個非常重要的概念。LangChain 是一種開源框架,允許開發者輕鬆地構建和佈署 AI 應用程式,而 LLMs 則是指可以處理和生成人類語言的巨型神經網路模型。

LangChain 簡介

LangChain 是一個開源平臺,提供了一套工具和框架,讓開發者可以快速地構建和佈署 AI 應用程式。它支援多種程式語言,包括 Python、JavaScript 和 Java 等。LangChain 的核心功能包括:

  • 模型訓練:LangChain 提供了一套工具,讓開發者可以輕鬆地訓練和微調 LLMs。
  • 模型佈署:LangChain 允許開發者將訓練好的模型佈署到雲端或本地環境中。
  • API 介面:LangChain 提供了一套 API 介面,讓開發者可以輕鬆地將 AI 模型整合到自己的應用程式中。

大語言模型(LLMs)

LLMs 是指可以處理和生成人類語言的巨型神經網路模型。它們通常由數百萬個引陣列成,可以學習到人類語言的複雜模式和結構。LLMs 的應用包括:

  • 自然語言處理:LLMs 可以用於自然語言處理任務,如文字分類別、情感分析和機器翻譯等。
  • 文字生成:LLMs 可以用於生成高品質的文字,如文章、詩歌和故事等。
  • 對話系統:LLMs 可以用於構建對話系統,如聊天機器人和語音助手等。

內容解密:

以下是使用 LangChain 和 LLMs 構建一個簡單的聊天機器人的例子:

import langchain

# 載入預訓練的LLM模型
model = langchain.llms.HuggingFaceHub("transformers/xlnet-base-uncased")

# 定義聊天機器人的對話邏輯
def chatbot(input_text):
    # 將輸入的文字轉換為LLM的輸入格式
    input_ids = model.tokenize(input_text)

    # 使用LLM生成回應
    output_ids = model.generate(input_ids)

    # 將LLM的輸出轉換為文字
    output_text = model.detokenize(output_ids)

    return output_text

# 測試聊天機器人
input_text = "Hello, how are you?"
output_text = chatbot(input_text)
print(output_text)

這個例子展示瞭如何使用 LangChain 和 LLMs 構建一個簡單的聊天機器人。首先,我們載入一個預訓練的 LLM 模型,然後定義聊天機器人的對話邏輯。最後,我們測試聊天機器人,看看它是否可以生成合理的回應。

圖表翻譯:

以下是使用 Plantuml 繪製的聊天機器人流程圖:

這個圖表展示了聊天機器人的流程,從使用者輸入到 LLM 模型生成回應,然後輸出回應給使用者。

##LangChain 框架:打造智慧型應用程式的強大工具

LangChain 是一個能夠幫助您輕鬆打造根據大語言模型(LLMs)的智慧型應用程式的框架。讓我們更深入地瞭解它。

###LangChain 的核心功能

LangChain 是一個能夠讓您打造出能夠理解、思考和與人類進行互動的智慧型應用程式的框架。它提供了以下功能:

  • 上下文感知:LangChain 能夠連線語言模型與各種上下文來源,例如提示指令、少數範例、內容等,以便模型能夠根據這些資訊進行回應。
  • 推理:LangChain 能夠依靠語言模型進行推理,根據提供的上下文決定如何回答問題、採取什麼行動等。

###LangChain 的優點

使用 LangChain 能夠為您帶來以下優點:

  1. 接觸先進語言模型:您可以使用 LangChain 接觸到如 GPT-4、PaLM、Gemini 等先進語言模型,甚至可以使用開源模型如 LLaMA。
  2. 整合私有資料:您可以將這些語言模型與自己的私有資料整合,從而使模型的輸出更能符合您的商業或專案需求。
  3. 自定義化:您不僅限於使用單一語言模型,還可以根據需要混合使用不同的模型,從而實作更高程度的自定義化。

###LangChain 的應用前景

LangChain 的應用前景非常廣闊。您可以使用它來打造各種智慧型應用程式,例如:

  • 聊天機器人:使用 LangChain,您可以打造出能夠與人類進行自然對話的聊天機器人。
  • 內容生成:LangChain 能夠幫助您自動生成高品質的內容,例如文章、郵件等。
  • 語言翻譯:您可以使用 LangChain 來實作語言翻譯功能,從而打破語言障礙。

圖表翻譯:

內容解密:

LangChain 的核心是連線語言模型與各種上下文來源,從而使模型能夠根據這些資訊進行回應。這個過程涉及到語言模型的推理能力,根據提供的上下文決定如何回答問題、採取什麼行動等。透過 LangChain,您可以打造出能夠理解、思考和與人類進行互動的智慧型應用程式。

圖表示意:

建立根據 LangChain 的簡單生成應用

LangChain 提供了開發聊天機器人、生成創意內容和自動化重複任務的工具。看到這項技術被應用於解決現實世界問題和推動各行業創新,真是令人鼓舞。

以下是一個簡單的示例,展示如何使用 LangChain 和 GPT-4 生成根據使用者輸入的創意內容。雖然這個例子看起來很簡單,但我分享它只是為了展示如何輕鬆地呼叫大語言模型(LLM)。我們將在未來的章節中更深入地探討這些主題。

安裝 LangChain 和 OpenAI 模組

!pip install openai==0.28.0
!pip install LangChain==0.1.20

匯入 LangChain 和 OpenAI 函式庫

from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

初始化 OpenAI 模型與 LangChain

LLM_OPENAI_API_KEY = "你的 OpenAI API 金鑰"
llm = OpenAI(api_key=LLM_OPENAI_API_KEY)

定義提示範本以生成故事想法

prompt_template = PromptTemplate(
    input_variables=["user_input"],
    template="根據以下行業輸入生成一個創意產品想法:{user_input}",
)

使用者輸入主題

user_input = "環保家電"

初始化 LLMChain 並生成創意內容

chain = LLMChain(llm=llm, prompt=prompt_template)
response = chain.run(user_input)

內容解密:

在這個例子中,我們使用 LangChain 和 OpenAI 的 GPT-4 模型來生成根據使用者輸入的創意內容。首先,我們安裝必要的模組,然後匯入 LangChain 和 OpenAI 的函式庫。接下來,我們初始化 OpenAI 模型並定義一個提示範本,用於根據使用者輸入生成創意產品想法。最後,我們初始化 LLMChain 並執行它以生成創意內容。

這個過程展示瞭如何使用 LangChain 和大語言模型來生成創意內容。透過調整提示範本和使用者輸入,可以應用這種技術於各種創意領域,如文學、設計和廣告等。

圖表翻譯:

圖表說明:

這個流程圖展示了使用者輸入如何被轉化為創意內容。首先,收集使用者輸入,然後初始化 LLMChain。接下來,執行 LLMChain 來生成創意內容,最後輸出結果。這個過程簡單直觀,展示了 LangChain 和大語言模型如何被應用於創意內容的生成。

創意故事產生:LangChain 與 LLM 的應用

在本文中,我們將探討如何使用 LangChain 和大語言模型(LLM)來生成創意故事。首先,我們需要安裝必要的模組,包括 OpenAI 和 LangChain。請確保下載正確的版本,否則程式碼可能無法正常運作。

安裝模組

!pip install openai langchain

匯入必要類別

from langchain import OpenAI, LLMChain, PromptTemplate

初始化 OpenAI 模型

openai_model = OpenAI(api_key="YOUR_API_KEY")

請注意,您需要替換 YOUR_API_KEY 為您的實際 OpenAI API 金鑰。

定義提示範本

prompt_template = PromptTemplate(
    input_variables=["user_input"],
    template="Generate a creative story idea based on {user_input}."
)

設定使用者輸入

user_input = "eco-friendly home appliances"

建立 LLMChain 例項

llm_chain = LLMChain(llm=openai_model, prompt=prompt_template)

生成創意故事

story_idea = llm_chain.run(user_input=user_input)
print("創意故事想法:", story_idea)

這個例子展示瞭如何使用 LangChain 和 LLM 來生成創意故事。現在,讓我們深入探討什麼是 LLM,以及為什麼它們很重要。

什麼是 LLM?

LLM 是一種人工智慧模型,可以理解和生成類別似人類的文字。它們可以被視為一種「超級閱讀機器人」,可以閱讀和理解大量的文字資料,並生成高品質的文字。

LLM 的能力遠遠超出了簡單的對話。它們可以用於各種應用,例如:

  • 創作故事和內容
  • 總結大型文字和快速高效地壓縮資訊
  • 突破語言和文化障礙

在下一節中,我們將更深入地探討 LLM 的能力和應用。

圖表翻譯:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Streamlit開發環境設定與佈署

package "資料視覺化流程" {
    package "資料準備" {
        component [資料載入] as load
        component [資料清洗] as clean
        component [資料轉換] as transform
    }

    package "圖表類型" {
        component [折線圖 Line] as line
        component [長條圖 Bar] as bar
        component [散佈圖 Scatter] as scatter
        component [熱力圖 Heatmap] as heatmap
    }

    package "美化輸出" {
        component [樣式設定] as style
        component [標籤註解] as label
        component [匯出儲存] as export
    }
}

load --> clean --> transform
transform --> line
transform --> bar
transform --> scatter
transform --> heatmap
line --> style --> export
bar --> label --> export

note right of scatter
  探索變數關係
  發現異常值
end note

@enduml

內容解密:

上述程式碼展示瞭如何使用 LangChain 和 LLM 來生成創意故事。首先,我們需要安裝必要的模組,包括 OpenAI 和 LangChain。然後,我們匯入必要的類別,包括 OpenAILLMChainPromptTemplate。接下來,我們初始化 OpenAI 模型,定義提示範本,設定使用者輸入,建立 LLMChain 例項,並生成創意故事。最終,我們列印預出生成的創意故事。

LLM 的能力遠遠超出了簡單的對話。它們可以用於各種應用,例如創作故事、總結文字和突破語言障礙。在未來,LLM 將在各個領域發揮重要作用,包括文學、教育和商業。

從技術架構視角來看,本文介紹的 Streamlit 開發環境設定,涵蓋了環境變數設定、GitHub 佈署與雲端佈署等關鍵環節。透過環境變數保護 OpenAI 金鑰,有效提升了應用程式的安全性,避免敏感資訊洩露。Streamlit Cloud 的一鍵佈署功能大幅簡化了應用程式上線流程,降低了開發者的佈署門檻。此外,整合 GitHub 有利於版本控制和團隊協作,提升開發效率。然而,Streamlit Cloud 的服務費用以及對特定雲端平臺的依賴性,也可能限制部分開發者的選擇。對於小型專案或個人開發者,GitHub Pages 或其他免費佈署方案或許更具成本效益。展望未來,隨著 Serverless 技術的普及,Streamlit 的佈署方式將更加多元化,開發者可以更靈活地選擇適合自己的佈署策略。對於追求快速迭代和簡易佈署的開發團隊,Streamlit 仍將是一個值得關注的應用程式開發框架。玄貓認為,Streamlit 結合 LangChain 和 LLM,將在快速原型開發和輕量級 AI 應用方面展現更大的潛力。