OpenAI API Node.js / TypeScript 快速上手:npm install openai、example.mjs 第一個請求,到流式、函數調用、聯網搜尋

用 Node.js 調 OpenAI API:設定 OPENAI_API_KEY 環境變量,npm install openai,新建 example.mjs,用 client.responses.create 發出第一個請求。並列出圖片、文件、流式、函數調用、聯網搜尋和錯誤捕獲的 Node 寫法。

NNathaniel bigo··原創首發·AI 輔助撰寫
11 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 OpenAI 官方《Developer quickstart》《SDKs and CLI》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。代碼裏的模型名取自官方當天示例,請以官方模型頁為準。本站(bigolab.com)不是 OpenAI 官方網站。API 是按用量計費的獨立服務,與 ChatGPT 訂閱分開計算,Key 的獲取見 /guides/openai-api-key。

適用於誰

  • 主要寫 JavaScript 或 TypeScript、想在 Node.js 裏調用 OpenAI API 的開發者;
  • 看過 Python 版入門(見 /guides/openai-api-python-quickstart),想要同樣的 Node 版的人;
  • 想知道接下來各項能力在 Node 裏怎麼寫、去哪裏看的人。

結論先說

  1. 官方有 TypeScript 和 JavaScript 的 SDK,適用於 Node.js、Deno、Bun 等服務端 JavaScript 環境,安裝命令是 npm install openai。
  2. 密鑰放環境變量 OPENAI_API_KEY,SDK 會自動讀取,代碼裏不用寫密鑰。
  3. 第一個請求只有幾行:import OpenAI from "openai",new OpenAI(),client.responses.create({ model, input }),結果在 response.output_text。
  4. 官方示例文件叫 example.mjs,用 node example.mjs 運行。
  5. 這個 SDK 是給服務端用的,不要把密鑰放進網頁或手機 App 裏。

Node.js 調通 OpenAI API 的四步:導出密鑰、安裝 SDK、新建 example.mjs、運行

圖:本站根據 OpenAI 官方《Developer quickstart》 整理的示意圖

一、創建並導出 API Key

先在官方控制檯創建 API Key,怎麼創建、怎麼保管見 /guides/openai-api-key。官方建議把 Key 存在安全的地方,然後在終端裏導出成環境變量:

  • macOS 或 Linux:
export OPENAI_API_KEY="your_api_key_here"
  • Windows(官方寫法):
setx OPENAI_API_KEY "your_api_key_here"

官方說明,所有 OpenAI SDK 都會自動讀取系統環境裏的密鑰。需要提醒的是,setx 設定的變量對已經打開的終端窗口不生效,需要新開一個終端再運行;這是 Windows 命令行的一般行為,官方這一頁沒有寫,請你自己確認一下。

二、安裝 SDK,發出第一個請求

新建一個項目目錄,在裏面運行:

npm install openai

然後新建文件 example.mjs,寫入官方示例:

javascript
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra", // 以官方模型頁當天為準
  input: "Write a one-sentence bedtime story about a unicorn.",
});

console.log(response.output_text);

運行:

node example.mjs

幾秒後就能看到模型的輸出。用 Deno 或 Bun 時,官方說用對應的命令。

為什麼是 .mjs?.mjs 文件會被 Node 當作 ES 模組,所以可以直接用 import 和頂層的 await。如果你想用 .js 後綴,需要在 package.json 裏設定模組類型,這是 Node 的通用用法,本文不展開。

請求的結構含義:

  • model:用哪個模型;
  • input:輸入,可以是一個字符串,也可以是消息數組;
  • response.output_text:把輸出裏的文字拼好的快捷屬性。

這個 responses.create 就是 Responses API 的入口,它和舊的 Chat Completions 有什麼區別,見 /guides/openai-responses-api。

三、接下來的能力,Node 裏怎麼寫

官方快速入門頁給了一系列 JavaScript 示例,下面按用途列出,並鏈到本站對應的詳細教學:

1)帶圖片。 在 input 的 content 數組裏加 { type: "input_image", image_url: "...", detail: "auto" }。傳網址、Base64、文件 ID 的區別見 /guides/openai-api-image-input。

2)帶文件(PDF)。 官方示例有三種:input_file 配 file_url;或先 client.files.create({ file: fs.createReadStream("..."), purpose: "user_data" }) 上載,再用 file_id 引用。

3)流式輸出。 請求裏加 stream: true,然後用 for await (const event of stream) 遍歷事件。詳細的事件類型和拼接方法見 /guides/openai-api-streaming。

4)函數調用。 在 tools 裏放一個 type: "function" 的定義,模型會在 response.output 裏返回調用請求。完整的五步流程見 /guides/openai-api-function-calling。

5)聯網搜尋。 官方快速入門頁的寫法是:

javascript
const response = await client.responses.create({
  model: "gpt-6-astra", // 以官方模型頁當天為準
  tools: [{ type: "web_search" }],
  input: "今天有什麼好消息?",
});

console.log(response.output_text);

聯網搜尋工具的計費和限制,以官方工具文檔和價格頁為準。

6)結構化 JSON。 用 Zod 定義結構再 responses.parse,見 /guides/openai-api-structured-outputs。

7)智能體。 官方有 @openai/agents 包,示例裏用 Agent 和 run 搭了一個按語言分流的智能體;入門可看本站的 Agents SDK 教學 /guides/openai-agents-sdk-python-quickstart(Python 版),JS 版以官方文檔為準。

四、出錯時怎麼處理

Node 第一次運行沒成功怎麼辦:找不到 Key、import 報錯、401、429、模型名

圖:本站根據 OpenAI 官方《Developer quickstart》 整理的示意圖,前兩行的處理辦法為本站補充

官方錯誤碼頁給出的 Node 捕獲寫法(類名與官方一致):

javascript
import OpenAI from "openai";

const client = new OpenAI();

try {
  const response = await client.responses.create({
    model: "gpt-6-astra", // 以官方模型頁當天為準
    input: "Hello world",
  });
  console.log(response.output_text);
} catch (error) {
  if (error instanceof OpenAI.APIConnectionError) {
    console.error("連不上 OpenAI API:", error.message);
  } else if (error instanceof OpenAI.RateLimitError) {
    console.error("請求超過限額:", error.message);
  } else if (error instanceof OpenAI.APIError) {
    console.error("API 返回錯誤:", error.status, error.message);
  } else {
    throw error;
  }
}

各狀態碼的含義和處理見 /guides/openai-api-error-codes,限速問題見 /guides/openai-api-429-error。

五、費用和用量

調用 API 按用量計費,和 ChatGPT 訂閱是分開的。想在發請求前先估算輸入多少 token,見 /guides/openai-api-token-count-estimate。價格以官方價格頁當天為準,見 /guides/openai-api-price-official-table;帳單怎麼看見 /guides/openai-api-pricing-billing。

五、讀懂響應對象

response.output_text 只是方便的快捷屬性。完整的響應裏有個 output 數組,裏面是一項項輸出。官方的 Batch 頁給出過一個例子:文字回答是一個 type 為 message 的項,它的 content 裏有 type 為 output_text 的內容;模型要調用函數時,則是 type 為 function_call 的項,官方快速入門裏的函數調用示例就是直接 console.log(response.output[0]) 看這一項。聯網搜尋、圖像生成等工具也會在 output 裏留下自己類型的項。所以當 output_text 是空的,不一定是出錯了,可以先打印 response.output 看看裏面是什麼類型。

六、幾個小建議

  • 把示例裏的字符串換成自己的內容之前,先原樣跑通一次官方示例,確認密鑰、網絡和模型名都沒問題;
  • 密鑰永遠只放在伺服器的環境變量或密鑰管理裏,不要提交到 Git 倉庫;
  • 不確定某個參數怎麼寫時,查官方 API 參考比搜尋舊教學可靠,SDK 的細節以 openai-node 的 GitHub 說明為準(以上三條是本站建議,不是官方原文)。

常見問題

Q:必須用 TypeScript 嗎?

不必須。官方 SDK 的名字是“OpenAI SDK for TypeScript and JavaScript”,兩種都能用,快速入門示例用的是 JavaScript。

Q:可以在瀏覽器裏直接用嗎?

官方快速入門說的是“服務端 JavaScript 環境,如 Node.js、Deno 或 Bun”。瀏覽器裏直接用密鑰會泄露,做瀏覽器應用的典型做法是讓自己的伺服器去調用,需要實時語音的場景見 /guides/openai-api-realtime。

Q:還有別的語言嗎?

官方頁面列出 Python、.NET、Java、Go、Ruby 的 SDK,另有命令行工具 OpenAI CLI,可以到官方 SDKs and CLI 頁面查看。

參考資料

  • OpenAI 官方:Developer quickstart — https://developers.openai.com/api/docs/quickstart
  • OpenAI 官方:SDKs and CLI — https://developers.openai.com/api/docs/libraries
  • OpenAI 官方:Error codes — https://developers.openai.com/api/docs/guides/error-codes

Nathaniel 的更多內容

  1. 01

    Claude Code 在 Windows 上的常見坑:Git Bash 還是 PowerShell、路徑反斜槓、假報錯、WSL 怎麼選

    Windows 上用 Claude Code,裝好之後最容易踩的是:用哪個 shell、路徑寫法不一致、grep 沒匹配就報錯、鉤子沒生效、WSL 和原生怎麼選。本文逐條按官方文檔整理原因和處理辦法,附三段提示詞和一張對照表。

    Claude0
  2. 02

    Claude Code Hooks 實戰「提交前自動跑測試」:PreToolUse 攔住 git commit,測試不過就退出碼 2,附 Windows 注意點

    只寫一個完整例子:讓 Claude Code 每次要執行 git commit 之前,先自動跑項目測試,沒通過就攔下並把輸出交給它修。本文按官方 Hooks 文檔給出腳本、settings.json 配置、測試方法、排錯和 Windows 的兩處坑。

    Claude0
  3. 03

    Claude Code 自定義斜槓命令與 Skill 實戰:從零寫一個「生成更新日誌」的 /release-notes,含傳參、預執行命令和調試

    概念看過了,還是不知道從哪下手?本文按 Claude Code 官方「Extend Claude with skills」寫一個完整可用的例子:用 /release-notes 根據 git 記錄生成更新日誌,覆蓋目錄、frontmatter、傳參、預執行命令、預授權和調試。

    Claude0
  4. 04

    Claude Code 部署網站:先寫 Dockerfile 和 compose 在本機跑通,再按清單上雲伺服器,別讓它直接改線上

    想讓 Claude Code 幫你把網站部署到雲伺服器。本文只寫通用做法,按 Docker 官方文檔講:讓它寫 Dockerfile、.dockerignore 和 compose,在本機跑通,端口和數據卷怎麼設,再給出上線清單,並說明為什麼不要讓它直接動線上機器。

    Claude0
  5. 05

    Claude Code 寫爬蟲與數據清洗:先查 robots.txt 和網站條款,控制頻率,原始數據留一份再清洗

    想讓 Claude Code 寫爬蟲抓數據再清洗。本文先講合規:robots.txt 不是授權也不是安全措施、網站條款要自己讀;再講怎麼用 Python 標準庫檢查規則、小樣本先試、儲存原始數據,以及用 pandas 清洗,附四段提示詞。

    Claude0
  6. 06

    Claude Code 寫 Chrome 擴展:按 Manifest V3 起步,加載未打包的擴展,改了哪些文件要重新加載

    想讓 Claude Code 幫你寫一個 Chrome 擴展。本文按 Chrome 官方擴展文檔講:manifest.json 的最小寫法、在 chrome://extensions 加載未打包的擴展、哪些改動要刷新、怎麼看控制檯和報錯,再給四段提示詞,以及權限要盡量少。

    Claude0

同產品的其他教學

  1. 01

    OpenAI API 的 token 怎麼算、怎麼估算費用:input_tokens 計數接口、tiktoken 和隱藏的輸出 token

    發請求前想知道會用多少 token?官方有 Responses 的 input_tokens 計數接口,能把文字、圖片、文件、工具定義一起算準;本地 tiktoken 只適合純文本。本文給 Python 和 Node 示例,講輸出 token 為什麼可能比看到的多,以及怎麼估算費用。

    ChatGPT0
  2. 02

    OpenAI API 用量層級(usage tiers)與速率限制怎麼提升:Free、Build、Launch、Grow 和後台 Limits 頁

    OpenAI API 的限速不是固定的:官方按累計購買額度把組織分成 Free、Build、Launch、Grow 四個層級,達到門檻自動升級。本文講 RPM、TPM 等指標、怎麼在後台查自己的限額、響應頭怎麼讀、花費上限和限速的區別,以及怎麼讓限額變得夠用。

    ChatGPT0
  3. 03

    OpenAI API 報錯 400、401、403、404、429、500、503 怎麼排查:按官方錯誤碼頁逐個看原因和解決辦法

    調用 OpenAI API 返回 400、401、403、404、429、500、503,各自什麼意思?本文按官方 Error codes 頁,每個狀態碼一節,寫清官方給的原因和解決辦法,並說明 404 在官方頁面裏的位置、429 的六種情形,附 Python 和 Node 的錯誤捕獲寫法。

    ChatGPT0
  4. 04

    OpenAI Realtime API 是什麼:語音到語音會話、WebRTC 與 WebSocket、臨時密鑰和事件機制

    Realtime API 讓模型直接處理音頻,做可以隨時打斷的語音助手。本文按官方文檔講它是什麼、什麼時候用、瀏覽器接入的流程、session 與事件、可用聲音、60 分鐘會話上限、安全標識,以及它和轉寫、文字轉語音的分工。

    ChatGPT0
  5. 05

    OpenAI 圖像生成 API 怎麼用:gpt-image 系列、images.generate 與 Responses 工具、尺寸質素和遮罩編輯

    用 OpenAI API 生成或編輯圖片,有 Image API 和 Responses 裏的 image_generation 工具兩條路。本文按官方文檔給 Python 和 Node 示例,講 gpt-image 模型選擇、尺寸質素格式參數、遮罩編輯、被攔截時的錯誤處理,以及需要組織驗證的提醒。

    ChatGPT0
  6. 06

    OpenAI API 語音轉文字和文字轉語音怎麼調:gpt-transcribe 轉寫、25 MB 限制,以及多個語音模型的停服日期

    用 OpenAI API 把錄音轉成文字,官方現在推薦 gpt-transcribe;文字轉語音的 speech 接口則已被官方標為棄用。本文給 Python 和 Node 示例,講格式、25 MB 限制、prompt 與 keywords,並寫明官方公佈的停服日期。

    ChatGPT0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~