Размышления об использовании Devin после месяца выполнения 20+ задач с помощью Devin

Новости ИИОбновлено 7 месяцев назад Круг обмена ИИ
9.5K 00

В марте 2024 года новая компания, занимающаяся разработкой искусственного интеллекта, вышла на рынок с впечатляющей поддержкой: серия А стоимостью 21 миллион долларов, возглавляемая фондом Founders Fund и поддержанная такими лидерами индустрии, как братья Коллисон, Элад Гил и другими светилами технологий. Команда, стоящая за компанией? Золотые медалисты Международной олимпиады по информатике - они из тех людей, которые могут решать такие проблемы программирования, которые большинство из нас даже не в состоянии постичь. Их продукт, Devin, обещает стать полностью автономным инженером-программистом, который может общаться с вами как с коллегой-человеком, способным делать все - от изучения новых технологий и отладки зрелых кодовых баз до развертывания полноценных приложений и даже обучения моделей искусственного интеллекта.

Ранние демонстрации были убедительными. Показано, как Девин самостоятельно выполнил задание на Upwork, установив и запустив проект PyTorch без участия человека. Компания утверждает, что Девин смог решить 13,86% реальных задач GitHub из конца в конец в бенчмарке SWE-bench - примерно в 3 раза лучше, чем предыдущая система. Изначально она была доступна лишь небольшой группе пользователей, что вызвало восторженные твиты о том, что она произведет революцию в разработке программного обеспечения.

действовать как Ответ.ИИ Будучи частью команды, которая часто пробует инструменты для разработки ИИ, мы почувствовали, что в Devin есть что-то необычное. Если он обеспечит хотя бы половину того, что обещает, то сможет изменить наш подход к работе. Но при всем энтузиазме в Twitter мы не смогли найти много подробных отчетов о том, как люди на самом деле его используют. Поэтому мы решили тщательно протестировать его на множестве реальных задач. Вот наша история - тщательная, реальная попытка поработать с одним из самых популярных продуктов ИИ 2024 года.

 

Что такое Девин?

Уникальность Devin заключается в его инфраструктуре. В отличие от типичных ИИ-помощников, Девин запускает и запускает свою собственную вычислительную среду через Slack. Когда вы разговариваете с Devin, вы разговариваете с ИИ, который имеет доступ к полноценной вычислительной среде - с веб-браузером, редактором кода и оболочкой, - который может устанавливать зависимости, читать документацию и даже предварительно просматривать создаваемые им веб-приложения. Вот скриншот одного из способов запуска Devin для выполнения задачи:

使用Devin一个月执行20多个任务后,关于使用Devin的思考

Один из способов начать выполнение задания Девином через Slack

 

Этот опыт разработан таким образом, чтобы вы чувствовали себя так, будто общаетесь с коллегой. Вы описываете, что вам нужно, а затем Девин приступает к работе. Через Slack вы можете наблюдать, как он обдумывает проблемы, запрашивает учетные данные, когда это необходимо, и делится ссылками на готовые работы. За кулисами он работает в контейнере Docker, что обеспечивает ему изоляцию, необходимую для безопасных экспериментов и защиты вашей системы. Devin также предоставляет веб-интерфейс, который позволяет вам получить доступ к его окружению и наблюдать за его работой в режиме реального времени, используя IDE, веб-браузер и многое другое. Ниже приведен скриншот веб-интерфейса:

使用Devin一个月执行20多个任务后,关于使用Devin的思考

 

Ранний успех

Наша первая задача была простой, но верной: перенести данные из Понятие База данных была извлечена в Google Sheets. Девин решил эту проблему с удивительной компетентностью. Он перешел к документации по API Notion, понял, что ему нужно, и провел меня через процесс настройки необходимых учетных данных в Google Cloud Console. Вместо того чтобы просто выдать команды API, он провел меня через каждое меню и нажатие кнопки - это сэкономило мне время, которое обычно требовалось на утомительный поиск документации. Весь процесс занял около часа (но всего несколько минут общения с человеком). В конце Девин поделился ссылкой на прекрасно отформатированный лист Google, содержащий наши данные.

Код, который он генерирует, немного длинный, но он работает. Это похоже на проблеск будущего - ИИ, способный справиться с задачами "склеивания кода", которые отнимают так много времени у разработчиков. Джоно вместе с Девином успешно создал планетарный трекер, чтобы опровергнуть утверждения об историческом расположении Юпитера и Сатурна. Особенно впечатляет то, что он сделал это полностью со своего мобильного телефона, а Девин взял на себя всю тяжелую работу по настройке среды и написанию кода.

 

Расширяя наши тесты

Основываясь на первых успехах, мы использовали асинхронные возможности Devin. Мы представляли, как Девин будет писать документацию во время совещаний или отлаживать проблемы, пока мы сосредоточимся на разработке. Но по мере того как мы расширяли масштабы тестирования, появились трещины. Кажущиеся простыми задачи часто занимали дни, а не часы, и Девин заходил в технические тупики или создавал решения, которые были слишком сложными для использования.

Еще большее беспокойство вызывает склонность Девина добиваться выполнения практически невыполнимых задач. Когда его попросили развернуть несколько приложений в одной системе развертывания Railway (функция, не поддерживаемая Railway), вместо того чтобы признать это ограничение, Девин потратил больше дня, пробуя различные подходы и придумывая несуществующие функции.

Больше всего расстраивают не сами неудачи - у всех инструментов есть ограничения, - а то, сколько времени мы тратим, пытаясь спасти эти попытки.

 

Узнайте, что пошло не так

В начале нашего пути мы были в замешательстве. Мы видели, что Devin способен грамотно интегрировать API и создавать функциональные приложения, но с трудом справлялся с, казалось бы, более простыми задачами. Было ли это просто невезением? Может, мы неправильно его использовали?

В течение месяца мы систематически документировали свои попытки по следующим категориям:

  1. Создание нового проекта с нуля
  2. Реализация исследовательского мандата
  3. Анализ и модификация существующих проектов

Результаты оказались неутешительными. Из 20 заданий мы получили 14 неудачных, 3 успешных (включая наши первоначальные 2) и 3 неубедительных результата. Что еще более показательно, мы не смогли выявить никакой закономерности, чтобы предсказать, какие задачи будут успешными. Задачи, похожие на наши ранние успехи, проваливались неожиданным образом.Более подробная информация об этих задачах представлена в приложении ниже. Ниже приводится краткое описание нашего опыта по каждой категории в процессе работы:

1. Создание нового проекта с нуля

Эта категория должна быть сильной стороной Девина. В конце концов, в демо-ролике компании показано, как он автономно выполняет задания на Upwork, а наши собственные первые успехи говорят о том, что он может справиться с совершенно новыми разработками. Но реальность оказалась сложнее.

Возьмем, к примеру, нашу попытку интегрироваться с платформой наблюдения Large Language Model (LLM) под названием Braintrust. Задача была ясна: сгенерировать синтетические данные и загрузить их. Вместо того чтобы предложить сфокусированное и четкое решение, Девин создал то, что можно описать только как суп из кода - множество уровней абстракции, которые излишне усложняли простые операции. В итоге мы отказались от попыток Девина и использовали Курсор Создание интеграции шаг за шагом оказалось более эффективным. Аналогично, когда его попросили создать интеграцию между нашим ИИ-блокнотом и Spiral.computer, Девин создал то, что один из членов команды описал как "код-спагетти, который было сложнее читать, чем код, который я написал с нуля". Несмотря на доступ к документации по обеим системам, Девин, казалось, чрезмерно усложнил каждый аспект интеграции.

Пожалуй, наиболее показательной является наша попытка веб-ползания. Мы попросили Девина отследить ссылки на Google Scholar и просмотреть 25 последних работ авторов - простая задача для такого инструмента, как Playwright. Учитывая способности Девина к просмотру веб-страниц и написанию кода, эта задача должна была быть особенно простой. Но вместо этого он застрял в бесконечном цикле попыток разобрать HTML и не мог выбраться из своего собственного пути.

2. исследовательский мандат

Если Devin с трудом справляется с конкретными задачами по кодированию, будет ли он лучше справляться с исследовательскими задачами? Результаты в лучшем случае неоднозначны. Хотя он может справиться с поиском основных документов (как мы видели в ранней интеграции Notion/Google Sheets), более сложные исследовательские задачи оказались сложными.

Когда мы попросили Девина просмотреть сводки транскрипции с точными временными отметками (конкретная техническая проблема, с которой мы столкнулись), он просто повторил поверхностно относящуюся к делу техническую информацию, а не занялся решением основной проблемы. Вместо того чтобы изучить возможные решения или выявить ключевые технические проблемы, он предоставил общие примеры кода, которые не решали основную проблему. Даже когда Девин, казалось бы, добивался прогресса, результаты обычно оказывались не такими, какими казались. Например, когда его попросили создать минимальную тему DaisyUI в качестве примера, он выдал решение, которое, казалось, работает. Однако при ближайшем рассмотрении мы обнаружили, что тема на самом деле ничего не делает - цвета, которые мы видели, принадлежали стандартной теме, а не нашим настройкам.

3. анализ и модификация существующего кода

Пожалуй, больше всего Девина беспокоят неудачи при работе с существующими кодовыми базами. Эти задачи требуют понимания контекста и поддержания согласованности с установленными шаблонами - навыки, которые должны лежать в основе способностей инженера-программиста ИИ.

Особенно наглядными были наши попытки заставить Девина работать с проектами nbdev. Когда его попросили перенести Python-проект на nbdev, Девин не смог разобраться с базовой настройкой nbdev, даже когда мы предоставили ему исчерпывающую документацию. Еще большее недоумение вызвал способ работы с блокнотами - вместо того чтобы редактировать их напрямую, он создавал Python-скрипты для их изменения, добавляя ненужную сложность к простой задаче. Хотя иногда он дает полезные комментарии или идеи, фактический код, который он генерирует, постоянно вызывает проблемы.

Проверка безопасности выявила аналогичные проблемы. Когда мы попросили Devin оценить репозиторий GitHub (менее 700 строк кода) на предмет уязвимостей безопасности, он переборщил, отметив множество ложных срабатываний и подтасовав несуществующие проблемы. Вероятно, с подобным анализом лучше всего справится целевой вызов Large Language Model (LLM), а не более сложный подход Devin.

Эта закономерность сохранялась и во время отладки. Когда мы выясняли, почему переадресация ключей SSH не работает в сценарии настройки, Девин сосредоточился на самом сценарии и не подумал о том, что проблема может крыться где-то еще. Этот эффект "подглядывания" не помог нам обнаружить истинную первопричину. Аналогично, когда нас попросили добавить проверку конфликта между вводимыми пользователем данными и значениями базы данных, один из членов команды часами изучал попытки Девина, прежде чем сдаться и написать функцию самостоятельно примерно за 90 минут.

 

Размышления в команде

После месяца интенсивного тестирования наша команда собралась вместе, чтобы разобраться в своих впечатлениях. Эти цитаты лучше всего выражают наши чувства:

Задачи, которые он может решить, настолько малы и четко определены, что я лучше сделаю их по-своему и быстрее. Я думаю, что он, скорее всего, не справится с более крупными, экономящими время задачами, которые я могу увидеть. В результате у меня нет реальных случаев использования, когда я действительно хотел бы его использовать.- Джоно Уитакер

Поначалу я был очень рад, потому что все было так близко, и я чувствовал, что могу что-то подправить. Затем я начал разочаровываться, поскольку приходилось менять все больше и больше, и в конце концов пришел к выводу, что лучше делать все постепенно, с нуля.- Исаак Флат

У Девина были трудности с использованием внутренних инструментов AnswerAI, что, помимо прочего, затрудняло работу с ним. Несмотря на обширную документацию и примеры, которые мы предоставили Девину, эта проблема все еще остается. Я обнаружил, что это не так с инструментами вроде Cursor, где больше возможностей направить все в нужное русло более постепенным способом.- Хамель Хусайн

По сравнению с Devin, мы обнаружили, что управляемые разработчиками процессы (такие как Cursor) позволяют избежать большинства проблем, с которыми мы столкнулись в Devin.

вынести вердикт

Сотрудничество с Devin демонстрирует видение развития автономного ИИ. Пользовательский опыт превосходен - общение через Slack, наблюдение за асинхронной работой, настройка окружения и работа с зависимостями. Когда он работает, это впечатляет.

Но в этом и кроется проблема - это редко срабатывает. Из 20 заданий, которые мы пытались выполнить, 14 оказались неудачными, 3 - с неопределенным результатом и только 3 - успешными. Еще большее беспокойство вызывала наша неспособность предсказать, какие задачи окажутся успешными. Даже те задания, которые были похожи на наши ранние успехи, проваливались сложными и трудоемкими способами. То, что казалось многообещающей самостоятельностью, превратилось в бремя - Девин тратил дни на поиски невозможных решений вместо того, чтобы выявлять основные препятствия.

Это отражает закономерность, которую мы неоднократно наблюдали в инструментах искусственного интеллекта. Ажиотаж в социальных сетях и оценка стоимости компаний имеют мало общего с реальной полезностью. Самые надежные сигналы мы находим в подробных рассказах пользователей о продуктах и услугах. Пока что мы придерживаемся инструментов, которые позволяют нам управлять процессом разработки, предоставляя при этом помощь ИИ.

 

Приложение: Попытка миссии Девина

В следующей таблице перечислены проекты, которые мы давали Девину, сгруппированные по следующим темам: (1) создание новых проектов, (2) исследования, (3) анализ существующих кодовых баз и (4) модификация кодовых баз.

1. создание новых проектов

Название проектаположение делописанияпереоценка
планетарный трекеруспехиЯ хотел бы развенчать некоторые утверждения об историческом положении Юпитера и Сатурна.Девин проделал отличную работу. Я разговаривал с Девином через Slack на своем телефоне, и все было готово.
Перенос данных из Notion в Google SheetsуспехиЯ попросил Девина программно извлечь информацию из документа Notion в лист Google. Это был первый проект, который я выполнил с помощью Devin, и он был хорошо сделан; Devin сам прочитал документацию по Notion и Google API; Devin также направил меня к консоли Google Cloud и снабдил инструкциями по различным меню, на которые нужно было нажимать, что заняло бы у меня немало времени! В итоге я получил разумный Python-скрипт, который выполнил поставленную задачу.Это было мое первое взаимодействие с Девином, и он действовал именно так, как я хотел, что было для меня новым опытом. На данный момент я в восторге от Девина.
Развертывание нескольких приложений на железной дорогебезрезультатноЯ попросил Девина развернуть несколько приложений в единую систему Railway, чтобы разные приложения могли использовать одну и ту же локальную базу данных для тестирования.Задание оказалось плохо сформулированным, так как сделать это было практически невозможно, если я правильно его понял. Тем не менее, Девин взялся за дело и попытался его выполнить, при этом подтасовав часть контента по взаимодействию с Railway.
Создайте синтетические данные и загрузите их в Braintrustне удается (например, эксперименты)Я попросил Девина создать синтетические данные для платформы наблюдаемости больших языковых моделей (LLM) под названием Braintrust, которую я хотел протестировать.Девин создал код, который был слишком сложным, трудным для понимания, и запутался в попытках исправить ошибки. В итоге мы решили итерировать этот шаг с помощью Cursor.
Создание интеграции между двумя приложениямине удается (например, эксперименты)Я попросил Девина создать интеграцию между моим ИИ-блокнотом, Circleback, и Spiral.computer с указателями на каждый документ.Я получал очень плохой код в стиле спагетти, который было сложнее читать, чем код, который я пытался написать с нуля. Поэтому я решил больше не тратить время на использование Devin для этой конкретной задачи.
Поиск статей в Интернете по ссылкам Google Scholarне удается (например, эксперименты)Я попросил Девина использовать playwright, чтобы программно просмотреть последние 25 статей авторов в Google Scholar и пропустить конкретный документ, если он попадает под платный вал.Девин провалился в кроличью нору, пытаясь разобрать HTML, из которой никак не может выбраться. Он застревает и замирает.
Создание минимального примера приложения для пакетной загрузки HTMXне удается (например, эксперименты)Я попросил Девина прочитать пример массового редактирования на странице документации HTMX и использовать его и псевдосерверный код для создания минимальной FastHTML-версии примера для FastHTML-галереи.Пример не работает и не является минимальным. Девин использует объекты, которые не существуют в объекте запроса, и добавляет много ненужных вещей, таких как тосты (которые также не работают) и встроенные стили css.
Создайте тему DaisyUI, соответствующую теме FrankenUI.не удается (например, эксперименты)Я попросил Девина создать темы DaisyUI и highlight.js, чтобы они совпадали с темой frankenui и могли использоваться в одном приложении!Девин сопоставил уже существующие темы daisyUI с темами frankenui, но во многих случаях они не очень хорошо сочетались. Он также внес много изменений в код, которые я не мог понять, и в итоге я не использовал ни один из них, потому что был слишком озадачен, чтобы понять, что с ним делать.

2. Исследования по внедрению

Название проектаположение делописанияпереоценка
Исследование того, как сделать робота РаздорауспехиЯ попросил Девина создать Discord-бота на Python, который бы обобщал ежедневные сообщения и рассылал письма. Я также сказал ему использовать Claudette для этого, когда это возможно. Наконец, я попросил его записать результаты в блокнот с небольшими фрагментами кода, которые он мог бы использовать для тестирования.В качестве промежуточного шага при создании блокнота Devin генерирует заметки об исследованиях в виде файлов в формате markdown, чего я от него не требовал. Однако полезно увидеть пошаговый план того, как этого добиться. Код, который он предоставляет в блокноте, не является 100% правильным, но как псевдокод он помогает мне понять, как склеить все вместе. Учитывая, что это скорее исследовательский проект и я просто хочу узнать общую идею, я считаю его успешным.
Изучение краткого содержания стенограммы с точными временными отметкамине удается (например, эксперименты)Одна из проблем, с которой я сталкиваюсь при обобщении стенограмм, заключается в том, что я хочу иметь точную временную метку, связанную с заметками, чтобы использовать ее для резюме глав на YouTube и т. п. Точнее, получить точные временные метки из стенограммы не проблема, но сложно соотнести временные метки с конспектами, потому что метки часто путаются. Таким образом, это похоже на исследовательскую задачу по разработке ИИ.Девин повторяет то, что имеет отношение к моей проблеме, но не делает хорошей работы по исследованию или попытке решить проблему, которую я пытаюсь решить, и дает мне бесполезный код и примеры.
Создание минимальной темы DaisyUI в качестве примеране удается (например, эксперименты)Я попросил Девина создать минимальную тему DaisyUI в качестве примера. Моей целью было начать с отправной точки, так как просьба сделать это более полным способом была безуспешной.Девин проигнорировал просьбы сделать его приложением FastHTML, и потребовалось некоторое общение в обратном направлении, чтобы заставить его пойти по этому пути. В конце концов, он создал приложение, которое, похоже, работало с разными типами кнопок. Хотя ссылка, которую он дал, выглядела хорошо, как только я попытался изменить тему, стало ясно, что тема ничего не делает. Остальные цвета в приложении - из темы по умолчанию. Это не очень полезная отправная точка.

3. анализ существующего кода

Название проектаположение делописанияпереоценка
Проведите анализ безопасности кодовой базыбезрезультатноДля этой задачи я указал Девину на репозиторий GitHub и попросил проверить его на наличие уязвимостей в системе безопасности. В репозитории менее 700 строк кода. Я попросил Девина документировать свои комментарии в файле в формате markdown и при необходимости предоставить примеры кода.Devin действительно обнаружил несколько дыр в системе безопасности, но он проявил чрезмерное усердие и подделал некоторые проблемы, которых не существовало. Возможно, это не идеальная задача для Devin, так как она работает так же хорошо с помощью одного вызова моей Большой языковой модели (LLM).
Запросы на публикацию (Pull requests) для анализа записей в блоге и предложения улучшенийне удается (например, эксперименты)Я попросил Девина просмотреть запись в блоге с запросом на внесение изменений. В конечном итоге Devin не справился, потому что не смог понять, как работает Quarto, генератор статических сайтов, который я использовал.Я думаю, что эта задача была бы успешно решена в таком инструменте, как Cursor. Похоже, что Devin не очень хорошо усвоил структуру проекта и существующую документацию, поэтому он испортил такие вещи, как преамбула и другие соглашения, необходимые для правильного редактирования записи в блоге.
Анализ приложений и выявление потенциальных областей для улучшенияне удается (например, эксперименты)Я попросил Девина взглянуть на приложение для управления временем, о котором я упоминал ранее, и поставил перед ним задачу предложить какие-либо улучшения.Советы, которые он предлагает, не имеют смысла.
Отладка причин, по которым переадресация ключей SSH не работает в сценариях настройкибезрезультатноЯ попросил Девина выяснить, почему переадресация ключей SSH не работает, когда я настраиваю ее с помощью скрипта на сервере.Проблема в конечном итоге не имела ничего общего со скриптом, который я считал проблемой, но Девин ни разу не намекнул, что проблема может быть в другом месте. Это не помогло, потому что не помогло мне выяснить первопричину.

4. модификация существующих проектов

Название проектаположение делописанияпереоценка
Внесение изменений в проект nbdevне удается (например, эксперименты)У меня есть простое приложение для учета рабочего времени, созданное с помощью FastHTML и nbdev, которое я хотел бы интегрировать с Apple Shortcuts через маршрутизацию API.Даже несмотря на впечатляющий прогресс, Devin не смог успешно работать в этой среде. Я заметил одну странность: Девин создавал скрипты Python для редактирования блокнотов, а не пытался редактировать сами блокноты. Тем не менее, Devin дал мне несколько полезных комментариев и идей, которые я не учел. Однако код, который он пытался написать, не имел смысла. В итоге я использовал чужой шаблон вместо предложенного Девином.
Перенос проектов Python на nbdevне удается (например, эксперименты)Я попросил Девина перенести проект на nbdev [подробности опускаем для краткости].Он запутался и не смог разобраться с базовой настройкой nbdev. Похоже, что он не очень хорошо читал документацию по nbdev.
Интеграция пакетов стилей в FastHTMLне удается (например, эксперименты)Я попросил Девина интегрировать MonsterUI в одно из моих приложений.Девин не мог понять, как работать с репозиторием nbdev.
Добавьте функциональность для проверки конфликтов между вводимыми пользователем данными и базой данныхне удается (например, эксперименты)Я попросил Девина добавить в приложение функцию сравнения введенных пользователем значений со значениями из ранее запущенной базы данных и предоставить пользовательский интерфейс в случае их несовпадения.Я несколько часов медленно разбирался с тем, как заставить его работать правильно, прежде чем сдался. Я написал функцию самостоятельно примерно за 90 минут.
Создайте контекстные файлы больших языковых моделей (LLM), используя содержимое каждого примера галереи fasthtml.не удается (например, эксперименты)Я попросил Девина создать текстовые файлы Large Language Models (LLMs) для галереи fasthtml.Меня порадовало, что он создает отдельный файл с разметкой для каждого примера, а затем сначала пытается обобщить их в контекстном файле LLMs. Я не думал об этом, и поначалу казалось, что все уже готово. Когда я загрузил его и начал копаться, я заметил, что мне что-то не нравится: LLMs были отформатированы неправильно. Даже когда я дал ему информацию об использовании XML-тегов для разделения примеров, он их не использовал. Он добавил и исправил определённую версию пакета markdown в качестве зависимости и использовал эту версию вместо пакета markdown2, который уже использовался и уже был зависимостью. Он делает кучу вещей для pytest и добавляет зависимость, хотя проект не использует pytest.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...