在測試 OpenAI 或 Line Notify 等 API 功能時都需要註冊申請金鑰 (API key) 或權杖 (token), 通常在測試時為了方便會直接賦值給一個字串變數例如 OPENAI_API_KEY 或 LINE_NITIFY_TOKEN 來使用, 但這種做法常常在將程式分享到 GitHub 或社群時一時忘記刪除真實金鑰或權杖而洩漏, 尤其是 GitHub 有版本控制功能, 即使刪除或更新仍會保留舊資料.
解決辦法是使用第三方模組例如 dotenv 將金鑰或權杖儲存在系統變數裡, 利用 os 模組的 getenv() 來取得 API Key 或 token (在 Colab 中統稱為密鑰 Secret). 在 Colab 中除了這個方法外還提供了 Secrets 頁面來儲存金鑰或權杖, 在程式中則可利用 google.colab 的 userdata 模組來取得這些機敏資料.
本系列相關文章參考 :
1. 設定密鑰 (Secret) :
下面以設定 OpenAI API key 為例說明如何在 Colab 上設定密鑰 :
首先在 Colab 新增一個 ipynb 筆記本後按左方工具列上的鑰匙圖示開啟密鑰設定頁面 :
按 "+ 新增密鑰" 鈕 :
依序勾選開啟筆記本存取權, 輸入密鑰名稱 (此處為 OPENAI_API_KEY), 貼上 OpenAI API key, 然後按右上角的 X 關閉設定頁面 (隨時可按鑰匙圖示進來按眼睛圖示右邊的複製鈕將密鑰複製起來) :
2. 取用密鑰 (Secret) :
在上面設定密鑰頁面底下就有取用密鑰的語法, 只要呼叫 google.colab.userdata 模組的 get() 函式並傳入密鑰名稱就會傳回密鑰內容 :
from google.colab import userdata
由於上面密鑰設定中設定密鑰名稱為 OPENAI_API_KEY, 因此要傳入此字串 :
openai_api_key=userdata.get("OPENAI_API_KEY")
呼叫 OpenAI API 之前要先安裝 openai 套件 :
!pip install openai
參考 :
接著用 userdata.get() 讀取密鑰 :
OPENAI_API_KEY=userdata.get('OPENAI_API_KEY')
雖然很犯規 (用 Secret 儲存就是要掩藏密鑰啊) 但還是印出來確認看看 :
print(OPENAI_API_KEY)
密鑰內容正確, 呼叫 OpenAI 類別的建構子 OpenAI() 並傳入密鑰以建立 OpenAI 物件 :
client=OpenAI(api_key=OPENAI_API_KEY) # 建立 OpenAI 物件
呼叫 OpenAI API (chat.completion.create) :
chat_completion=client.chat.completions.create(
messages=[
{"role": "user",
"content": "請簡單說明何謂量子糾纏?",
}],
model="gpt-4o-mini",
)
取得回應內容 :
print(chat_completion.choices[0].message.content)
結果如下 :
量子糾纏是一種量子力學現象,當兩個或多個粒子在某種方式上互相聯繫時,這些粒子的量子狀態將不再獨立,而是形成一種整體的狀態。即使這些粒子相隔很遠,對其中一個粒子的測量會立即影響到另一個粒子的狀態。這意味著它們之間存在著某種超越經典物理的「瞬時」聯繫。
量子糾纏的特性挑戰了我們對物質和信息傳遞的傳統理解,並且在量子通信和量子計算等領域具有重要的應用潛力。
我們可以將呼叫 OpenAI API 的程序寫成一個函式 ask_gpt() :
def ask_gpt(prompt, api_key, model='gpt-4o-mini'):
client=OpenAI(api_key=api_key)
chat_completion=client.chat.completions.create(
messages=[
{"role": "user",
"content": prompt,
}],
model=model,
)
return chat_completion.choices[0].message.content
結果如下 :
量子糾纏是一種量子力學現象,當兩個或多個量子系統(例如,粒子)相互作用並形成一個整體時,它們的狀態會變得互相關聯,即使這些粒子相隔很遠。這意味著對一個粒子的測量會立即影響到另一個粒子的狀態,不管它們之間的距離有多遠。
舉例來說,如果兩個糾纏的粒子被創造出來,並且其中一個被測量為某種特定的狀態,那麼另一個粒子的狀態也會瞬間變成與之相對應的狀態。這種現象挑戰了我們對距離和獨立性的直觀理解,並引發了許多關於量子力學和宇宙基本性質的討論與研究。量子糾纏在量子計算、量子通訊等技術中具有重要的應用潛力。
除了 OpenAI API key 外, 任何其他不想因為不小心洩漏的密鑰都可以放在 Secret 中, 例如要在 Colab 筆記本上發出 LINE Notify 推播訊息, 可以將其權杖 (token) 存入 Secret 中, 然後透過 userdata.get() 取用.
沒有留言:
張貼留言