tgoop.com/devopsslib/4126
Last Update:
🧑💻 Используем NGINX как AI-прокси
За последние годы мир AI расширился до множества провайдеров моделей (LLM), каждый со своими API.
Чтобы упростить интеграцию, маршрутизацию и безопасность между приложениями и этими моделями, NGINX предлагает себя как лёгкий AI-прокси: он принимает запросы, трансформирует их (если нужно), маршрутизует, логирует и управляет отказами.
Как это работает:
• Если клиент шлёт запрос в формате OpenAI, но конечная модель — Anthropic, прокси с помощью NJS-скрипта преобразует вход («OpenAI → Anthropic») и выход обратно.
• В конфигурации хранится JSON с правами пользователей: модель A доступна одному, модель B — другому. Прокси проверяет, есть ли у пользователя доступ к запрашиваемой модели.
• Если запрос к основной модели неудачен, например, лимит или сбой API, прокси перенаправит на резервную модель по настройкам.
• После получения ответа прокси извлекает статистику токенов: prompt, completion, total и записывает её в логи NGINX.
Фрагмент конфига:
js_import /etc/njs/aiproxy.js;
server {
listen 4242;
default_type application/json;
location /v1/chat/completions {
set $aiproxy_user $http_x_user;
js_content aiproxy.route;
}
location /openai {
internal;
rewrite ^ /v1/chat/completions;
proxy_set_header Authorization 'Bearer ${OPENAI_API_KEY}';
proxy_pass https://api.openai.com;
}
location /anthropic {
internal;
rewrite ^ /v1/messages;
proxy_set_header x-api-key ${ANTHROPIC_API_KEY};
proxy_pass https://api.anthropic.com;
}
}
Прокси может подгружать права доступа из файла rbac.json, использовать настройки failover и преобразовывать запросы и ответы.
#арсенал_инженера

