Zero-with-Dot (Oleg Żero): Тек... Заметка
Planet Python на русском

Zero-with-Dot (Oleg Żero): Текст в диаграмму для систем ИИ: Разработка DSL, которую LLM понимает правильно

В этом тексте представлен Gnomon — решение проблем коммуникационных сбоев в разработке программного обеспечения, когда разные заинтересованные стороны по-разному интерпретируют описания систем. Автор, обладая разносторонним опытом, подчёркивает, как такие термины, как «fix» в «We are build an agent to fix invoices» приводят к различным пониманиям и неудачам проектов. Рост больших языковых моделей (LLM) усугубляет это, создавая правдоподобные, но потенциально неточные архитектурные чертежи. Gnomon решает эту задачу, предоставляя небольшой язык, gnomocode и компилятор, который проверяет операторы по онтологии. LLM переводит естественный язык в gnomocode, компилятор проверяет его валидность, а результат можно визуализировать, задавать запросы или преобразовать обратно в прозу. Компилятор, написанный на Python, использует Lark, rdflib и pySHACL. Мотивация Gnomon — преодолеть разрыв между устными словами и практическими диаграммами, обеспечивая последовательность и ответственность. Он стремится работать в обоих направлениях: от разговора к модели и от кода/диаграмм к читаемому тексту. Основной фокус статьи — направление вперёд — от беседы к модели. Ключевые требования к Gnomon включают однозначные термины, нативную поддержку современных архитектурных элементов (LLM, память, инструменты), читаемость для людей и моделей, множественные виды с одной модели, контроль версий и возможность выражать неопределённость. Подход развился из попыток более простых методов, таких как прямые запросы LLM или использование структурированных объектов, которые не справлялись со сложностью архитектурных графов и недостающей информации. Существующие обозначения, такие как UML или C4, также оказались недостаточными из-за фиксированных символов, отсутствия операторов «возможно» и ограниченной семантической проверки. Пользовательский язык с компилятором оказался наиболее жизнеспособным решением. Компилятор предоставляет локализованные ошибки и обратную связь LLM для исправления. Ядром Gnomon является его онтология, построенная на существующих RDF-лексиках, таких как SKOS, PROV-O и DPV. Это ядро из 57 терминов и двенадцати модулей определяет отношения и правила, обеспечивая согласованность. Онтология определяет лексикон, сообщения об ошибках компилятора, генерацию прозы и представления диаграмм. Сам Gnomocode разработан для читаемости и точности, используя синтаксис, заимствоваемый из языков Markdown, Python и графовых запросов. Он поддерживает такие понятия, как объявления, назначение свойств, действия и потоки. Важной особенностью является возможность выражать уровень доверия к фактам, что позволяет системе выявлять информацию, требующую дополнительного подтверждения. Компилятор, написанный на Python, использует Lark для парсинга. Его грамматика генерируется непосредственно из онтологии, то есть расширение языка требует изменения данных, а не кода. Такой модульный дизайн позволяет гибко расширять словарный запас без изменения основных правил парсинга.
CdXz5zHNQW_IUf3kDkWHC.png