В мире разработки искусственного интеллекта наибольшую популярность сегодня набирают инструменты и библиотеки, упрощающие взаимодействие с продвинутыми языковыми моделями, такими как GPT-4o от OpenAI и Claude 3.5 от Anthropic. До недавнего времени наиболее комфортные API для работы с этими моделями были доступны на языках с динамической типизацией — JavaScript и Python. Однако именно на C++ долгое время отсутствовал современный, удобный и мощный инструмент для взаимодействия с этими системами. Сегодня ситуация изменилась благодаря появлению нового SDK под названием ai-sdk-cpp, разработанного с применением стандарта C++20.
Этот SDK существенно расширяет возможности разработчиков, предоставляя удобную, унифицированную и гибкую платформу для интеграции ИИ в нативные приложения на C++. ai-sdk-cpp — это проект с открытым исходным кодом, распространяемый под лицензией Apache-2.0, который предназначен для разработчиков, использующих C++20. Он призван ликвидировать разрыв между традиционным системным программированием и современной разработкой приложений с искусственным интеллектом. В основе SDK лежит идея «просто вызвать модель», то есть разработчик получает максимально простой, интуитивно понятный API, что особенно важно в мире C++, где зачастую сложно добиться чистоты и краткости кода без ущерба для производительности и поддержки.
Ключевой особенностью данного SDK является возможность унифицированного доступа к двум крупнейшим ИИ-сервисам — OpenAI с их GPT-4o и Anthropic с Claude 3.5. Такая интеграция позволяет использовать преимущества и функциональные особенности обеих моделей, не переключаясь между разными платформами и API. Архитектура SDK предусматривает поддержку потоковой передачи данных, многооборотного чата и комплексной обработки ошибок, что повышает надежность и отзывчивость приложений. Технически sdk использует мощные возможности C++20, включая std::optional и std::variant для работы с результатами и состояниями вызовов, что обеспечивает безопасность типов и минимизирует использование макросов, часто затрудняющих отладку.
Одним из самых востребованных новшеств в SDK стала функция tool-calling, позволяющая модели напрямую вызывать реальные API или функции, как в синхронном, так и в асинхронном режиме с поддержкой параллельного выполнения. Это открывает новые горизонты для создания «умных» приложений с расширенными возможностями взаимодействия и автоматизации. Вопросы реализации функционала tool-calling в C++ оказались не тривиальными. В отличие от таких языков, как TypeScript, где можно использовать декораторы для автоматического получения JSON-схем из функций, C++ пока не обладает полноценной системой рефлексии. В результате разработчикам приходится искать компромиссы и использовать хитроумные техники для маппинга функций и их параметров на JSON-схемы, необходимый для коммуникации с ИИ-моделями.
Проведена работа с такими библиотеками, как boost::pfr и reflect-cpp, которые позволяют частично компенсировать отсутствие рефлексии, применяя возможности концептов, if constexpr и трейтов типов. Кроме того, в обсуждении сообщества были отмечены работы над производительными JSON-библиотеками, например, glaze, которые используют агрегатно инициализируемые структуры и обеспечивают удобный интерфейс для сериализации и десериализации сложных типов данных. Это позволяет не только ускорить работу с JSON, но и повысить универсальность и адаптивность SDK. ai-sdk-cpp нашел отклик у разработчиков, уже работающих с C++, включая тех, кто создает приложения с одним из самых популярных фреймворков — Qt. Некоторые пользователи выразили интерес к расширению SDK возможностью потокового парсинга Markdown с поддержкой специальных блоков, что позволит интегрировать кодовые и другие специфические секции без необходимости постоянного повторного рендеринга.
Такой функционал особенно ценится для приложений с интерактивным выводом и встраиванием инструментов на базе ИИ. Современный SDK для C++20 делает шаг в сторону упрощения разработки и расширения возможностей системного и прикладного программного обеспечения. Он сочетает традиционную мощь C++ и передовые технологии искусственного интеллекта, способствуя их более тесной интеграции. Благодаря этому разработчики получают доступ к современным языковым моделям и инструментам обработки запросов, не покидая привычной экосистемы и не теряя производительности. Разработка и совершенствование таких инструментов является важной вехой на пути создания универсальных, масштабируемых и высокотехнологичных решений с ИИ.