Что такое SDK? Комплекты для разработки ПО простыми словами
SDK (набор для разработки ПО) — это готовый инструментарий, который компания предоставляет разработчикам, чтобы они могли пользоваться её сервисом или платформой, не строя всё с нуля. Обычно он включает библиотеку кода для конкретного языка программирования, документацию и примеры, а иногда и дополнительные инструменты, например для тестирования. Когда ваше приложение «использует SDK Stripe», это значит, что ваш код вызывает готовые функции Stripe, а не формирует вручную каждый запрос к API Stripe.
Почему SDK важны, когда вы создаёте приложение с ИИ
Когда вы просите ИИ-конструктор добавить платежи, чат с ИИ, карты или email, он обычно устанавливает SDK этого провайдера и пишет несколько строк, которые его вызывают. Понимание того, что такое SDK, помогает:
- Понимать, что добавляется в проект. SDK — это зависимость, то есть внешний код, на который теперь опирается ваше приложение.
- Замечать, какая настройка нужна. Почти каждому SDK нужен API-ключ, а у многих есть отдельные версии для «сервера» и «браузера» с разными правилами, какие ключи безопасно использовать.
- Просить правильное. «Используй официальный SDK Stripe на сервере» — понятнее, чем «добавь Stripe».
- Читать ошибки. Многие ошибки в приложениях, созданных ИИ, возникают из-за неправильно настроенного, устаревшего или неверно размещённого SDK.
Бытовая аналогия
Представьте, что вы хотите повесить полки.
- API — это правила здания: в какие стены можно вкручивать шурупы, какую нагрузку они держат, где проходят трубы. Вы могли бы работать только по этим правилам, всё измеряя и сверля сами.
- SDK — это готовый набор для сборки полки от той же компании, что построила стены: заготовленные детали, нужные шурупы, кронштейн, который точно подходит к их стенам, и инструкция.
Вы всё равно решаете, где будет полка и что на ней стоять. Набор просто избавляет вас от распиловки дерева и подбора шурупов, и вероятность провести дырку в водопроводной трубе становится меньше.
SDK, API, библиотека и фреймворк
Эти термины пересекаются, и это путает многих:
| Термин | Что это | Пример |
|---|---|---|
| API | Правила общения с сервисом: какие запросы он принимает и что возвращает | REST API Stripe по адресу api.stripe.com |
| SDK | Набор провайдера для использования его API или платформы из конкретного языка, с документацией и инструментами | Официальная библиотека Stripe для Node.js |
| Библиотека | Любой пригодный для повторного использования код, который вы добавляете в проект | Пакет для форматирования дат |
| Фреймворк | Большая структура, внутри которой строится всё приложение | React, Next.js, Django |
SDK обычно содержит библиотеку, а эта библиотека обычно вызывает API. Для веб-сервисов термины «SDK» и «клиентская библиотека» часто используют как синонимы.
Некоторые SDK вообще не связаны с веб-сервисами. Apple и Google публикуют SDK для создания приложений под iOS и Android, которые включают компиляторы, симуляторы и платформенный код. Идея та же: всё необходимое для разработки под их платформу в одном наборе.
Что SDK делает за вас
Вот одна и та же задача — создать клиента у платёжного провайдера — выполненная двумя способами.
Без SDK вашему коду нужно самому собрать HTTP-запрос: указать URL, добавить секретный ключ в нужный заголовок, отформатировать данные так, как ожидает API, отправить, проверить код статуса, разобрать ответ и повторить попытку, если сеть заикнулась.
С SDK это ближе к одной строке:
const customer = await stripe.customers.create({ email: "lena@example.com" });
За этой строкой SDK берёт на себя:
- Аутентификацию — правильно прикрепляет ваш ключ к каждому запросу
- Форматирование данных — превращает ваши данные в то, что ожидает API, а ответ — обратно в объекты
- Ошибки — переводит коды статусов в понятные типы ошибок, которые ваш код может перехватить
- Повторные попытки — безопасно пробует снова, когда запрос не удался из-за временных причин (многие официальные SDK так делают)
- Типы — в TypeScript сообщает редактору, какие поля существуют, поэтому ошибки видны до запуска кода
Пример: добавляем ответы ИИ в приложение поддержки
Вы просите ИИ-конструктор: «Когда клиент отправляет обращение в поддержку, сгенерируй предложенный ответ с помощью ИИ-модели».
- ИИ устанавливает официальный SDK провайдера модели как пакет в ваш проект (для проектов на JavaScript — из реестра npm).
- Вы добавляете API-ключ провайдера как секрет проекта. SDK читает его на сервере из переменной окружения.
- ИИ пишет серверный маршрут, который вызывает SDK с текстом обращения и короткой инструкцией, и сохраняет предложенный ответ в базе данных.
- Браузер никогда не видит ключ; он обращается только к вашему серверному маршруту.
Если провайдер позже меняет свой API, он обычно выпускает новую версию SDK. Обновить пакет и проверить примечания к выпуску на предмет несовместимых изменений часто достаточно.
Ключевые термины
| Термин | Значение |
|---|---|
| Зависимость | Внешний код, на который опирается проект. SDK — один из примеров. |
| Пакет / менеджер пакетов | Загружаемый набор кода и инструмент, который его устанавливает (npm для JavaScript, pip для Python). |
| Клиентская библиотека | Код, который упрощает вызов определённого API. Часто под «SDK» для веб-сервисов понимают именно её. |
| Серверный SDK | Работает на вашем бэкенде и может безопасно использовать секретные ключи. |
| Клиентский / браузерный SDK | Работает в браузере пользователя. Получает только публичные или «publishable» ключи. |
| Версия | У каждого выпуска SDK есть номер (например 4.2.0). Большие скачки часто означают несовместимые изменения. |
| Несовместимое изменение (breaking change) | Обновление, из-за которого нужно менять свой код. |
| Журнал изменений / примечания к выпуску | Список того, что изменилось в каждой версии, от провайдера. |
Распространённые заблуждения
- «SDK и API — это одно и то же». API — это интерфейс сервиса, а SDK — удобный слой поверх него. Большинство веб-API можно вызывать и без SDK, просто это больше работы.
- «Если SDK установлен, интеграция готова». Всё ещё нужны аккаунт у провайдера, правильные ключи и код, который обрабатывает сбои.
- «Любой пакет с правильным названием — официальный». Злоумышленники иногда публикуют похожие пакеты-подделки. Точное имя пакета проверяйте в документации провайдера.
- «SDK для браузера может использовать мой секретный ключ». Никогда. Всё, что есть в коде браузера, видно посетителям. Секретные ключи — только в серверном коде; см. как хранить API-ключи в безопасности.
- «SDK никогда не нужно обновлять». Старые версии перестают получать исправления и в конце концов перестают работать, когда провайдеры отключают старые версии API.
Что спросить у вашего ИИ-конструктора
- «Используй официальный SDK провайдера, а не сторонние обёртки. Скажи точное имя пакета и версию, которые установлены».
- «Используй SDK только на сервере и читай ключ из переменной окружения».
- «Какие части этого SDK работают в браузере и какие ключи они используют?»
- «Что произойдёт, если вызов SDK не удастся или истечёт время ожидания? Покажи пользователю понятное сообщение и запиши ошибку в лог».
- «Перечисли все SDK и пакеты, от которых зависит это приложение, и для чего каждый из них нужен».
- «Проверь, не устарели ли наши SDK и нет ли у них известных проблем безопасности».
SDK в Mythex
Агент Mythex может устанавливать пакеты в песочницу вашего проекта через обычный менеджер пакетов для вашего стека, включая SDK провайдеров — назовите пакет и функцию, для которой он нужен. См. Использование пакетов npm. Mythex не поставляет каталог готовых интеграций для вашего приложения: вы сохраняете ключ провайдера как секрет проекта и просите агента вызывать сервис на стороне сервера, как описано в Integrate any API.
О слое под SDK читайте в статье что такое API. Про две частые функции на основе SDK см. как добавить платежи в приложение и как использовать API LLM.
Вопросы
Что такое SDK простыми словами?
SDK (набор для разработки ПО) — это готовый пакет кода, документации и инструментов, который компания предоставляет разработчикам, чтобы им было легко пользоваться её сервисом или платформой. Вместо того чтобы вручную формировать каждый запрос к API, вы вызываете простые функции, которые уже есть в SDK.
В чём разница между SDK и API?
API — это набор правил общения с сервисом: какие запросы он принимает и какие ответы возвращает. SDK — это набор инструментов поверх этого API, обычно для одного языка программирования, который отправляет эти запросы за вас и берёт на себя такие детали, как аутентификация, повторные попытки и форматы данных.
SDK бесплатные?
Большинство SDK для веб-сервисов можно скачать бесплатно и они имеют открытый исходный код, но сам сервис, к которому они подключаются, может брать плату за использование. Сам по себе SDK Stripe или OpenAI ничего не стоит; платежи или запросы к ИИ, которые он делает, оплачивает провайдер.
Безопасно ли использовать SDK?
Официальные SDK от провайдера — обычно самый безопасный способ обращаться к его сервису, так как их поддерживают и в них учтены вопросы безопасности. Устанавливайте их из официального реестра пакетов, обновляйте и будьте осторожны с неофициальными пакетами с похожими названиями.