В разработке на базе LLM часто возникает проблема дублирования конфигураций: одно и то же имя модели, системный промпт и параметры сэмплирования копируются в веб-приложение, пакетные скрипты и ноутбуки. Изменение температуры или модели требует правок в каждом месте. OpenRouter решает эту задачу через Presets — именованные, версионированные конфигурации, работающие по принципу config-as-code.
Presets хранят выбор модели (или список резервных), системный промпт, маршрутизацию провайдеров и параметры сэмплирования. Вы определяете конфигурацию один раз в дашборде и ссылаетесь на неё по имени в любом API-запросе. При изменении пресета все приложения, использующие его, автоматически получают обновленную конфигурацию без передеплоя кода.
01Что такое Preset и чем он лучше хардкода
Preset — это аналог файла .env или Terraform-модуля, но с ключевым отличием: конфигурация живет в облаке OpenRouter, а не в репозитории. Это позволяет менять настройки в реальном времени, влияя на все подключенные сервисы.
Основные компоненты пресета:
- Model selection: Одна модель или упорядоченный список fallback-моделей.
- System prompt: Инструкции, добавляемые перед каждым запросом.
- Provider routing: Приоритизация провайдеров по цене или задержке, блокировка конкретных поставщиков.
- Sampling parameters: Temperature, top_p и другие настройки генерации.
- Tools: Встроенные инструменты OpenRouter (поиск в вебе, генерация изображений, субагенты).
tools: инструменты из запроса и пресета объединяются, а инструменты с одинаковым именем заменяют друг друга.02Создание и использование первого Preset
Для создания откройте openrouter.ai/settings/presets. Выберите уникальный slug, который будет использоваться в запросах в формате @preset/slug.
Пример использования пресета в Python-клиенте OpenRouter. Обратите внимание на сокращение кода и вынесение логики из тела запроса:
# До: хардкод всех параметров
resp = client.chat.send(
model="anthropic/claude-opus-4.8",
provider={"sort": "price"},
temperature=0.7,
messages=[
{"role": "system", "content": "You are a concise technical writer..."},
{"role": "user", "content": "Explain preset versioning."}
],
)
# После: использование пресета
resp = client.chat.send(
model="@preset/tech-writer", # Ссылка на пресет
messages=[
{"role": "user", "content": "Explain preset versioning."}
],
)Вы также можете создавать пресеты через API, отправляя POST-запрос. В теле запроса указываются только конфигурационные поля; временные поля (messages, stream) игнорируются:
curl https://openrouter.ai/api/v1/presets/tech-writer/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-opus-4.8",
"temperature": 0.7,
"messages": [
{"role": "system", "content": "You are a concise technical writer."}
]
}'03Практические кейсы: Улучшение промптов и Fusion
Кейс 1: Улучшение промптов для генерации изображений
Модели генерации изображений часто требуют детальных описаний. Preset позволяет связать текстовую модель с инструментом генерации изображений. Текстовая модель расширяет короткий запрос пользователя в полноценный визуальный бриф (субъект, композиция, освещение, палитра, стиль) и автоматически вызывает инструмент.
curl https://openrouter.ai/api/v1/presets/image-enhancer/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-opus-4.8",
"messages": [
{"role": "system", "content": "You are an expert visual prompt engineer. Expand the user request into a detailed image prompt covering subject, composition, lighting, palette, and style, then call the image tool."}
],
"tools": [
{"type": "openrouter:image_generation",
"parameters": {"model": "google/gemini-3.1-flash-image"}}
],
"tool_choice": "required",
"temperature": 0.7
}'Теперь, отправляя запрос к @preset/image-enhancer с текстом "уютный уголок для чтения у дождливого окна", вы получите готовое изображение, так как система сама сформирует детальный промпт.
Кейс 2: Фиксация конфигурации Fusion
Конфигурация Fusion запускает панель моделей параллельно с основной моделью, а основная модель синтезирует финальный ответ на основе выводов панели. Сохранение этой сложной структуры в Preset позволяет использовать её в веб-приложениях, ботах и инструментах оценки через единую ссылку @preset/fusion-panel.
Это особенно полезно для ML-инженеров: конфигурация оценки (модели, параметры сэмплирования, маршрутизация) становится стабильной и воспроизводимой. Изменения вносятся только в дашборде, а не в коде каждого сервиса.
04Управление и переопределение
Presets поддерживают частичное переопределение. Если в теле запроса передан параметр temperature, он перекроет значение из пресета. Если параметр не передан, используется значение из пресета.
Существует два способа ссылки на пресет в поле
Источник: OpenRouter ↗
