摘要
- 使用環境變數來儲存您的 `api_key`,以防止憑證意外提交到您的儲存庫。
- API 支援 100,000 token 的上下文視窗,但輸出限制為每次請求 16,000 token。
- 速率限制設為每分鐘 300 次請求,您的 Python 客戶端需要具備強大的重試邏輯。
- 透過 SSE 串流回應提供即時 token 生成,對於類似聊天的使用者體驗至關重要。
從 Python 腳本中提取您的密鑰
搜尋結果 "moonshot" "api_key" filetype:py 經常暴露測試檔案中硬編碼的憑證。要保護您的整合,請從腳本的配置層中提取金鑰。切勿將 API 金鑰直接儲存在生產應用程式的原始碼中。硬編碼金鑰會使金鑰對任何擁有儲存庫存取權的人可見,並使金鑰輪替策略複雜化。
相反地,請從環境變數或專用設定檔載入金鑰。這種方式可將敏感資料與您的邏輯分開。當您搜尋現有實作時,您會看到許多簡單的指派範例,例如 api_key = "sk-...". 通過使用 os.environ.get() 或像 python-dotenv. 這可確保您的金鑰在版本控制歷史中保持不可見。它也允許您在無需修改程式碼的情況下更換金鑰。
為何這很重要
安全性不僅僅是加密;更是關於可見性。通過提取您的金鑰,您可以減少應用程式的攻擊面。開發人員經常忽視這個簡單的步驟,導致憑證暴露在公共 GitHub 儲存庫中。為生產環境使用專用服務帳戶金鑰,以限制受攻擊時的影響範圍。
環境變數與硬編碼密鑰
硬編碼的金鑰脆弱且不安全。環境變數提供了一種靈活且安全的方式來管理不同部署環境中的憑證。當您將 Python 腳本部署到伺服器或雲端平台時,環境變數會在執行時注入。這意味著您無需重新構建映像或重新啟動服務即可更改金鑰。
考慮硬編碼金鑰與環境變數的區別。硬編碼金鑰在您的代碼中看起來像這樣: key = "sk-12345". 環境變數看起來像這樣: key = os.getenv("API_KEY"). 後者更簡潔且專業。它還允許您為開發、預備和生產環境使用不同的金鑰,而無需更改程式碼庫。
最佳實踐
- 使用
.env用於本地開發的檔案。 - 透過 CI/CD 管道注入變數以用於生產環境。
- Never commit your
.env檔案以進行版本控制。 - 使用強效且隨機生成的金鑰。
這種關注點分離使您的應用程式更易於維護且更安全。這是一個微小的改變,卻能帶來可靠性和安全性方面的顯著益處。
處理速率限制(300 RPM)的 Python 實作
我們的 API 對每個金鑰實施每分鐘 300 次請求的限制。如果您超過此限制,將收到 429 Too Many Requests 錯誤。為了優雅地處理此情況,請在您的 Python 客戶端中實現指數退避機制。這意味著在每次失敗嘗試後,增加重試之間的等待時間。這可防止您的應用程式在 API 已處於壓力狀態時向其發送大量請求。
速率限制對於維持服務穩定性至關重要。若處理不當,您的應用程式可能會當機,或在重試失敗請求時消耗過多資源。請使用類似 tenacity 或實作自訂的重試迴圈。這些工具允許您指定重試次數、初始延遲時間以及最大延遲時間。
實作範例
當您遇到 429 錯誤時,請暫停幾秒鐘再重試。這讓 API 有時間恢復。您也可以監控您的用量以保持在限制範圍內。某些客戶端提供指示您当前用量的標頭。利用這些資訊動態調整您的請求速率。這可確保即使在高峰時段也能獲得流暢的使用者體驗。
使用 SSE 的串流實作
透過伺服器發送事件(SSE)串流回應允許你顯示正在生成的文本。這通過提供即時回饋來改善使用者體驗。你不需要等待整個回應完成,而是可以顯示到達的 token。這對於長回應或聊天應用程式特別有用。
要在 Python 中實現串流傳輸,請使用 stream=True 參數於您的 API 請求中。遍歷回應區塊並處理每個 token。這使您能夠構建即時聊天介面。串流傳輸也能降低感知延遲,使您的應用程式感覺更快。
技術詳情
每個區塊包含部分文字和元數據。您可以從最後一個區塊提取 token 用量。這讓您可以準確追蹤成本。串流傳輸效率較高,因為它降低了記憶體使用量。您無需將完整回應儲存在記憶體中即可進行處理。這對於長上下文尤其重要。
管理上下文視窗(100k 令牌)
API 支援 100,000 token 的上下文視窗。這允許您傳遞大量資料,例如完整文件或長對話歷史。然而,每次請求的輸出上限為 16,000 token。若您需要更長的回應,可能需要對輸入進行分塊或發出多次請求。
有效管理上下文是效能的關鍵。在發送請求前,請截斷較舊的訊息或摘要長文件。這能確保您的上下文視窗保持在限制範圍內並降低成本。輸入和輸出都會計算令牌。理解這種平衡有助於您最佳化應用程式。
策略
- 在發送之前總結長文件。
- 截斷較舊的對話歷史。
- 對大型數據集使用分塊處理。
- 監控 Token 用量以保持在限制範圍內。
此方法確保您的應用程式保持響應迅速且具成本效益。它還允許您處理需要大量上下文的複雜任務。
無審查回應的錯誤處理
Uncensored 模型可能會產生意外的輸出。實施強大的錯誤處理以管理這些情況。檢查 HTTP 狀態碼並從 API 解析錯誤消息。這使您能夠優雅地處理特定錯誤,例如速率限制或無效輸入。
錯誤處理對於可靠性至關重要。如果不這樣做,您的應用程序可能會崩潰或向用戶顯示令人困惑的錯誤。使用 try-except 塊來捕獲異常並適當處理它們。記錄錯誤以便調試和監控。這有助於您快速識別和修復問題。
常見錯誤
常見錯誤包括 400 Bad Request、401 Unauthorized、429 Too Many Requests 和 500 Internal Server Error。每種錯誤都需要不同的處理策略。例如,401 錯誤可能表示金鑰過期。429 錯誤需要退避重試。500 錯誤可能表示臨時伺服器問題。
成本監控與 Token 會計
追蹤 token 用量以監控成本。API 對每 1M 個輸入 token 收費 $0.15,對每 1M 個輸出 token 收費 $0.50。使用 API 回應中的 token 用量資訊來計算成本。這使您能夠準確地進行預算和費用預測。
費用監控對於財務規劃至關重要。若無監控,您可能會在不知不覺中超支。實施日誌記錄以追蹤 token 用量的變化。利用這些數據識別模式並優化您的應用程式。例如,您可能會發現某些提示詞比其他提示詞消耗更多 token。
最佳化建議
- 在可能的情況下使用較短的提示。
- 總結長輸入內容。
- 監控輸出 token 使用情況。
- 為高使用量設置警報。
此方法確保您在保持效能的同時保持在預算內。它也有助於您識別可改進的領域。
使用 $0.50 試用金鑰進行測試
每個新帳戶可獲得 $0.50 的試用額度,有效期為 7 天。使用此額度測試您的整合情況,再決定是否進行較大額度的充值。這讓您可以驗證程式碼是否運作正常,並估算您使用情境的成本。
測試對於品質保證至關重要。使用試用金鑰讓您的應用程式充分運行。測試不同的提示、模型和參數。這有助於您在上線之前識別任何問題。試用積分是一個很好的開始方式,且沒有財務風險。
入門指南
註冊帳戶以獲得您的試用金鑰。使用此金鑰發送第一個 API 請求。監控您的 token 使用量,以確保額度不會耗盡。這將讓您獲得對 API 效能和定價的真實體驗。