Mermaid/Django, rotation по пулу моделей
Одна модель может вернуть Mermaid-код без валидной головы, добавить пояснение вместо диаграммы или завершить запрос ошибкой провайдера.
Повтор того же запроса через тот же model_id сохраняет тот же маршрут. Django хранит упорядоченный пул text и code моделей. После неудачной попытки pick_next_model_after выбирает следующий model_id. Новый ответ проходит extract_fenced, sanitize_mermaid, нормализацию и looks_like_mermaid.
Пул кешируется. Успешный ответ содержит фактически использованную модель и отметку fallback_used. После неудачи всего пула сервер возвращает ошибку.
Статья на Хабр Витрина проекта: AI Chat github Проект: AI Chat Stepik: LLM-Chat + Mermaid + ЮKassa
#mermaid #django #python #nextjs #typescript #llm #openrouter #modelrouting #fallback #fullstack