一句话定义:API(Application Programming Interface,应用程序编程接口)是两个系统之间事先约定好的"对话规则";SDK(Software Development Kit,软件开发工具包)是别人按照这套规则,把常用动作提前写好、打包好的一整套工具。
打个比方:点外卖。
API 就像餐厅的点单窗口和菜单:你说"一份牛肉面,不要香菜",后厨就知道该怎么处理。你不需要进厨房,也不需要知道灶台怎么开;你只需按菜单能接受的格式提要求。SDK 则像送到你手上的半成品料理包:菜已洗好切好、调料配齐,还附了张说明书,你按步骤加热就能吃。
区别在于:菜单决定你能不能点、怎么点,是"约定";料理包决定你少干多少活,是"实现"。
更具体一点,API 规定的是函数名、参数、返回值、错误码、鉴权方式、请求频率限制这类契约。它与你用什么语言、什么框架无关:用 Python、Java 还是直接在终端敲一行 curl,对服务端来说都是同一个请求。
SDK 则是把这套契约翻译成你熟悉的语言:它替你封装网络请求、签名计算、超时重试、数据序列化、流式返回的拼接。你写三五行代码就完成一次调用,脏活它替你干了。
| 维度 | API | SDK |
|---|---|---|
| 本质 | 契约、约定 | 工具包、代码实现 |
| 形态 | 接口文档、端点、参数说明 | 可安装的库、示例代码、命令行工具 |
| 依赖关系 | 不依赖 SDK 也存在 | 内部通常调用 API |
| 换编程语言 | 契约不变,自己重新拼请求 | 一般要换对应语言的版本 |
| 主要收益 | 系统之间能连通 | 少写"胶水代码"、少踩坑 |
还有两个容易混的近邻:库(Library)和框架(Framework)。库是你调用它,框架是它调用你;SDK 更像个工具箱,里面可能装着库、文档、示例和调试工具。至于"插件",那是往别人的产品里加功能,出发点又不一样。
对实际工作意味着什么。
AI 从业者接一家模型服务时,优先找官方 SDK,省下的是鉴权、流式输出、失败重试这些不产生业务价值、却必须写对的代码。但要记住:SDK 只是更好用的外壳,请求最终仍是那个请求。线上出问题时,还是得回到 API 文档,看清实际发出去的参数和返回。只做一次性验证时,直接调 API 反而更快,不必引入依赖。
对非技术同事,这个区分能帮你把需求说清:说"给我一个 API",通常是"给我一个能对接的数据或能力接口";说"给我一个 SDK",则是"给我能直接集成进项目的工具包"。两者的工期和交付物不是一回事。
具体支持哪些语言、版本如何演进,以官方页面为准。
