OpenAI API 入門:從註冊到第一支程式

上一篇比較了各種 AI 開發工具,這篇開始自己把 AI 接進自己的程式。我們會用 OpenAI API(也就是 ChatGPT 背後的服務)當範例,學會「用程式碼呼叫大模型」這個核心技能。學會之後,換成 Claude、Gemini 或其他 API 的概念幾乎完全相通。

核心概念:你在叫賣什麼?

呼叫 LLM 本質上就是發一個 HTTP 請求,把對話送出去,再把回應拿回來。你付錢買的是 token(模型處理的文字單位),不是次數。

幾個必懂名詞:

  • API Key:你的身份憑證,像密碼一樣,絕對不能洩露或提交到 Git
  • Endpoint(端點):發送請求的網址,例如 https://api.openai.com/v1/chat/completions
  • Model(模型):指定要用哪個模型,例如 gpt-4o-mini(便宜快)或頂規模型。
  • Token:計費單位。大約 1 個 token ≈ 中文 1~2 字、英文約 4 字母。回應會比輸入更長,成本要往高估。

第一步:取得 API Key

  1. 前往 OpenAI 官網註冊帳號並登入。
  2. API Keys 頁面生成一組 key。
  3. 設定計費方式(付費方案)。
  4. 立刻把它當成密碼管理,之後會放環境變數裡,不寫死在程式碼中。

第二步:最小可行範例(Python)

安裝套件:

1
pip install openai

最簡單的對話呼叫:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是一位友善的程式老師。"},
{"role": "user", "content": "用一句話解釋什麼是 API。"}
],
)

print(response.choices[0].message.content)

重點說明:

  • messages 裡每則訊息有 rolesystem(設定行為)、user(使用者問題)、assistant(AI 回應)。多輪對話就是把歷史都丟回去。
  • response.choices[0].message.content 就是模型回的文字。

第三步:最小可行範例(Java)

你的部落格有不少 Java 內容,這裡給一個用原生 HTTP 的範例(不需額外套件):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class OpenAiExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();

String body = Json.createObjectBuilder()
.add("model", "gpt-4o-mini")
.add("messages", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("role", "user")
.add("content", "用一句話解釋什麼是 token。"))
.build())
.build().toString();

HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.openai.com/v1/chat/completions"))
.header("Authorization", "Bearer " + System.getenv("OPENAI_API_KEY"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JsonObject json = JsonParser.parseString(response.body()).getAsJsonObject();
System.out.println(json.getAsJsonArray("choices").get(0)
.getAsJsonObject().getAsJsonObject("message").get("content").getAsString());
}
}

(這裡假設你已引入 Gson 用於解析 JSON。)

三個你會馬上遇到的設定

  • temperature:控制隨機性。01寫程式、要事實 → 調低(如 0.2);創意寫作 → 調高(如 0.8)。
  • max_tokens:限制回應最長長度,控成本用。
  • 上下文管理:對話輪數多了,token 會累積到超出「上下文窗口」。實務上要摘要舊對話或只傳最近幾輪。

計費:大概會花多少?

以便宜的 gpt-4o-mini 為例,價格非常低(每百萬 token 約幾美元等級),但請記住:

  • 輸入與輸出的 price 不同,通常輸出較貴。
  • 長文件、多輪對話會快速累積。
  • 建議先在程式裡印出 token 數,掌握成本再上線。

安全紅線(務必遵守)

  1. API Key 放環境變數,不要硬編碼。
  2. 加入 .gitignore,避免 key 被推到 GitHub。
  3. 後端呼叫,別在前端暴露 key:瀏覽器/手機 App 直接調 API 會讓 key 被人扒走。正確做法是你的伺服器當中繼。
  4. 設定花費上限(quota),避免意外刷爆帳單。

小結

  • 呼叫 LLM = 發 HTTP 請求帶上 API Key,按 token 計費。
  • Python、Java 的最小範例都已實作通過,關鍵是 messages 的 role 設計。
  • temperature 控制創造性,用 max_tokens 控成本。
  • Key 絕不放前端、不進 Git,這是安全底線。

學會 OpenAI API 後,你已經能接任何一家大模型。下一篇更實用:RAG(檢索增強生成)——讓 AI 讀你自己的私人文件。


《AI 新時代》系列第 05 篇。上一篇:AI Coding 工具比較 · 下一篇預告:RAG