Разработчик создал собственный API для снижения стоимости обработки данных с помощью ИИ в 12 раз
Разработчик столкнулся с необходимостью обрабатывать десятки тысяч рекламных объявлений с помощью языковых моделей, требующих высокой точности и минимальных затрат. После экспериментов с бесплатными и платными решениями он создал собственный сервер на базе инструмента Opencode, что позволило сократить расходы в 12 раз по сравнению с прямым использованием GPT.
Разработчик, пожелавший остаться неназванным, столкнулся с задачей обработки десятков тысяч рекламных объявлений с помощью больших языковых моделей (LLM). На выходе требовался строго валидный JSON с датами, тегами, временем, стоимостью и другой структурированной информацией. Ключевыми требованиями были высокая точность, стабильный структурированный вывод и минимальная стоимость обработки. Первоначальные попытки использовать бесплатные модели, такие как OpenRouter, показали, что около 40% ответов не соответствовали требуемой JSON-схеме, а даже корректный JSON часто содержал ошибки в извлечённых данных, включая даты, теги и описания. Это типичная проблема для многих разработчиков, работающих с открытыми моделями: они экономят на прямых затратах, но теряют время на доработку и валидацию результатов, что в итоге увеличивает общую стоимость проекта.
После неудач с бесплатными решениями разработчик перешёл к тестированию платных моделей на реальном датасете из нескольких сотен сообщений. Лучшие результаты показал GPT, однако при нагрузках стоимость обработки 10 000 постов составляла 100–120 рублей, что в долгосрочной перспективе оказалось неприемлемо высоким. Попытки оптимизировать промпты приводили лишь к снижению качества ответов. В поисках более дешёвого решения разработчик вспомнил о Codex от OpenAI, который уже использовал для помощи в разработке, но официального API у него не было, а автоматизация через неофициальные мосты нарушала условия использования, поэтому этот вариант был сразу отброшен. Этот этап иллюстрирует дилемму, знакомую многим специалистам: платные сервисы обеспечивают качество, но их стоимость может быть неподъёмной для масштабных задач, особенно в условиях российского рынка, где курсы валют и инфляция добавляют неопределённости.
Далее разработчик познакомился с инструментом Opencode — средой для работы с AI-агентами, написанной на TypeScript. Подписка Opencode Go стоимостью 5 долларов в месяц включает 60 долларов кредитов на модели, при этом стоимость токенов остаётся такой же, как при прямой оплате. Фактически это даёт 12-кратную скидку на первые 60 долларов использования. Однако Opencode Go оказался ориентирован на интерактивную работу, и готового API для интеграции в приложения не нашлось — все существующие решения были либо прокси под OpenAI API, либо CLI-утилитами. Разработчику пришлось написать собственный сервер на базе Express.js с модульной архитектурой, простой авторизацией и обработкой ошибок, используя SQLite в качестве базы данных. Это решение напоминает подходы, описанные в других проектах, например, при создании ботов для мессенджеров, где стандартные API часто не покрывают все потребности, и приходится строить собственные обёртки.
В процессе создания сервера разработчик столкнулся с проблемой совместимости моделей: из 13 моделей, доступных в подписке Opencode, 5 (Minimax и Qwen различных версий) поддерживали только Anthropic-совместимый формат запросов с отдельным полем для system prompt и обязательными параметрами вроде max_tokens, а остальные — только OpenAI-совместимый формат. Пришлось реализовать логику, которая в зависимости от модели выбирает соответствующий формат, сохраняя единый интерфейс для запросов к собственному API. В итоге был создан endpoint для chat completion, который можно использовать программно без необходимости учитывать различия провайдеров. Эта техническая деталь подчёркивает сложность интеграции разнородных моделей, что особенно актуально для российских разработчиков, которые часто вынуждены комбинировать зарубежные и отечественные решения.
Самым интересным оказался Agent API Opencode, который, в отличие от классического chat completion, позволяет агентам работать с собственным системным промптом (AGENTS.md), долговременной памятью (context.md) и использовать функционал вроде чтения и записи файлов, websearch и structured output. Разработчик создал эндпоинты /agent и /agent/md, которые делают эти возможности доступными через обычный HTTP-запрос. Первый эндпоинт позволяет читать уже готовый AGENTS.md или дополнять его, использовать инструменты и сохранять контекст для задач, требующих долгосрочной памяти. Второй эндпоинт автоматически создаёт AGENTS.md на основе описания желаемого агента. Такой подход расширяет возможности стандартных LLM-интерфейсов, приближая их к полноценным AI-агентам, что может быть полезно для автоматизации сложных бизнес-процессов.
Для использования сервера в нескольких проектах был реализован многопользовательский режим: для каждого пользователя автоматически создаётся собственное рабочее пространство в папке workspaces, что полностью изолирует память и инструкции разных пользователей. Итоговый self-hosted сервер предоставляет REST API для Opencode Go, единый формат запросов независимо от модели, Agent API, многопользовательский режим, Docker-развёртывание и использует SQLite без необходимости поднимать PostgreSQL. Сравнение стоимости показало, что использование OpenCode API позволяет снизить цену запроса в 12 раз по сравнению с прямым использованием GPT, потеряв лишь пару секунд в скорости ответа, что для асинхронной обработки данных не критично. Разработчик опубликовал исходный код сервера с инструкцией по развёртыванию на GitHub, отметив, что решение может быть полезно для других специалистов, сталкивающихся с аналогичными задачами.
В контексте российского рынка, где стоимость облачных API продолжает расти, подобные самодельные решения на основе подписок с кредитами могут стать альтернативой для небольших команд и стартапов, стремящихся минимизировать расходы на обработку данных с помощью ИИ. Открытым остаётся вопрос масштабирования такого подхода при увеличении объёмов данных и числа пользователей, а также совместимость с другими популярными инструментами и платформами. Например, в отличие от официальных API крупных провайдеров, самодельные серверы требуют ручного управления инфраструктурой и могут столкнуться с ограничениями по пропускной способности. Тем не менее, для задач с предсказуемой нагрузкой и ограниченным бюджетом этот путь выглядит перспективным, особенно в условиях, когда российские компании ищут способы снизить зависимость от зарубежных облачных сервисов.