Mermaid/Django, fenced-output от LLM
LLM возвращает Mermaid-код внутри блока ```mermaid. Перед блоком может стоять пояснение. После блока может остаться текст. Внутри встречаются Markdown, комментарии с # и строки до первой команды flowchart, sequenceDiagram или другой валидной головы Mermaid.
Backend сначала извлекает содержимое fenced-блока. Потом ищет первую строку с поддерживаемым типом диаграммы. Строки до нее удаляются. Комментарии переводятся из # в %%. Ответ без валидной головы получает статус 503.
Браузер получает очищенный код. Перед рендером Mermaid выполняет parse. Код с синтаксической ошибкой не передается в render.
Статья на Хабр Проект: AI Chat Stepik: LLM-Chat + Mermaid + ЮKassa
#mermaid #django #nextjs #python #typescript #llm #openrouter #ai #svg #fullstack