Your AI powered learning assistant

Создание надежных программистов с искусственным интеллектом — Мэтт Покок

Сохранение задач в пределах интеллектуальной зоны и управление ограничениями памяти LLM

Важнейшей концепцией при работе с большими языковыми моделями является различие между умной зоной и немой зоной. По мере добавления токенов в контекстное окно соотношение внимания увеличивается в квадратичном масштабе, что в конечном итоге приводит к принятию нелогичных решений моделью, когда оно достигает примерно 100 тыс. токенов. Чтобы противостоять этому, разработчики должны соответствующим образом распределять задачи, чтобы оставаться в пределах разумной зоны модели. Кроме того, LLM работают как "чистый лист", который постоянно обновляется; поэтому в идеале сеансы следует возвращать к небольшому системному запросу, чтобы избежать чрезмерного использования токенов и обеспечить стабильную производительность.

Использование навыков Grill-Me для согласования и выработки общей концепции дизайна

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

Обобщение согласованных концепций в документах с требованиями к продукту

Как только в ходе обсуждения будет достигнуто общее понимание, информация будет сведена в документ с требованиями к продукту. Этот целевой документ включает в себя формулировку проблемы, предлагаемое решение и подробные истории пользователей, описывающие желаемое поведение. Важно отметить, что PRD остается высокоуровневым обзором конечного состояния, не являясь при этом чрезмерно сложным компилятором. Цель состоит в том, чтобы создать ресурс, проверяемый пользователем, который фиксировал бы решения по внедрению и тестированию, четко определяя то, что остается за рамками текущей задачи.

Определение приоритетов вертикальных срезов для обеспечения сквозной функциональности и получения обратной связи на раннем этапе

Традиционное горизонтальное кодирование, при котором искусственный интеллект создает целые уровни, такие как базы данных, прежде чем перейти к логике, не обеспечивает своевременной обратной связи и приводит к созданию интегрированных систем, которые сложнее тестировать. Чтобы улучшить результаты, лучше разбить PRD на вертикальные фрагменты или "маркеры трассировки", которые охватывают все уровни интеграции от начала до конца. Каждый фрагмент представляет собой съемную, сквозную часть функциональности, которая позволяет выполнить немедленную проверку. Затем эти независимые задачи могут быть объединены в канбан-таблицу, что позволяет распараллеливать работу нескольких агентов над отдельными задачами одновременно.

Внедрение автономных рабочих процессов с помощью TDD и непрерывных автоматизированных проверок

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

Разработка глубоких модулей для повышения тестируемости и глобального управления активами

В кодовых базах, оптимизированных для агентов искусственного интеллекта, не используются "мелкие" модули, которые являются небольшими и взаимосвязанными, поскольку они создают запутанные графики зависимостей, которые трудно отлаживать. Вместо этого разработчикам следует сосредоточиться на создании "глубоких" модулей, которые скрывают сложную функциональность за очень простым и стабильным интерфейсом. Тщательно определяя интерфейс и делегируя внутреннюю реализацию ИИ, люди могут управлять высокоуровневой архитектурой без необходимости вручную просматривать каждую строку кода внутри модуля. Такой структурный подход позволяет сохранить понимание разработчиком системы и при этом эффективно использовать скорость автономных агентов.