Bỏ qua đến nội dung chính

Your first API call

📖 Nội dung bài học

Video

Lời gọi API đầu tiên của bạn

Chào hỏi Claude có thể làm bạn cảm thấy ấm lòng, nhưng nó không thực sự hữu ích. Trong bài học này, chúng ta sẽ gửi cho Claude một thứ gì đó thực tế và nhận lại thông tin chi tiết có cấu trúc — chỉ với chưa đầy 20 dòng code.

Chuẩn bị

Đầu tiên, lấy một API key từ platform.claude.com. Bạn cần mua một ít tín dụng trước.

Hộp thoại Claude Console hiển thị một API key mới tạo với nút Copy key và cảnh báo rằng key sẽ không hiển thị lại

Lấy API key và lưu nó vào tệp .env.local để nó không bị lộ trong hệ thống quản lý phiên bản của bạn. Việc mã hóa cứng key trong các tệp mã nguồn là cách chúng bị lộ trên GitHub — hãy lưu chúng trong các tệp môi trường thay thế.

Tiếp theo, cài đặt SDK:

npm install @anthropic-ai/sdk

Cấu trúc của một request

Mọi lời gọi API đều đi qua hàm messages.create. Bạn chỉ định ba thứ:

  • Một model — model Claude nào xử lý yêu cầu
  • Một giới hạn token tối đa — giới hạn độ dài của phản hồi
  • Một danh sách các messages — các đối tượng có vai trò user hoặc assistant, được cấu trúc tương tự như cách bạn trò chuyện với Claude ở nơi khác

Đây là hình thức cơ bản nhất của nó:

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

const client = new Anthropic();

const msg = await client.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 1024,
  messages: [{
    role: "user",
    content: "Hello, Claude",
  }],
});

Một ví dụ thực tế: xem xét code bị lỗi

Hãy đưa cho Claude một thứ thú vị hơn "xin chào". Chúng ta sẽ chỉ cho nó một đoạn code bị lỗi và yêu cầu xem xét. Đây là toàn bộ — một tệp, khoảng 20 dòng code:

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-opus-4-8",
  max_tokens: 1024,
  system: "Bạn là một người đánh giá code kỳ cựu, nói ngắn gọn. Đưa ra phản hồi trong một đoạn văn.",
  messages: [
    { role: "user", content: `Review this code:\n${buggyCode}` },
  ],
});

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

Hai điểm cần lưu ý ở đây:

  1. system prompt là nơi bạn định hình persona. Tôi muốn một người đánh giá kỳ cựu, nói ngắn gọn, không phải người nói nhiều — vì vậy tôi chỉ cần nói điều đó.
  2. message.content trong phản hồi là một mảng các khối (blocks), không phải một chuỗi. Đối với một phản hồi văn bản cơ bản, thường chỉ có một khối loại text, nhưng Claude có thể trả về nhiều khối — văn bản, lời gọi công cụ (tool calls), suy nghĩ — vì vậy chúng ta luôn lặp qua và kiểm tra loại của từng khối.

Chạy nó, và Claude sẽ phát hiện ra hàm add đang thực hiện phép trừ và cho bạn biết trong một đoạn văn. Chỉ vậy thôi. Đó là toàn bộ lời gọi API.

Kết quả đầu cuối (terminal output) khi chạy script: Claude phản hồi rằng hàm có tên là add nhưng lại sử dụng phép trừ, và đề xuất thay đổi return a - b thành return a + b

Từ script đến sản phẩm

Trong một sản phẩm thực tế, cấu trúc messages.create tương tự này là động cơ đằng sau những thứ như một endpoint tóm tắt. Lấy bản ghi cuộc họp ra khỏi cơ sở dữ liệu, đưa cho Claude với system prompt nói "trích xuất thông tin chi tiết và rủi ro", lưu kết quả trở lại vào hàng đó, và trả về cho giao diện người dùng. Đó là cùng một lời gọi — chỉ được gói gọn trong một route handler.

Bảng điều khiển cuộc họp trong một ứng dụng web demo liệt kê các cuộc họp dự án đã ghi âm, mỗi cuộc họp có bản xem trước bản ghi và nút Generate summary được cung cấp bởi cùng một lời gọi API

Tóm tắt

  • Lời gọi API đầu tiên của bạn là hàm messages.create với model, giới hạn token, và messages.
  • Lưu API key của bạn vào tệp .env.local để tránh bị lộ trong hệ thống quản lý phiên bản.
  • Thêm system prompt để định hình hành vi của Claude.
  • content của phản hồi là một mảng các khối — lặp qua và kiểm tra type của từng khối.
  • Từ đây, mọi thứ đều được xây dựng dựa trên mẫu này.

🔁 Bài học liên quan

📚 Nguồn & ghi nhận

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?