指南

什麼是 SDK?軟體開發套件一次看懂

SDK(軟體開發套件)是公司提供給開發者的現成工具包,讓他們不必從零開始,就能使用該公司的服務或平台。它通常包含針對特定程式語言的程式庫、說明文件與範例,有時還包含測試工具等額外工具。當你的應用程式「使用 Stripe SDK」時,意思是你的程式碼呼叫的是 Stripe 預先寫好的函式,而不是自己手動寫出每一次送到 Stripe API 的請求。

用 AI 開發時,為什麼 SDK 很重要

當你要求 AI 建構工具加入付款、AI 對話、地圖或電子郵件功能時,它通常會安裝該服務提供者的 SDK,並撰寫幾行程式去呼叫它。了解 SDK 是什麼,能幫助你:

  • 了解專案中加入了什麼。 SDK 是一個相依套件,也就是你的應用程式現在所依賴的外部程式碼。
  • 注意它需要的設定。 幾乎每個 SDK 都需要 API 金鑰,而且許多 SDK 分為「伺服器端」與「瀏覽器端」兩種版本,各自對於哪些金鑰可以安全使用有不同的規定。
  • 提出正確的要求。 「在伺服器端使用 Stripe 官方 SDK」比單純說「加入 Stripe」更清楚。
  • 看懂錯誤訊息。 AI 開發的應用程式中,許多錯誤都是因為 SDK 設定錯誤、版本過舊,或被用在錯誤的位置。

日常生活的比喻

想像你要裝一組層架。

  • API 就像大樓的規範:哪些牆可以鎖螺絲、能承受多少重量、水管位置在哪裡。你可以只依照這些規範自己測量、自己鑽孔。
  • SDK 則像同一家公司提供的組合式層架套件:預先裁切好的零件、合適的螺絲、專為他們的牆壁設計的支架,外加一本說明書。

你依然要決定層架放在哪裡、要放什麼東西。套件只是省去你切木板、猜螺絲尺寸的麻煩,也比較不會不小心鑽破水管。

SDK、API、函式庫與框架的比較

這些名詞彼此重疊,讓很多人感到困惑:

名詞是什麼例子
API與服務溝通的規則:接受哪些請求、回傳什麼Stripe 的 REST API,位於 api.stripe.com
SDK服務提供者針對某種語言、用來使用其 API 或平台的工具包,附有說明文件與工具Stripe 官方的 Node.js 函式庫
函式庫(Library)任何加入專案中可重複使用的程式碼一個日期格式化套件
框架(Framework)整個應用程式所建構其中的較大結構React、Next.js、Django

SDK 通常包含一個函式庫,而該函式庫通常會呼叫某個 API。對於網路服務而言,「SDK」和「用戶端函式庫(client library)」常被混用。

有些 SDK 與網路服務完全無關。Apple 和 Google 會發布用來開發 iOS 與 Android 應用程式的 SDK,裡面包括編譯器、模擬器和平台程式碼。概念相同:為該平台開發所需的一切,都放在同一套工具裡。

SDK 替你做了什麼

以下是同一項任務——在付款服務商建立一位客戶——用兩種方式完成。

沒有 SDK 時,你的程式必須自己建構 HTTP 請求:設定網址、把密鑰放進正確的標頭、依 API 要求的格式整理資料、送出、檢查狀態碼、解析回應,並在網路暫時中斷時處理重試。

有 SDK 時,大約只需一行:

const customer = await stripe.customers.create({ email: "lena@example.com" });

在這一行背後,SDK 會處理:

  • 驗證:正確地把你的金鑰附加到每一個請求上
  • 資料格式:把你的資料轉成 API 要求的格式,並把回應轉回物件
  • 錯誤:把狀態碼轉成清楚的錯誤類型,讓你的程式可以捕捉
  • 重試:當請求因暫時性原因失敗時,安全地再試一次(許多官方 SDK 都會這麼做)
  • 型別:在 TypeScript 中,告訴編輯器有哪些欄位存在,讓錯誤在執行前就能被發現

實例:為客服應用程式加入 AI 回覆

你向 AI 建構工具提出要求:「當客戶送出客服工單時,使用 AI 模型產生建議回覆。」

  1. AI 會把模型服務商的官方 SDK 安裝為專案中的套件(在 JavaScript 專案中,來自 npm 註冊中心)。
  2. 你把服務商的 API 金鑰加入專案的機密設定。SDK 會在伺服器端從環境變數中讀取它。
  3. AI 會撰寫一個伺服器路由,把工單內容與簡短指示傳給 SDK,並將建議回覆存入資料庫。
  4. 瀏覽器永遠看不到金鑰,它只會呼叫你自己的伺服器路由。

如果服務商之後變更了 API,通常會發布新版本的 SDK。更新套件——並檢查發行說明中是否有破壞性變更——通常就足夠了。

關鍵名詞

名詞意義
相依套件(Dependency)你的專案所依賴的外部程式碼。SDK 就是其中一種。
套件/套件管理工具可下載的程式碼包,以及安裝它的工具(JavaScript 用 npm,Python 用 pip)。
用戶端函式庫(Client library)讓呼叫某個 API 更容易的程式碼。對網路服務而言,常就是「SDK」的意思。
伺服器端 SDK在你的後端執行,可以安全地使用機密金鑰。
用戶端/瀏覽器端 SDK在使用者的瀏覽器中執行,只能提供公開或「可發布」的金鑰。
版本每個 SDK 發行版本都有編號(例如 4.2.0)。大幅跳號通常代表有破壞性變更。
破壞性變更(Breaking change)需要你修改程式碼才能相容的更新。
變更日誌/發行說明服務商列出每個版本變更內容的文件。

常見的誤解

  • 「SDK 和 API 是同一回事。」 API 是服務的介面;SDK 是建立在它之上的便利層。大多數網路 API 不用 SDK 也能呼叫,只是比較費工。
  • 「SDK 裝好了,整合就完成了。」 你仍然需要服務商的帳號、正確的金鑰,以及能處理失敗情況的程式碼。
  • 「名稱正確的套件就是官方的。」 攻擊者有時會發布長得很像的仿冒套件。請依照服務商的文件確認確切的套件名稱。
  • 「瀏覽器端的 SDK 可以使用我的機密金鑰。」 絕對不行。任何放在瀏覽器程式碼中的東西,訪客都看得到。機密金鑰只能放在伺服器端程式碼中,請參閱如何保護 API 金鑰。
  • 「SDK 永遠不需要更新。」 舊版本會停止接收修復,而且當服務商淘汰舊的 API 版本時,最終會無法運作。

該問你的 AI 建構工具什麼

  • 「使用服務商的官方 SDK,不要用第三方的包裝程式。告訴我你安裝的確切套件名稱與版本。」
  • 「只在伺服器端使用 SDK,並從環境變數讀取金鑰。」
  • 「這個 SDK 的哪些部分會在瀏覽器中執行?它們使用哪些金鑰?」
  • 「如果 SDK 呼叫失敗或逾時會怎樣?請向使用者顯示清楚的訊息,並記錄錯誤。」
  • 「列出這個應用程式所依賴的每一個 SDK 與套件,以及各自的用途。」
  • 「檢查我們的 SDK 是否過時,或是否有已知的安全性問題。」

Mythex 中的 SDK

Mythex 代理程式可以使用你的技術堆疊對應的標準套件管理工具,在專案沙盒中安裝套件,包括服務商的 SDK——只要說明套件名稱以及你想用它做什麼功能即可。請參閱使用 npm 套件。Mythex 並沒有提供預先建置好的整合目錄:你把服務商的金鑰儲存為專案機密,然後請代理程式從伺服器端呼叫該服務,做法如整合任何 API所述。

若想了解 SDK 底層的技術,請參閱什麼是 API。若想了解兩個常見的 SDK 功能,請參閱如何為應用程式加入付款與如何使用 LLM API。

常見問題

用簡單的話說,什麼是 SDK?

SDK(軟體開發套件,software development kit)是一組現成的程式碼、說明文件與工具,由公司提供,讓開發者能輕鬆使用其服務或平台。你不必手動寫出每一次對 API 的請求,只要呼叫 SDK 已經提供的簡單函式即可。

SDK 和 API 有什麼差別?

API 是與某項服務溝通的規則,包括它接受哪些請求、會回傳哪些回應。SDK 則是建立在 API 之上的工具包,通常針對某一種程式語言,替你發出這些請求,並處理驗證、重試和資料格式等細節。

SDK 是免費的嗎?

大多數網路服務的 SDK 都可以免費下載,而且是開放原始碼,但它所連接的服務可能會依使用量收費。使用 Stripe 或 OpenAI 的 SDK 本身不需付費;它所發出的付款或 AI 請求,則由服務提供者計費。

使用 SDK 安全嗎?

一般來說,服務提供者官方的 SDK 是呼叫其服務最安全的方式,因為它們有人持續維護,並處理了安全細節。請從官方套件註冊中心安裝、保持更新,並留意名稱相似的非官方套件。

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 简体中文 繁體中文(香港)