SDK 到底是什麼?寫給完全不懂的你

Published December 3, 2025 by 徐培鈞
Web API

學程式常常會聽到「API」和「SDK」,這篇文章用最直白的方式講清楚這兩個東西。

先從 API 開始,懂了 API 之後,SDK 就很好理解了。

先搞懂 API

什麼是 API?

API 就是一個網址,你對它發送請求,它會回傳資料給你。

實際例子

假設你想知道台北現在幾度,中央氣象署有提供一個網址:

https://opendata.cwa.gov.tw/api/v1/rest/datastore/O-A0003-001

你對這個網址發送請求,它就會回傳天氣資料:

{
  "location": "台北",
  "temperature": 28,
  "humidity": 75
}

這個網址就是 API。

再一個例子

你想讓 ChatGPT 幫你回答問題,OpenAI 有提供一個網址:

https://api.openai.com/v1/chat/completions

你把問題送到這個網址,它會回傳 AI 的回答。

API 就這麼簡單

API 做的事收到請求後,回傳資料給你

就是這樣,沒有更複雜的東西了。

但是直接用 API 有點麻煩

你要自己處理很多事情,我們一步一步來看:

第一步:要自己組合正確的網址

const url = 'https://api.openai.com/v1/chat/completions';

這個網址要去 OpenAI 的文件裡查,打錯一個字就不會動。不同功能的網址也不一樣,例如:

  • 聊天功能:/v1/chat/completions
  • 產生圖片:/v1/images/generations
  • 語音轉文字:/v1/audio/transcriptions

你要自己記得每個功能對應哪個網址。

第二步:要自己設定請求的格式

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk-xxxxxxxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'gpt-4',
    messages: [{ role: 'user', content: '你好' }]
  })
});

這裡面有很多細節:

說明告訴 API 你要送資料過去
寫錯會怎樣用錯方法,API 會拒絕
說明你的金鑰,證明你有權限使用
寫錯會怎樣沒帶或寫錯,API 會回傳 401 錯誤
說明告訴 API 你送的資料格式是 JSON
寫錯會怎樣沒寫的話,API 可能看不懂你的資料
說明你實際要送的內容
寫錯會怎樣格式錯誤,API 會回傳 400 錯誤

這些東西都要照 OpenAI 文件規定的格式寫,少一個或寫錯一個就不會動。

第三步:要自己把回傳的資料解析出來

API 回傳的資料長這樣(簡化版):

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1677858242,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!有什麼我可以幫你的嗎?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 15,
    "total_tokens": 25
  }
}

你要的答案藏在 choices[0].message.content 裡面,所以要這樣寫才能拿到:

const data = await response.json();
const answer = data.choices[0].message.content;
// answer = "你好!有什麼我可以幫你的嗎?"

這個結構也是要去查文件才知道,而且不同 API 回傳的結構都不一樣。

第四步:要自己處理各種錯誤

API 可能會回傳各種錯誤:

if (response.status === 400) {
  console.log('你送的資料格式有問題');
}
if (response.status === 401) {
  console.log('金鑰錯誤或過期');
}
if (response.status === 429) {
  console.log('請求太頻繁,被限制了');
}
if (response.status === 500) {
  console.log('OpenAI 那邊出問題了');
}

每種錯誤要怎麼處理,都要自己寫。

總結:直接用 API 的麻煩

有多麻煩要查文件,容易打錯
有多麻煩一堆參數,少一個就不會動
有多麻煩結構複雜,要一層一層找
有多麻煩錯誤種類很多,每種都要處理

每次要用 API,都要寫這麼多程式碼。如果你要用 10 個不同的 API 功能,這些程式碼就要重複寫 10 次。

這就是為什麼需要 SDK——讓你不用處理這些麻煩事。

再來認識 SDK

什麼是 SDK?

SDK 就是一包程式碼,你下載安裝後,裡面的功能可以直接用。

別人已經把「怎麼發請求」、「怎麼解析資料」、「怎麼處理錯誤」都寫好了,你只要呼叫就好。

用 SDK 的話

同樣是呼叫 OpenAI,用 SDK 只要這樣寫:

const OpenAI = require('openai');
const client = new OpenAI({ apiKey: '你的金鑰' });

const response = await client.chat.completions.create({
  model: 'gpt-4',
  messages: [{ role: 'user', content: '你好' }]
});

console.log(response.choices[0].message.content);

程式碼變少了,也更好讀。

直接對比

程式碼量
要自己處理的事網址組合、請求格式、資料解析、錯誤處理
程式碼量
要自己處理的事幾乎不用,SDK 都包好了

SDK 裡面有什麼?

現成的程式碼

別人寫好的功能,你直接呼叫。例如 client.chat.completions.create() 這個功能,背後幫你處理了一堆事情。

文件

告訴你有哪些功能可以用、參數怎麼填。

範例程式碼

讓你照著改就能用。

錯誤處理

幫你把常見的錯誤情況都處理好了。

為什麼要用 SDK?

程式碼變少

原本要寫 20 行,現在只要 5 行。

不容易出錯

網址打錯、格式錯誤這些問題,SDK 都幫你避開了。

有人維護

API 更新的時候,SDK 團隊會跟著更新,你只要升級版本就好。

常見的 SDK

手機 App 開發

用途開發 iPhone App
用途開發 Android App

常見功能

常用 SDKGoogle Maps SDK
常用 SDKFacebook SDK、LINE SDK
常用 SDKStripe SDK、綠界 SDK
常用 SDKOpenAI SDK
常用 SDKFirebase SDK

遊戲開發

用途手機遊戲開發
用途3A 遊戲開發

等等,那我直接用 ChatGPT 網頁不就好了?

這是很多人會有的疑問:既然可以直接開 ChatGPT 網頁聊天,為什麼還要用 API 或 SDK?

差別在於:誰在操作

誰在操作你(人)
怎麼用手動打字、手動複製結果
誰在操作你的程式
怎麼用程式自動發送、自動處理結果

實際例子

假設你開了一家網拍,想用 AI 自動回覆客戶的問題。

用 ChatGPT 網頁:

  1. 客戶問問題
  2. 你打開 ChatGPT 網頁
  3. 你手動把問題貼進去
  4. 等 AI 回答
  5. 你手動把答案複製回去給客戶

一天 100 個客戶問問題,你就要重複這個動作 100 次。

用 API / SDK:

  1. 客戶問問題
  2. 你的程式自動把問題送給 OpenAI
  3. 程式自動收到回答
  4. 程式自動回覆給客戶

全部自動化,你不用做任何事。

還有什麼是網頁做不到的?

ChatGPT 網頁❌ 做不到
API / SDK✅ 可以
ChatGPT 網頁❌ 要手動貼 1000 次
API / SDK✅ 程式自動跑
ChatGPT 網頁❌ 有限
API / SDK✅ 可以設定
ChatGPT 網頁❌ 要手動複製
API / SDK✅ 程式自動存
ChatGPT 網頁❌ 做不到
API / SDK✅ 可以

所以三者的關係是

ChatGPT 網頁:給人用的,手動操作,最簡單但最沒彈性
      
    API:給程式用的,可以自動化,但程式碼要自己寫很多
      
    SDK:也是給程式用的,但幫你把麻煩事包好了,程式碼變少

簡單說:

  • 聊天網頁 → 人操作,一次一個
  • API / SDK → 程式操作,可以自動化、批次處理、整合到你的產品

怎麼安裝和使用 SDK?

以 OpenAI SDK 為例:

步驟一:安裝

在終端機輸入:

npm install openai

這樣就裝好了。

步驟二:在程式碼裡引入

const OpenAI = require('openai');

步驟三:初始化

const client = new OpenAI({ apiKey: '你的金鑰' });

步驟四:使用功能

const response = await client.chat.completions.create({
  model: 'gpt-4',
  messages: [{ role: 'user', content: '你好' }]
});

大部分 SDK 都是這個流程:安裝 → 引入 → 初始化 → 使用。

注意事項

金鑰不要外洩

SDK 通常需要一組金鑰來驗證身份。這組金鑰不能讓別人看到。

錯誤做法:

// 直接寫在程式碼裡,上傳到 GitHub 會被看到
const client = new OpenAI({ apiKey: 'sk-1234567890' });

正確做法:

// 用環境變數
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

注意收費

很多 SDK 背後的 API 是要收費的。用之前先查價格,避免收到意外帳單。

選有在更新的 SDK

看一下 GitHub 上最後更新時間,太久沒更新的可能有問題。

常見問題

Q:什麼時候直接用 API,什麼時候用 SDK?

A:有 SDK 就用 SDK。除非 SDK 不支援你用的程式語言,或你有很特殊的需求。

Q:SDK 會讓程式變慢嗎?

A:影響很小,不用擔心。

Q:SDK 可以用在商業專案嗎?

A:大部分可以,但要看授權條款。

總結

白話解釋一個網址,你發請求過去,它回傳資料給你
白話解釋一包程式碼,下載後可以直接用裡面的功能

兩者的關係:

SDK 裡面已經把「怎麼呼叫 API」這件事包好了,你不用自己處理那些麻煩的細節。

下一步

  1. 挑一個 SDK(例如 OpenAI SDK、Firebase SDK)
  2. 照著官方文件的「快速入門」做一遍
  3. 實際跑過一次,就會懂了