Hướng dẫn

SDK là gì? Bộ công cụ phát triển phần mềm giải thích dễ hiểu

SDK (software development kit) là bộ công cụ có sẵn mà một công ty cung cấp cho lập trình viên để họ sử dụng dịch vụ hoặc nền tảng của mình mà không phải tự xây dựng mọi thứ từ đầu. Bộ này thường gồm một thư viện code cho một ngôn ngữ lập trình cụ thể, tài liệu và ví dụ, đôi khi còn có các công cụ phụ như tiện ích kiểm thử. Khi ứng dụng của bạn "dùng SDK của Stripe", nghĩa là code của bạn gọi các hàm có sẵn của Stripe thay vì tự viết từng yêu cầu gửi tới API của Stripe.

Vì sao SDK quan trọng khi bạn xây dựng bằng AI

Khi bạn yêu cầu một công cụ xây dựng bằng AI thêm thanh toán, trò chuyện AI, bản đồ hay email, nó thường sẽ cài SDK của nhà cung cấp đó và viết vài dòng code gọi đến SDK. Hiểu SDK là gì sẽ giúp bạn:

  • Hiểu những gì đang được thêm vào dự án. SDK là một phụ thuộc, tức là đoạn code bên ngoài mà ứng dụng của bạn giờ đây phụ thuộc vào.
  • Nhận ra phần cấu hình cần thiết. Hầu hết SDK đều cần một API key, và nhiều SDK có phiên bản "server" và phiên bản "trình duyệt" với quy tắc khác nhau về việc khóa nào được phép dùng an toàn.
  • Yêu cầu đúng điều cần thiết. "Dùng SDK chính thức của Stripe trên server" là hướng dẫn rõ ràng hơn so với "thêm Stripe".
  • Đọc lỗi. Nhiều lỗi trong ứng dụng xây bằng AI đến từ việc SDK bị cấu hình sai, đã lỗi thời hoặc được dùng sai vị trí.

Một ví dụ đời thường

Hãy tưởng tượng bạn muốn treo kệ lên tường.

  • API giống như các quy định của tòa nhà: tường nào được bắt vít, chịu được tải bao nhiêu, đường ống nằm ở đâu. Bạn có thể chỉ làm theo các quy định đó, tự đo, tự khoan mọi thứ.
  • SDK giống như bộ kệ lắp ráp sẵn do chính hãng làm ra bức tường đó: các chi tiết đã cắt sẵn, đúng loại vít, một thanh giá đỡ vừa khít với tường của họ và một cuốn hướng dẫn.

Bạn vẫn quyết định kệ đặt ở đâu và đặt gì lên đó. Bộ kệ chỉ giúp bạn khỏi phải cưa gỗ và đoán kích cỡ vít, và ít có khả năng làm thủng đường ống nước hơn.

SDK so với API, thư viện và framework

Các thuật ngữ này chồng lấn lên nhau, khiến nhiều người bối rối:

Thuật ngữĐó là gìVí dụ
APIQuy tắc giao tiếp với một dịch vụ: nó nhận những yêu cầu nào và trả về gìREST API của Stripe tại api.stripe.com
SDKBộ công cụ của nhà cung cấp để dùng API hoặc nền tảng của họ bằng một ngôn ngữ cụ thể, có kèm tài liệu và công cụThư viện Node.js chính thức của Stripe
Library (thư viện)Bất kỳ đoạn code tái sử dụng nào bạn thêm vào dự ánMột gói định dạng ngày tháng
Framework (khung)Cấu trúc lớn hơn mà toàn bộ ứng dụng được xây dựng bên trongReact, Next.js, Django

Một SDK thường chứa một thư viện, và thư viện đó thường gọi một API. Với dịch vụ web, "SDK" và "client library" thường được dùng thay thế cho nhau.

Một số SDK không liên quan đến dịch vụ web. Apple và Google phát hành SDK để xây dựng ứng dụng iOS và Android, bao gồm trình biên dịch, trình giả lập và mã nền tảng. Ý tưởng vẫn như vậy: mọi thứ bạn cần để xây dựng cho nền tảng của họ, gom trong một bộ công cụ.

SDK làm gì cho bạn

Đây là cùng một việc, tạo một khách hàng tại nhà cung cấp thanh toán, được thực hiện theo hai cách.

Không dùng SDK, code của bạn phải tự tạo yêu cầu HTTP: thiết lập URL, đặt secret key vào đúng header, định dạng dữ liệu theo cách API mong đợi, gửi đi, kiểm tra mã trạng thái, phân tích phản hồi và thử lại nếu đường truyền bị chập chờn.

Dùng SDK, việc này gần như chỉ còn một dòng:

const customer = await stripe.customers.create({ email: "lena@example.com" });

Đằng sau dòng đó, SDK xử lý:

  • Xác thực: đính kèm khóa của bạn một cách đúng đắn vào mọi yêu cầu
  • Định dạng dữ liệu: chuyển dữ liệu của bạn thành dạng API yêu cầu, và chuyển phản hồi trở lại thành đối tượng
  • Lỗi: biến mã trạng thái thành các loại lỗi rõ ràng để code của bạn bắt được
  • Thử lại: gửi lại yêu cầu một cách an toàn khi nó thất bại vì lý do tạm thời (nhiều SDK chính thức làm việc này)
  • Kiểu dữ liệu: trong TypeScript, cho trình soạn thảo biết những trường nào tồn tại, nhờ đó lỗi được phát hiện trước khi bạn chạy code

Ví dụ minh họa: thêm phản hồi AI cho ứng dụng hỗ trợ khách hàng

Bạn yêu cầu một công cụ xây dựng bằng AI: "Khi khách hàng gửi một yêu cầu hỗ trợ, hãy tạo gợi ý trả lời bằng một mô hình AI."

  1. AI cài SDK chính thức của nhà cung cấp mô hình như một gói trong dự án của bạn (với dự án JavaScript, lấy từ kho npm).
  2. Bạn thêm API key của nhà cung cấp như một secret của dự án. SDK đọc khóa này từ một biến môi trường trên server.
  3. AI viết một route trên server gọi SDK với nội dung yêu cầu và một chỉ dẫn ngắn, rồi lưu gợi ý trả lời vào cơ sở dữ liệu.
  4. Trình duyệt không bao giờ nhìn thấy khóa; nó chỉ gọi tới route trên server của chính bạn.

Nếu nhà cung cấp sau này thay đổi API, họ thường phát hành một phiên bản SDK mới. Cập nhật gói, và kiểm tra ghi chú phát hành để tìm các thay đổi gây lỗi tương thích, thường là đủ.

Thuật ngữ quan trọng

Thuật ngữÝ nghĩa
Dependency (phụ thuộc)Đoạn code bên ngoài mà dự án của bạn dựa vào. SDK là một ví dụ.
Package / package manager (gói / trình quản lý gói)Một bộ code có thể tải về, và công cụ dùng để cài đặt nó (npm cho JavaScript, pip cho Python).
Client library (thư viện client)Code giúp việc gọi một API cụ thể dễ hơn. Với dịch vụ web, đây thường là ý nghĩa của "SDK".
Server-side SDK (SDK phía server)Chạy trên backend và có thể dùng secret key một cách an toàn.
Client-side / browser SDK (SDK phía trình duyệt)Chạy trong trình duyệt của người dùng. Chỉ được cung cấp khóa công khai hoặc khóa "publishable".
Version (phiên bản)Mỗi bản phát hành SDK có một số hiệu (như 4.2.0). Nhảy số lớn thường có nghĩa là có thay đổi gây lỗi tương thích.
Breaking change (thay đổi gây lỗi tương thích)Một bản cập nhật buộc bạn phải sửa code.
Changelog / release notes (nhật ký thay đổi / ghi chú phát hành)Danh sách những gì đã thay đổi trong mỗi phiên bản do nhà cung cấp công bố.

Những hiểu lầm thường gặp

  • "SDK và API là một." API là giao diện của dịch vụ; SDK là lớp tiện lợi xây trên đó. Bạn có thể gọi hầu hết API web mà không cần SDK, chỉ là phải làm nhiều việc hơn.
  • "Đã cài SDK nghĩa là tích hợp đã xong." Bạn vẫn cần một tài khoản với nhà cung cấp, đúng khóa, và code xử lý những gì xảy ra khi có lỗi.
  • "Gói nào có tên đúng thì là gói chính thức." Kẻ xấu đôi khi đăng các gói giả mạo có tên gần giống. Hãy kiểm tra tài liệu của nhà cung cấp để lấy đúng tên gói.
  • "SDK chạy trên trình duyệt có thể dùng secret key của tôi." Không bao giờ. Mọi thứ trong code trình duyệt đều có thể bị khách truy cập nhìn thấy. Secret key chỉ thuộc về code phía server. Xem cách giữ an toàn API key.
  • "SDK không bao giờ cần cập nhật." Các phiên bản cũ ngừng nhận bản vá và cuối cùng ngừng hoạt động khi nhà cung cấp gỡ bỏ các phiên bản API cũ.

Nên hỏi công cụ xây dựng AI của bạn điều gì

  • "Dùng SDK chính thức của nhà cung cấp, không dùng thư viện bên thứ ba. Cho tôi biết tên gói chính xác và phiên bản bạn đã cài."
  • "Chỉ dùng SDK trên server, và đọc khóa từ một biến môi trường."
  • "Những phần nào của SDK này chạy trên trình duyệt, và chúng dùng khóa nào?"
  • "Điều gì xảy ra nếu lệnh gọi SDK bị lỗi hoặc hết thời gian chờ? Hiển thị cho người dùng một thông báo rõ ràng và ghi lại lỗi."
  • "Liệt kê mọi SDK và gói mà ứng dụng này phụ thuộc vào, và mỗi gói dùng để làm gì."
  • "Kiểm tra xem có SDK nào của chúng ta đã lỗi thời hoặc có lỗ hổng bảo mật đã biết không."

SDK trong Mythex

Tác tử Mythex có thể cài gói trong môi trường sandbox của dự án bằng trình quản lý gói thông thường của stack bạn đang dùng, bao gồm cả SDK của các nhà cung cấp. Bạn chỉ cần nêu tên gói và tính năng bạn muốn dùng nó cho. Xem Sử dụng gói npm. Mythex không cung cấp sẵn danh mục tích hợp dựng sẵn cho ứng dụng của bạn: bạn lưu khóa của nhà cung cấp như một secret của dự án và yêu cầu tác tử gọi dịch vụ đó từ phía server, như mô tả trong Tích hợp bất kỳ API nào.

Về lớp nằm bên dưới SDK, hãy đọc API là gì. Với hai tính năng phổ biến dựa trên SDK, xem cách thêm thanh toán vào ứng dụng và cách dùng LLM API.

Câu hỏi thường gặp

SDK là gì, nói đơn giản?

SDK (software development kit) là một bộ gồm code có sẵn, tài liệu và công cụ mà một công ty cung cấp để lập trình viên dễ dàng sử dụng dịch vụ hoặc nền tảng của họ. Thay vì tự viết từng yêu cầu gửi tới API, bạn gọi các hàm đơn giản mà SDK đã cung cấp sẵn.

SDK khác API như thế nào?

API là tập quy tắc để giao tiếp với một dịch vụ, gồm những yêu cầu nó nhận và phản hồi nó trả về. SDK là bộ công cụ được xây dựng trên API đó, thường dành cho một ngôn ngữ lập trình, giúp bạn thực hiện các yêu cầu và tự xử lý những chi tiết như xác thực, thử lại khi lỗi và định dạng dữ liệu.

SDK có miễn phí không?

Hầu hết SDK cho các dịch vụ web đều miễn phí tải về và là mã nguồn mở, nhưng dịch vụ mà chúng kết nối tới có thể tính phí theo mức sử dụng. Bản thân việc dùng SDK của Stripe hay OpenAI không tốn tiền; các yêu cầu thanh toán hoặc AI mà nó gửi đi sẽ do nhà cung cấp tính phí.

Dùng SDK có an toàn không?

Nói chung, SDK chính thức do nhà cung cấp phát hành là cách an toàn nhất để gọi dịch vụ của họ, vì chúng được bảo trì và xử lý các chi tiết bảo mật. Hãy cài đặt từ kho gói chính thức, cập nhật thường xuyên và cẩn thận với các gói không chính thức có tên gần giống.

Mythex · Pricing · Xây dựng mọi thứ với AI · Mẫu website và ứng dụng · So sánh Mythex · Thuật ngữ xây dựng ứng dụng bằng AI · Công cụ miễn phí để xây dựng ứng dụng bằng AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو 简体中文 繁體中文(香港) 繁體中文(台灣)