Оптимизация затрат на LLM в 12 раз: архитектура self-hosted API и агенты в OpenCode Go
Массовая автоматизированная обработка неструктурированных текстовых данных с использованием современных языковых моделей сталкивается с серьезным финансовым барьером. При необходимости ежедневно анализировать десятки тысяч сообщений, извлекая из них строго валидные структуры данных (даты, категории, финансовые показатели и контактные данные), прямые вызовы коммерческих облачных API ведут к стремительному росту бюджета.
Решением задачи стал переход на гибридную инфраструктуру: развертывание собственного прокси-сервера над сервисом подписок OpenCode Go. Такой подход позволил сохранить высокое качество извлечения данных в формате JSON и одновременно снизить затраты на обработку одного сообщения до 0.006 рублей.
Экономический тупик прямых обращений к коммерческим LLM API
В рамках проекта потребовалось организовать конвейер потоковой обработки рекламных публикаций и пользовательских объявлений. Ключевые требования к системе включали высокую точность извлечения сущностей, 100% соответствие JSON-схеме и минимальную себестоимость операции.
Первичный анализ бесплатных моделей через открытые маршрутизаторы показал неудовлетворительные результаты: около 40% ответов содержали синтаксические ошибки в JSON, а в остальных случаях наблюдались искажения бизнес-логики. Сравнительное тестирование платных API на реальном датасете сформировало следующую картину:
- Qwen 3.5-Flash: стоимость запроса около 8 копеек, корректность структуры 95%, качество извлечения 8/10.
- Mistral 3.5: стоимость запроса около 7 копеек, корректность структуры 85%, качество извлечения 5/10.
- GPT 5-nano: стоимость запроса от 10 до 12 копеек, корректность структуры 100%, качество извлечения 10/10.
Хотя модель GPT 5-nano продемонстрировала идеальное качество, итоговые расходы на обработку массива в 10 000 сообщений составили бы от 100 до 120 рублей. На масштабах в сотни тысяч операций в месяц такая экономика становится неприемлемой, а попытки упрощения системных промптов приводили лишь к деградации качества выгрузки.
Механика льготного токенового лимита в сервисе OpenCode Go
Решение было найдено в использовании подписки OpenCode Go. Инструмент предназначен для интерактивной работы разработчиков с AI-агентами и предлагает фиксированный тариф $5 в месяц, включающий эквивалент $60 токеновых кредитов по прямым ценам провайдеров. Это создает 12-кратную финансовую скидку на стартовый объем потребления.
Однако сервис OpenCode Go ориентирован на консольное применение и не предоставляет готового REST API для внешней интеграции сторонних приложений. Существующие в сообществе открытые утилиты представляли собой либо простые прокси для базовых моделей, либо CLI-скрипты без поддержки параллельной обработки задач. Для встраивания подписки в производственный конвейер потребовалась разработка собственного сервера-посредника.
Проектирование прокси-сервера на Express.js и SQLite
В качестве основы прокси-сервиса был выбран легкий бэкенд на Node.js с использованием фреймворка Express.js и встроенной базы данных SQLite. Сервер выполняет авторизацию входящих клиентских запросов, ведение журнала операций и маршрутизацию к инфраструктуре OpenCode Go.
Использование SQLite полностью закрывает потребности проекта в хранении сервисных метаданных, истории запросов и токенов авторизации без усложнения инфраструктурной эксплуатации. Архитектура сервера спроектирована по модульному принципу, что позволяет легко добавлять новые правила валидации и лимитирования запросов.
Унификация формата запросов между спецификациями OpenAI и Anthropic
В процессе разработки сервиса проксирования выявилась важная техническая особенность: из 13 моделей, доступных в рамках подписки, часть работает исключительно по спецификации Anthropic API (где системный промпт передается в отдельном поле system, а также требуются обязательные параметры вроде max_tokens), тогда как оставшиеся модели принимают традиционный формат OpenAI (messages массив).
Для скрытия этой сложности от внешних сервисов в прокси-сервере был реализован слой адаптеров:
const isAnthropicModel = ANTHROPIC_MODELS.includes(request.model);
if (isAnthropicModel) {
const systemPrompt = extractSystemMessage(request.messages);
const userMessages = filterUserMessages(request.messages);
return callAnthropicEndpoint({
model: request.model,
system: systemPrompt,
messages: userMessages,
max_tokens: request.max_tokens ?? 4096
});
} else {
return callOpenAIEndpoint(request);
}
Благодаря этой прослойке клиенты взаимодействуют с единым универсальным API, не учитывая внутренние различия протоколов конкретных нейросетей.
Интеграция Agent API и организация долговременного контекста
Дополнительным преимуществом архитектуры стала интеграция с Agent API платформы OpenCode. В отличие от стандартного stateless-вызова моделей, агентный режим поддерживает долгосрочное хранение контекста и инструкции системного уровня.
В структуре рабочего пространства создаются специальные файлы конфигурации:
AGENTS.md: содержит глобальные правила форматирования JSON, списки запрещенных галлюцинаций и требования к валидации дат.context.md: хранит динамический справочник категорий и актуальные бизнес-правила.- Сегментированные каталоги
workspaces/: обеспечивают полную изоляцию параллельных потоков обработки данных разных клиентов.
Сравнительные метрики стоимости и производительности
Внедрение собственнной архитектуры проксирования над OpenCode Go дало следующие результаты:
- Себестоимость вызова: эффективная цена обработки одного рекламного поста снизилась до 0.006 рублей (~0.6 копейки).
- Точность извлечения: сохранена на уровне 100% благодаря использованию оригинальных флагманских моделей.
- Отказоустойчивость: встроенный в Express-сервер механизм повторных попыток с экспоненциальной задержкой снизил процент сбоев сети до нуля.
Создание локального прокси-слоя позволило объединить финансовую выгоду льготных подписок с надежностью промышленного API.

![Node.JS [ru]](/api/digests/it_development/daily/20260722/assets/sources/we-use-js.jpg)