К содержимому журнала

AI и модели

Локальная LLM и облачный API: как распределять запросы между моделями

Одна модель классифицирует документы внутри компании, другая помогает с открытыми материалами. Разбираем маршрутизацию, ограничения резервного пути и сравнение стоимости готового результата.

Разветвлённый керамический канал ведёт к закрытому куполу и открытой арке: выбор локального или внешнего маршрута модели.
Содержание

В компании могут одновременно существовать две разумные задачи. Счета поставщиков нужно разбирать внутри управляемой инфраструктуры, а описание публичного товара — редактировать с помощью внешней модели. Попытка выбрать одну LLM «на всё» смешивает требования к данным, качеству и доступности. Полезнее определить маршрут для каждого класса запросов.

Речь не о сравнении моделей по таблице лидеров. Маршрутизатор решает, куда разрешено отправить конкретный набор данных, какое качество требуется и что делать при сбое. Он должен принять решение до внешней передачи. Рассмотрим проектирование гибридного сервиса без привязки к одному поставщику.

Сначала классифицируйте данные и операции #

Разделите задачи хотя бы на извлечение полей, классификацию, поиск по документам, подготовку черновика и выполнение действия. Затем для каждой укажите допустимые источники и получателей. Название задачи недостаточно: письмо о товаре может включать публичное описание, персональную скидку и вложение с непубличной сметой.

Проверять нужно весь пакет: сообщение, историю диалога, найденные фрагменты, файлы и результаты инструментов. Если из запроса удалили фамилию, но оставили договор с реквизитами во вложении, маршрут не стал публичным. Неопределённый класс данных лучше направлять на разбор, чем автоматически считать разрешённым.

ЗадачаКандидат на маршрутЧто проверить до запуска
Классификация внутренних заявокЛокальная модельКачество на реальных формулировках
Извлечение реквизитов из счетовВнутренний контур обработкиOCR, форматы, сохранность полей
Редактура открытого описания товараРазрешённый внешний APIОтсутствие закрытых добавлений
Ответ по внутренним регламентамМаршрут по политике доступаПрава на каждый найденный фрагмент
Изменение записи в CRMОтдельный сервис выполненияПолномочия и проверка параметров

Маршрут должен быть явной политикой #

Удобно хранить разрешённые варианты как версионируемую конфигурацию. Ниже пример внутреннего формата, не параметров Ollama, n8n или облачного API. Названия классов и маршрутов условные.

policy-example.jsonJSON
{
  "policy_version": "routing-1",
  "routes": [
    {
      "task": "invoice_extraction",
      "data_class": "internal",
      "primary": "local-extractor",
      "fallback": null
    },
    {
      "task": "public_copy_editing",
      "data_class": "public",
      "primary": "approved-cloud",
      "fallback": "local-editor"
    }
  ],
  "unknown_route": "manual_review"
}

Здесь отсутствие резервного маршрута для счёта — осознанное решение. При недоступности локальной модели запрос ждёт или передаётся сотруднику. Ошибка «сервер занят» не даёт оснований отправить документ в облако. Для разрешённого внешнего пути также фиксируют конкретного получателя, настройки хранения и состав передаваемого контекста согласно принятой политике компании.

Совместимый интерфейс не означает одинаковое поведение #

На уровне приложения можно использовать адаптеры с единым внутренним запросом. Но различия моделей всё равно придётся учитывать: доступный контекст, формат структурированного ответа, обработку инструментов, изображения, потоковую выдачу и коды ошибок.

Например, документация Ollama описывает поддержку части совместимого API. Из этого не следует, что любой сценарий другого провайдера заработает простой заменой адреса. Проверяют нужные методы и поля, затем прогоняют одни и те же примеры через оба адаптера.

Особенно опасно молча обрезать длинный документ. Если в конец попало ограничение по договору, ответ изменит смысл. Заранее определите, что происходит при превышении контекста: разбиение по разделам, поиск релевантных фрагментов или отказ с понятной причиной. После разбиения сохраняйте связь результата с конкретными страницами исходника.

Сравнивайте стоимость принятого результата #

Для облака учитывают входные и выходные токены, повторные попытки и дополнительные вызовы проверки. Для локального варианта — оборудование или аренду, обслуживание, загрузку, резервирование и работу инженеров. Малое число запросов может плохо загружать собственную инфраструктуру; постоянная нагрузка меняет расчёт, но не отменяет проверку качества.

Единица сравнения — документ или ответ, прошедший приёмку. Если дешёвая модель создаёт больше ручных исправлений, экономия на генерации может исчезнуть. При извлечении полей отдельно измеряют неверные суммы и пропуски обязательных реквизитов, а не только долю корректного JSON.

В нагрузочном тесте воспроизводят размер документов и одновременность запросов. Замер одного короткого ответа на прогретой модели не показывает поведение очереди после перезапуска. Ollama предоставляет метрики длительности и числа токенов ; их полезно собирать вместе с временем ожидания приложения и результатом проверки.

Как принимать гибридную систему #

Подготовьте контрольный набор отдельно для каждой задачи. Зафиксируйте допустимую ошибку, максимальное время обработки и ситуации, где автоматический ответ запрещён. Сравнивайте маршруты на одинаковых входных данных; версии модели, шаблона запроса и политики сохраняйте в отчёте.

  • Отключите локальный сервис: закрытый документ не должен уйти наружу.
  • Превысьте разрешённую длину контекста: система должна выбрать предусмотренный сценарий.
  • Верните неполный JSON: запись в учётную систему не должна пройти незаметно.
  • Одновременно отправьте несколько крупных файлов: проверьте очередь и тайм-ауты.
  • Измените класс данных: прежний кэш не должен обойти новую политику доступа.

По журналу должно быть видно, почему выбран маршрут и какой результат получен. Полные документы в журнале обычно не нужны: достаточно технических идентификаторов и разрешённых диагностических полей. Срок хранения и доступ к диагностике задают отдельно от доступа к самому помощнику.

Можно ли автоматически переключаться в облако при перегрузке? #

Только для задач и данных, которым такой получатель заранее разрешён. Для остальных нужны очередь, отказ или ручной путь. Автоматическое переключение — часть политики обработки данных, а не просто настройка доступности.

Как выбрать локальную модель без покупки сервера заранее? #

Начните с проверочного набора и замера кандидатов в разрешённой тестовой среде. Для закрытых данных используйте обезличенные или синтетические примеры, если реальную передачу не согласовали. Затем оцените оборудование под нужные качество, размер контекста и параллельность.

Поможем спроектировать маршруты под ваши данные #

Если нужно объединить внутренние документы и внешние модели, NetLab поможет определить допустимые маршруты, проверить качество и подготовить развёртывание локальной языковой модели под выбранные задачи. Оставьте заявку с перечнем систем и ограничений на передачу данных — начнём с проверки сценариев, а не с выбора самого большого сервера.

Был ли материал полезен?

0 полезных · 0 неполезных · 0 оценок

Голосование временно недоступно: подключаем безопасную идентификацию читателя.