Исследование представляет BugScope — систему из двух LLM-агентов, которая имитирует работу опытного программиста по поиску ошибок в коде. Система сначала учится на нескольких примерах кода (с ошибками и без), чтобы понять суть конкретного типа бага, а затем автоматически формирует промпт для поиска похожих уязвимостей в больших проектах.
Ключевой результат: Автоматическая генерация специализированных промптов, основанных на примерах и релевантном контексте, позволяет находить сложные и неочевидные баги в коде значительно эффективнее, чем существующие коммерческие инструменты и другие LLM-подходы.
Суть метода BugScope — в разделении сложной задачи поиска багов на два этапа, которые выполняют два разных "умных" агента. Это похоже на то, как работают два специалиста в команде.
Агент №1: "Сыщик" (Context Retrieval Agent). Его задача — найти все релевантные фрагменты кода, связанные с потенциальной ошибкой. Он не пытается сразу найти баг. Вместо этого, на основе примеров, он учится определять "подозрительные места" (например, операции деления или работы с памятью) и, как детектив, собирает все "улики" — связанные с этим местом участки кода, даже если они находятся в других функциях или файлах. В итоге он готовит компактное "дело" — небольшой, самодостаточный фрагмент кода, где может скрываться ошибка.
Агент №2: "Эксперт" (Bug Detection Agent). Этот агент получает "дело" от "Сыщика". Его задача — провести глубокий анализ. Он тоже учится на тех же первоначальных примерах и создает для себя очень подробную инструкцию (detection prompt), в которой описана логика поиска конкретного бага. Используя эту инструкцию, он изучает предоставленный код и выносит вердикт: есть здесь ошибка или нет. Для надежности, он также использует дополнительную LLM-проверку, чтобы отсеять ложные срабатывания ("галлюцинации").
Главный вывод для пользователя: Вместо того чтобы сваливать на LLM одну гигантскую и нечеткую задачу, гораздо эффективнее разбить ее на две части: сначала сбор и подготовка релевантной информации, а затем ее целенаправленный анализ на основе четких примеров.
Прямая применимость: Практически нулевая. Пользователь не может реализовать автоматический синтаксический анализ кода, построение графа вызовов и "слайсинг" программ. Метод требует серьезной программной инфраструктуры.
Концептуальная ценность: Очень высокая. Исследование раскрывает несколько мощных идей:
- Сила примеров (Few-shot learning): Модель способна выучить сложный паттерн всего по нескольким примерам "правильного" и "неправильного" поведения.
- Контекст — король: Качество ответа напрямую зависит от качества и полноты предоставленного контекста. Первый агент, по сути, занимается созданием идеального контекста для второго. Это аналог продвинутого RAG (Retrieval-Augmented Generation).
- Декомпозиция задачи: Разделение одной сложной задачи на две более простые (поиск и анализ) — фундаментальный принцип эффективного промптинга.
- Самовалидация: Идея использовать LLM для проверки собственных же выводов — отличный способ повысить надежность и снизить количество "галлюцинаций".
Потенциал для адаптации: Огромный. Пользователь может имитировать рабочий процесс BugScope вручную для решения своих задач.
- Механизм адаптации:
- Станьте "Сыщиком": Перед тем как писать основной промпт, самостоятельно соберите всю необходимую информацию (тексты, данные, факты) по вашей задаче.
- Станьте "Экспертом": Напишите промпт, в который вы включите:
- Роль (например, "Ты — опытный маркетолог").
- Собранный контекст из шага 1.
- Несколько четких примеров того, что вы хотите получить (few-shot).
- Четкую задачу для анализа нового фрагмента информации.
- Добавьте "Валидатора": В конце промпта попросите модель проверить свой ответ на соответствие определенным критериям.
- Механизм адаптации:
Представим, что вам нужно проанализировать отзывы клиентов на новый продукт и выделить ключевые проблемы.
Ты — опытный аналитик клиентского опыта. Твоя задача — анализировать отзывы и выявлять конструктивную критику, связанную с функционалом продукта. Игнорируй общие фразы и эмоциональные оценки, фокусируйся на конкретных проблемах.
**# Контекст**
Продукт: мобильное приложение для планирования бюджета "Копилка".
Ключевые функции: добавление расходов, создание категорий, просмотр статистики, синхронизация между устройствами.
**# Примеры анализа**
**Пример 1 (Хороший анализ):**
* **Отзыв:** "Все нравится, но почему-то после последнего обновления перестала работать синхронизация с планшетом. Приходится все вбивать дважды."
* **Твой анализ:**
* **Проблема:** Сбой синхронизации между устройствами.
* **Категория:** Технический баг.
* **Критичность:** Высокая.
**Пример 2 (Плохой анализ, который нужно избегать):**
* **Отзыв:** "Приложение ужасное, ничего не работает, не советую!"
* **Твой анализ:**
* **Проблема:** Неконструктивная критика, нет конкретики.
* **Категория:** Эмоциональная оценка.
* **Критичность:** Низкая.
---
**# Новая задача для анализа**
Проанализируй следующий отзыв по той же схеме. Предоставь ответ в формате: Проблема, Категория, Критичность.
**Отзыв для анализа:**
"В целом неплохо, но очень неудобно, что нельзя создать свою подкатегорию расходов. Например, в 'Транспорте' я хочу разделить 'Такси' и 'Общественный транспорт', а приложение не дает. Приходится все валить в одну кучу."
**# Валидация**
После ответа проверь, что твой анализ основан на конкретной функции продукта и не является твоим предположением.
Этот промпт работает, потому что он вручную воспроизводит логику BugScope:
- Роль и задача: Мы задаем четкую роль ("аналитик клиентского опыта") и цель, что настраивает модель на нужный лад.
- Контекст: Раздел
# Контекстпредоставляет модели необходимую информацию о продукте. Это ручной аналог работы "Сыщика" (Context Retrieval Agent), который собирает релевантную информацию. - Few-Shot Learning: Раздел
# Примеры анализаобучает модель на конкретных примерах, показывая, что такое "хороший" и "плохой" анализ. Это имитация работы "Эксперта" (Bug Detection Agent), который учится на примерах. - Четкая задача: Раздел
# Новая задача для анализаставит конкретную, сфокусированную задачу, а не просит "проанализировать все отзывы". - Валидация: Последняя строка заставляет модель перепроверить свой вывод, что повышает его точность и снижает риск "галлюцинаций". Это аналог валидационного шага в BugScope.
Задача: помочь HR-специалисту быстро оценить, подходит ли кандидат на должность "Контент-менеджер".
Ты — опытный HR-менеджер, специализирующийся на подборе креативных специалистов. Твоя задача — оценить сопроводительное письмо кандидата на соответствие ключевым требованиям вакансии.
**# Контекст: Требования вакансии "Контент-менеджер"**
* Опыт работы с соцсетями (VK, Telegram) от 2 лет.
* Наличие портфолио с примерами текстов.
* Умение работать с графическими редакторами (Figma/Canva).
* Проактивность и генерация идей.
**# Примеры оценки**
**Пример 1 (Подходящий кандидат):**
* **Фрагмент письма:** "Веду телеграм-канал о путешествиях (ссылка на портфолио), самостоятельно готовлю для него тексты и визуалы в Figma. В прошлом месяце предложила и реализовала успешную коллаборацию с другим каналом, что привело к росту подписчиков на 20%."
* **Твоя оценка:**
* **Соответствие:** Высокое.
* **Обоснование:** Упомянуты Telegram, Figma, есть портфолио и пример проактивности (коллаборация).
**Пример 2 (Неподходящий кандидат):**
* **Фрагмент письма:** "Я ответственный и коммуникабельный, быстро учусь. Хочу развиваться в сфере SMM. Готов выполнять любые задачи."
* **Твоя оценка:**
* **Соответствие:** Низкое.
* **Обоснование:** Нет упоминания конкретного опыта, соцсетей, инструментов или портфолио. Только общие фразы.
---
**# Новая задача для оценки**
Оцени сопроводительное письмо ниже по той же схеме. Дай ответ в формате: Соответствие, Обоснование.
**Письмо для оценки:**
"Добрый день! Меня заинтересовала ваша вакансия. Я более трех лет занимаюсь ведением коммерческих аккаунтов в VK. Все посты, от текста до дизайна в Canva, готовлю сама. Ссылку на примеры моих работ прикрепила к резюме. Люблю придумывать новые форматы контента."
**# Валидация**
Убедись, что твоя оценка основана только на информации из письма и ее соответствии требованиям из контекста.
Этот промпт эффективен по тем же структурным причинам, что и предыдущий, полностью отражая адаптированную методологию BugScope:
- Декомпозиция задачи: Вместо общей просьбы "оцени кандидата", задача разбита на предоставление контекста (требования вакансии) и анализ (оценка письма).
- Ручной RAG (сбор контекста): Секция
# Контекст— это аналог работы "Сыщика". Мы вручную предоставляем модели всю необходимую информацию (требования), чтобы ей не пришлось их угадывать. - Обучение на примерах (Few-shot): Секция
# Примеры оценкиработает как "Эксперт", который учится на кейсах. Модель видит, какая информация считается релевантной (упоминание инструментов, портфолио), а какая — нет ("вода"). - Сфокусированная генерация и валидация: Модели дается одно конкретное письмо для анализа и четкая инструкция по самопроверке. Это гарантирует, что ответ будет по существу и с меньшей вероятностью будет содержать додуманную информацию.
Основные критерии оценки
- A. Релевантность техникам промтинга: Низкая. Исследование описывает автоматизированную систему, которая сама создает промпты для анализа кода, а не учит пользователя, как их писать.
- B. Улучшение качества диалоговых ответов: Низкое. Фокус на узкоспециализированной задаче (поиск багов в коде), а не на улучшении общих диалоговых сценариев.
- C. Прямая практическая применимость: Очень низкая. Пользователь не может воспроизвести метод без специальных инструментов, навыков программирования и доступа к сложным системам анализа кода (AST-парсеры, анализ графа вызовов).
- D. Концептуальная ценность: Высокая. Несмотря на узкую специализацию, исследование блестяще иллюстрирует универсальные принципы, которые продвинутый пользователь может адаптировать: важность few-shot learning, ценность предварительного сбора релевантного контекста (аналог RAG) и пользу декомпозиции задачи.
- E. Новая полезная практика (кластеры): Концептуально работа попадает в кластеры #1 (Техники формулирования), #6 (Контекст и память) и #7 (Надежность и стабильность), но реализация этих техник полностью автоматизирована и недоступна для прямого применения пользователем.
- Чек-лист практичности (+15 баллов): Да, работа концептуально показывает, как структурировать сложные запросы (декомпозиция на агентов) и как повысить точность (валидация), что дает +15 баллов к базовой оценке.
Цифровая оценка полезности
Оценка 58 отражает баланс между очень низкой прямой практической пользой и высокой концептуальной ценностью для понимания продвинутых паттернов взаимодействия с LLM.
Аргументы за оценку: * Прямая польза почти нулевая: Обычный пользователь не занимается анализом кода на C++ и не может реализовать "slicing-based context retrieval". Инструменты и методы абсолютно недоступны для широкой аудитории. * Высокая концептуальная ценность: Исследование — это отличная демонстрация "промт-инжиниринга на стероидах". Оно показывает, что сложную задачу можно разбить на подзадачи (поиск контекста и анализ), обучить модель на примерах (few-shot) и заставить ее верифицировать свои же выводы. Эти мета-принципы очень полезны. * Фокус на коде: Основной предмет исследования — программный код, а не естественный язык в его общем понимании, что сильно снижает релевантность для 99% пользователей.
Контраргументы (почему оценка могла быть выше или ниже): * Почему могла быть ниже (< 40): Если оценивать исключительно по критерию "могу ли я это взять и сразу применить в ChatGPT", то оценка была бы крайне низкой. Работа не дает ни одной готовой фразы или структуры для повседневных задач. * Почему могла быть выше (> 65): Если бы пользователь был технически подкованным аналитиком (даже не программистом), он мог бы адаптировать саму логику работы BugScope для своих задач: 1) Сначала собрать все релевантные данные по теме. 2) Затем написать промпт, включающий примеры анализа (хорошие и плохие). 3) Дать модели новые данные для анализа. 4) Попросить модель проверить свой ответ на соответствие критериям. Эта адаптация рабочего процесса является мощным приемом, и с этой точки зрения исследование очень полезно.
