Выбор модели для AI-агента по рейтингу в лидербордах часто приводит к переплате. Фронтальные модели (например, Claude Opus или GPT-5) стоят дорого, но для узких задач (классификация тикетов, извлечение полей) они могут быть избыточны. Дешевые модели часто справляются с ними так же хорошо, но в 5–10 раз дешевле. Ключевой вопрос не в том, какая модель самая умная, а в том, какая самая дешевая, которая удовлетворяет вашим требованиям к качеству.
Ниже представлен трехшаговый фреймворк для принятия решения, основанный на реальных метриках вашего трафика, а не на абстрактных бенчмарках.
011. Определите порог качества (Quality Bar)
Прежде чем сравнивать модели, зафиксируйте, что значит «достаточно хорошо» для конкретной задачи. Это фильтр, через который проходят все кандидаты.
- Высокий риск (Compliance, Legal, Healthcare): Ошибка недопустима. Устанавливайте высокий порог (95%+), даже если это требует дорогих моделей.
- Высокий объем (Support, Chat): Важнее агрегированный результат. Модель, которая решает 90% запросов корректно, а 10% эскалирует человеку, может быть оптимальной.
- Чувствительность к задержкам (Latency): Если задача требует ответа в реальном времени (фрод-чеки), медленная, но точная модель отбраковывается до учета цены.
022. Измерьте стоимость за единицу качества
Лидерборды усредняют результаты по сотням задач, которые могут не иметь отношения к вашему бизнесу. Вам нужно измерить производительность на своих данных.
- Подготовьте датасет: Возьмите 20–50 реальных примеров вашего трафика (тикетов, запросов). Не используйте публичные бенчмарки.
- Выберите кандидатов: Возьмите три модели: дешевую (Flash/Pro), среднюю (Sonnet/4o) и фронтальную (Opus/GPT-5).
- Запустите тест: Используйте единый рубрикатор. Для детерминированных задач — точное совпадение (exact match). Для открытых ответов — используйте LLM-as-a-Judge.
- Считайте метрику: Разделите стоимость 1000 запросов на полученный балл качества. Получите
cost per quality point.
Важно: считайте стоимость из поля usage.cost в ответе API, а не умножайте тариф на количество токенов. Это даст реальную сумму, которую спишут с вашего счета.
033. Выберите модель с запасом (Margin)
Не выбирайте модель с самым низким cost per point, если она проходит порог впритык. Оценки моделей дрейфуют при обновлениях весов, а ваш трафик меняется. Требуйте, чтобы победитель проходил порог с запасом, равным разбросу оценок между запусками.
Пример расчета
Задача: маршрутизация тикетов поддержки. Вход: ~700 токенов, выход: ~150 токенов. Порог качества: 85%.
| Модель | Цена ($/M токенов) | Стоимость / 1K запросов | Качество (Score) | Стоимость за балл | Проходит 85%? |
|---|---|---|---|---|---|
| openai/gpt-5.6-luna | $0.20 / $1.20 | $0.32 | 82 | $0.0039 | Нет (-3) |
| google/gemini-3.7-flash | $0.75 / $3.75 | $1.09 | 89 | $0.0122 | Да (+4) |
| anthropic/claude-opus-5 | $5.00 / $25.00 | $7.25 | 97 | $0.0747 | Да (+12) |
Анализ:
- Фильтр по порогу: GPT-5.6 Luna набирает 82%, что ниже порога 85%. Она отбраковывается, несмотря на самую низкую стоимость за балл.
- Сравнение допустимых: Остались Gemini 3.7 Flash ($1.09) и Claude Opus 5 ($7.25). Обе проходят порог.
- Выбор по цене: Gemini 3.7 Flash стоит $1.09 за 1000 запросов. Claude Opus 5 стоит $7.25. Задача не требует 97% точности, достаточно 85%. Выбираем Gemini.
Если бы порог был 95% (например, из-за строгих SLA), то только Claude Opus 5 прошла бы тест, и пришлось бы платить $7.25. Цель фреймворка — четко видеть, за какой «премиум» вы переплачиваете, выходя за рамки необходимого.
Скрипт для автоматизации теста
Используйте этот Python-скрипт для быстрого замера. Он читает реальную стоимость из ответа OpenRouter и считает метрику.
import json
import os
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
ROUTING_PROMPT = open("routing_prompt.txt").read()
test_set = json.load(open("test_set.json"))
# 20-50 ваших примеров: {"ticket": ..., "label": ...}
candidates = [
"openai/gpt-5.6-luna",
"google/gemini-3.7-flash",
"anthropic/claude-opus-5"
]
for model in candidates:
total_cost = 0.0
correct = 0
for ex in test_set:
r = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": ROUTING_PROMPT},
{"role": "user", "content": ex["ticket"]}
],
)
# Реальная стоимость запроса
total_cost += r.usage.cost
answer = (r.choices[0].message.content or "").strip()
# Точное совпадение для детерминированных задач
correct += int(answer == ex["label"])
score = correct / len(test_set)
points = score * 100
cost_per_1k = (total_cost / len(test_set)) * 1000
cost_per_point = cost_per_1k / points if points else float("inf")
print(f"{model}: score={score:.0%} cost/1K=${cost_per_1k:.2f} cost/point=${cost_per_point:.4f}")04Кому подойдёт / что запустится
- Для стартапов и high-volume задач: Используйте этот фреймворк для маршрутизации. 80% запросов (FAQ, сортировка) отправляйте на
google/gemini-3.7-flashили аналоги, экономя бюджет. - Для критичных задач: Оставляйте
anthropic/claude-opus-5илиopenai/gpt-5.6-lunaтолько для тех сценариев, где ошибка стоит дороже, чем разница в стоимости запросов. - Локальное железо: Если вы хотите уйти от API, аналогичный подход работает с локальными моделями. Например,
Qwen2.5-72BилиLlama-3.1-70Bна GPU с 80GB VRAM (A100/H100) могут заменить фронтальные модели для многих задач, но требуют настройки vLLM/Ollama и контроля за латентностью.
Регулярно перепроверяйте сравнение: цены меняются, модели обновляются. То, что было оптимальным вчера, может стать избыточным сегодня.
Источник: OpenRouter ↗
