В последние годы искусственный интеллект уверенно внедряется в различные сферы, и программирование не стало исключением. Многие разработчики уже экспериментируют с генерацией кода при помощи ИИ, однако до сих пор это кажется непривычным и даже спорным инструментом. Недавно известный разработчик и блогер Армин Роначер поделился своим опытом создания первой открытой библиотеки, полностью сгенерированной искусственным интеллектом. В своих записях он подробно рассказал, как он решал проблему парсинга не вполне корректного XML, сгенерированного разными языковыми моделями, и насколько эффективно с этим справилась AI-система. Этот опыт дает ценное представление о реальных возможностях и ограничениях ИИ в области создания программного обеспечения и отражает своеобразный эксперимент, который может быть интересен как профессионалам, так и всем, кто интересуется развитием технологий.
Проблема, с которой столкнулся Армин, была довольно специфичной. Он сравнивал работу различных моделей ИИ по генерации данных в формате XML и JSON. Важно понять, что хотя XML остается востребованным, особенно там, где нужны строгие структуры или старые корпоративные системы, современные языковые модели часто создают данные с ошибками. В отличие от JSON, где ошибки форматирования обычно приводят к немедленному провалу разбора, в XML ошибки часто более скрыты и могут нарушить иерархию данных, что делает анализ и обработку сложным. Для оценки качества выводимых моделей данных нужен был парсер, способный работать с так называемым «грязным» или невалидным XML – то есть файлов, содержащих ошибочные или даже неправильно закрываемые теги, некорректные сущности и прочие проблемы, которые классические XML-парсеры просто не принимают.
Поскольку существующие библиотеки, специализирующиеся на гибком парсинге XML, оказались недостаточно подходящими, было принято решение создать свой универсальный парсер, используя возможности ИИ. Именно тут и начался интересный эксперимент – Армин попросил ИИ с именем Claude разработать библиотеку «с нуля», которая реализовала бы два ключевых метода: stream_parse и tree_parse. Первый – потоковый парсер, который анализирует XML строку и возвращает поток событий, второй – сборщик полноценного дерева элементов на основе событий, позволявший работать как с стандартным модулем Python xml.etree.ElementTree, так и с более мощным lxml или любой другой системой.
Важной задачей при этом было сделать парсер быстрым и максимально устойчивым к ошибкам формата, используя предкомпилированные регулярные выражения. Реализация такой системы в условиях, когда ввод поступает от ИИ, создающего данные с ошибками, требует особого внимания к обработке крайних случаев. Например, если в тексте встречается символ &, сопровождаемый неизвестной сущностью, парсер должен не ломаться и не отбрасывать данные, а оставить их так, как есть. Также некорректно оформленные CDATA-секции и закрывающие теги, шатающиеся по структуре, должны обрабатываться максимально лояльно, чтобы не терять смысл и не срывать весь процесс анализа документа. Армин отмечает, что созданная библиотека получилась достаточно простой и даже немного «грязной» с точки зрения архитектуры.
Несмотря на это, она стала именно тем инструментом, который позволил ему продолжить работу и не застрять из-за проблем с неправильным XML. За 30-45 минут первичного написания при поддержке ИИ и последующем быстром тестировании и исправлениях, библиотека уже выполняла главную задачу – успешно обрабатывала множество некорректных документов. Помимо базовой логики парсера, ИИ помог создать обширный набор тестов, в который вошли тысячи строк кода, что является важным шагом к уверенности в надежности решения. Также он сгенерировал и настроил всю инфраструктуру проекта: подготовил пакет Python для публикации на PyPI, настроил непрерывную интеграцию, даже удаленно управлял браузером для регистрации доверенного издателя. Такой уровень автоматизации предоставляет новый взгляд на создание и сопровождение открытого программного обеспечения, в котором часть рутинных задач берет на себя ИИ.
Касательно оформления и маркетинговой части, ИИ разработал логотип проекта и адаптировал его к различным темам оформления (светлому и тёмному режиму), что также свидетельствует о комплексном подходе, который стал возможен благодаря современным генеративным моделям. Кроме того, искусственный интеллект подготовил README-файл и набросал лог изменений, что облегчает восприятие и внедрение решения потенциальными пользователями. Несмотря на успехи, Армин честно признает, что полученная библиотека далеко не идеальна и содержит баги, которые пока не выявлены. Это подчеркивает актуальность проблемы качества кода, создаваемого ИИ, особенно когда он выступает в роли основного автора. При этом данная работа – превосходный пример практического применения ИИ в ускорении разработки и устранении блокеров, когда время и ресурсы ограничены.
Армин также затрагивает юридические и этические аспекты лицензирования таких произведений. Наложение лицензии Apache 2.0 на проект, где доминирует участие ИИ, вызывает вопросы об авторских правах и статусе кода, созданного без существенного вмешательства человека. Такие правовые коллизии ещё предстоит решить сообществу разработчиков, юристам и законодателям. Для всех, кто заинтересован в современном программировании и возможностях искусственного интеллекта, история с созданием этой библиотеки – наглядный кейс, который демонстрирует, что технологии сегодня способны не просто помогать, а фактически брать на себя основные задачи в разработке, ускоряя процесс и позволяя сосредоточиться на более творческих аспектах.
Тем не менее требуется понимание ограничений и готовность к тому, что код, сгенерированный ИИ, нуждается в дополнительной проверке и доработках. Этот опыт наглядно иллюстрирует текущий уровень развития AI-технологий и их потенциал для софта с открытым исходным кодом, а также задаёт вопросы о будущем программирования. В ближайшие годы можно ожидать, что искусственный интеллект станет неотъемлемой частью повседневной жизни разработчиков, выступая в роли ассистента или даже полноценного соавтора проектов. Армин Роначер и его экспериментальный проект показывают, что такие идеи постепенно переходят из теории в практику, открывая новые горизонты для всего сообщества.