Три пропущенных символа в адресе — и бот отвечает 404
Автор: Алексей Пасечник (Arhellist). Канонический адрес: https://arhellist.ru/blog/tri-propuschennyh-simvola-v-adrese-i-bot-otvechaet-404/.
Опубликовано: 2026-10-27.
Это тот самый «феерический провал на тривиальной вещи», о котором я писал во вступлении.
Предыстория. Мы подняли локальный стенд — полную копию платформы на одной машине: кабинет, база, почта, боты. Агенты общаются с нейросетью через шлюз — промежуточный сервис с OpenAI-совместимым API, который принимает запросы и отправляет их нужной модели. У каждого рабочего пространства свой адрес шлюза.
Ожидание: всё поднялось, значит работает. Кабинет открылся, регистрация прошла, бот Элис создан. Пишу «привет». Индикатор «печатает» крутится и гаснет. Ответа нет.
Захожу в логи — 404, «не найдено». Начинается классика: перепроверяю ключ доступа — верный. Перезапускаю контейнеры — то же самое. Подозреваю сеть внутри стенда — запросы доходят. Подозреваю модель — с другой машины она отвечает. Всё по отдельности работает, а вместе — нет.
Перелом случился, когда я перестал смотреть на ответ и посмотрел на сам запрос, полностью, с адресом. У OpenAI-совместимых API базовый адрес принято указывать вместе с версией — с /v1 на конце, а клиент сам дописывает к нему путь вроде /chat/completions. В настройках рабочего пространства базовый адрес был записан без /v1. Клиент добросовестно склеивал адрес, запрос уходил на несуществующий путь, и шлюз честно отвечал 404.
Почему это вообще стало возможно? Потому что формат базового адреса нигде не был зафиксирован и не проверялся при сохранении: в одних местах его писали с версией, в других — без. Ошибка не кричала, она тихо превращала каждого бота в молчуна.
Что доработали. Базовый адрес шлюза рабочего пространства теперь формируется в одном месте и всегда с /v1, а не задаётся вручную в нескольких. И всё это записали в инструкцию по разворачиванию стенда — как собрать, поднять и где искать интерфейс, — чтобы следующему человеку не пришлось повторять мои полдня.
Урок: когда «всё работает по отдельности, но не вместе», смотрите на стыки. Самые долгие поиски — у самых коротких ошибок.
Какая самая короткая ошибка отняла у вас больше всего времени?
#Элис #ЭлисAI #факапы
О чём пишем
- Архитектура и эксплуатация веб-продуктов
- AI-агенты, RAG и практические контуры
- Кейсы LMS, маркетплейсов и защищённых коммуникаций
- Заметки по Next.js, Node.js, PostgreSQL и realtime