部落格

在聊天中不必貼上金鑰的機密與環境變數

大多數真實的 App 至少需要一個機密:付款服務商的金鑰、電子郵件服務的金鑰,或 AI API 的金鑰。在 Mythex 中,你不需要把這些貼進提示詞裡。當代理人需要其中一個時,它會在聊天中顯示一張 機密請求卡片,你直接在卡片中輸入數值,它就會被儲存為專案機密,讓你的 App 可以讀取——金鑰不會出現在對話內容裡。

功能說明

每個 Mythex 專案都可以儲存 環境變數:具名的數值,例如 STRIPE_SECRET_KEY,你的 App 在執行時會讀取它們,而不是把值寫進程式碼。機密就是那些必須保持私密的環境變數。

同樣的數值可以在兩個地方使用:

  • 沙盒環境:你工作時,代理人在這裡建置並執行你的 App。
  • 已發佈的部署:訪客使用你的 App 的地方。

新增它們的方式有三種:

  1. 機密請求卡片:代理人需要金鑰才能完成某件事時,會在聊天中顯示。
  2. 專案設定 → 機密:你隨時可以在這裡新增或編輯數值。
  3. 聊天中的 /secrets:依你的要求新增或更新機密。

為什麼這樣比較好

把金鑰交給 AI 代理人最直覺的方式,就是把它貼進你的訊息。這樣做可行,但金鑰會變成聊天紀錄的一部分,以純文字的形式和你說過的其他內容放在一起。

機密卡片可以讓數值不進入對話紀錄。你是在卡片的欄位中輸入,而不是在訊息框中,數值會被儲存為專案機密。代理人接著就能在沙盒中使用這個金鑰繼續工作。

把金鑰放在專案設定中,而不是寫進程式碼,還有其他好處:

  • 金鑰不會進入原始碼版本控制。 你的程式碼只用名稱來指稱金鑰,數值存放在專案設定中。
  • 代理人與正在執行的 App 看到的是同一份設定。 不會出現過期的副本。
  • 更換金鑰不必改寫程式碼。 在設定中更改數值即可,程式碼仍然依名稱讀取。

如果你對環境變數還不熟悉,我們的指南 什麼是環境變數與機密 會從頭解釋這個概念。

如何使用機密卡片

  1. 提出需求,例如「使用者註冊時寄出歡迎信」。
  2. 代理人需要金鑰時,聊天中會出現一張機密請求卡片,列出它需要的數值。
  3. 在卡片的欄位中輸入數值,而不是在訊息框中輸入。
  4. 確認。 數值會被儲存為專案機密。
  5. 代理人繼續工作,金鑰已在沙盒中可用。

如何自行新增機密

  1. 開啟 專案設定,然後進入 Secrets(機密)。
  2. 新增像 STRIPE_SECRET_KEY、OPENAI_API_KEY 這樣的金鑰,或你自己服務的憑證。
  3. 請代理人依你所用框架的標準方式讀取它們,例如在 Node App 中從 process.env 讀取。
  4. 如果已發佈的 App 需要新數值,請 重新發佈。

你也可以在聊天中輸入 /secrets,直接在那裡新增或更新機密。

變更已發佈 App 的機密

已發佈的 App 會在發佈時載入機密。新增或變更機密後,請 再次發佈,讓正式部署取得新數值。在那之前,訪客仍然是用舊設定在使用 App。

安全建議

  • 不要把機密提交到儲存庫。 把它們保存在專案設定中。
  • 需要執行特權操作時,優先使用僅限伺服器端的金鑰。 能扣款或寄送郵件的金鑰,應該放在伺服器端執行的程式碼中,而不是訪客瀏覽器會下載的任何內容裡。
  • 如果金鑰曾出現在聊天紀錄中,請更換它。 在服務商後台建立新金鑰、撤銷舊金鑰,然後在專案設定中更新數值。任何曾貼進聊天的金鑰,都應視為已外洩。

限制

  • 卡片只有在你使用時才有幫助。 如果你仍然把金鑰貼進訊息框,它就會留在紀錄中。請在服務商後台更換它,並更新已儲存的數值。
  • 已發佈的 App 需要重新發佈,才能取得新增或變更的機密。
  • 安全地儲存金鑰,並不代表每種用法都安全。 金鑰在哪裡被使用仍然很重要——特權金鑰請保留在 App 的伺服器端。

如果想進一步了解發佈前如何讓 App 更安全,請參考我們的 AI 建置 App 安全檢查清單。

文件中有完整細節:環境變數與機密 以及 聊天中的機密。

Mythex · Pricing · 用 AI 打造任何東西 · 網站與應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費的 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港)