載入中

您的第一次 API 呼叫

第 2 課5 分鐘
載入中

您的第一次 API 呼叫

跟 Claude 打招呼或許能讓您感到溫暖,但這並沒有什麼實際用處。在這堂課中,我們會傳送給 Claude 一些真正的內容,並取得結構化的洞察——而且程式碼不到 20 行。

做好準備

首先,從 platform.claude.com 取得一把 API 金鑰。在您第一次呼叫 API 之前,請先到 Claude Console 的帳務頁面確認您有足夠的額度。如果沒有,請在那裡加值額度。

Claude Console 對話框顯示新建立的 API 金鑰,有一個複製金鑰按鈕,並警告該金鑰之後將無法再次檢視

取得 API 金鑰後,將它儲存在 .env.local 檔案中,讓它遠離您的版本控制系統。把金鑰硬編碼在原始碼檔案中,正是它們最終外洩到 GitHub 的原因——請改為把它們放在環境檔案中。

接著,安裝 SDK:

npm install @anthropic-ai/sdk

請求的結構剖析

每一次 API 呼叫都會透過 messages.create 函式進行。您需要指定三件事:

  • 一個模型(model)——由哪個 Claude 模型來處理這個請求
  • 一個最大 token 數限制(max tokens limit)——限制回應最長可以有多長
  • 一份訊息(messages)清單——每個物件具有 user 或 assistant 角色,結構上類似於您在其他地方與 Claude 對話的方式

以下是它最基本形式的樣子:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const msg = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 2048,
  messages: [{
    role: "user",
    content: "Hello, Claude",
  }],
});

一個實際範例:審查有問題的程式碼

讓我們給 Claude 一些比「hello」更有意思的東西。我們會讓它看一段有問題的程式碼,並請它做審查。以下就是完整內容——一個檔案,約 20 行程式碼:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const buggyCode = `
function add(a, b) {
  return a - b;
}
`;

const response = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 2048,
  system: "You are a terse senior code reviewer. Give feedback in one paragraph.",
  messages: [
    { role: "user", content: `Review this code:\n${buggyCode}` },
  ],
});

for (const block of response.content) {
  if (block.type === "text") {
    console.log(block.text);
  }
}

這裡有兩件事值得注意:

  1. system 提示是您塑造角色個性的地方。我想要一位簡潔扼要的資深審查者,而不是一個話很多的角色——所以我就這樣告訴它。
  2. 回應中的 message.content 是一個區塊陣列(array of blocks),而不是字串。對於基本的文字回應,通常只會有一個類型為 text 的區塊,但 Claude 可以回傳多個區塊——文字、工具呼叫、思考——所以我們一律要迴圈遍歷並檢查其類型。

執行它,Claude 會發現 add 其實是在做減法,並用一段文字告訴您。就這樣。這就是整個 API 呼叫。

執行該腳本的終端機輸出:Claude 回應說該函式名為 add,但實際上使用了減法,並建議將 return a - b 改成 return a + b

從腳本到產品

在實際產品中,同樣的 messages.create 結構,正是像摘要端點(summarize endpoint)這類功能背後的引擎。從資料庫中取出一份會議逐字稿,連同一個寫著「擷取洞察與風險」的系統提示一起交給 Claude,把結果存回該筆資料列,再回傳給使用者介面。這就是同一個呼叫——只是被包裝在一個路由處理程式(route handler)裡而已。

一個展示用網頁應用程式中的會議儀表板,列出已錄製的專案會議,每一筆都有逐字稿預覽,以及一個由同一個 API 呼叫所驅動的「產生摘要」按鈕

重點回顧

  • 您的第一次 API 呼叫,就是一個具有模型(model)、token 數限制,以及訊息(messages)的 messages.create 函式。
  • 將您的 API 金鑰儲存在 .env.local 檔案中,讓它遠離版本控制系統。
  • 加入一個系統提示來塑造 Claude 的行為。
  • 回應中的 content 是一個區塊陣列——請迴圈遍歷並檢查每個區塊的 type。
  • 從這裡開始,一切都是建立在這個模式之上的。