Аннотация
1 Введение
2 Сбор данных
3 RQ1: Какие типы запросов по программной инженерии разработчики представляют ChatGPT в начальном запросе?
4 RQ2: Как разработчики представляют свои запросы ChatGPT в многоэтапных беседах?
5 RQ3: Каковы характеристики поведения при обмене информацией?
6 Обсуждения
7 Угрозы достоверности
8 Связанные работы
9 Заключение и будущая работа
Ссылки
\
==Мотивация:== Результаты, представленные на Рисунке 3 и Рисунке 4, показывают, что значительная часть в DevGPT-PRs (33,2%) и DevGPT-Issues (26,9%) включает многоэтапные беседы. В одноэтапных беседах разработчики задают запрос, связанный с программной инженерией, в начальном запросе и получают один ответ от ChatGPT, обеспечивая четкий и прямой обмен. Однако динамика многоэтапных бесед вносит сложность. Эти взаимодействия выходят за рамки простого запроса и ответа, включая серию обменов, которые потенциально уточняют, расширяют или проясняют первоначальный запрос.
\ Это многослойное общение поднимает вопрос о стратегиях разработчиков для формулирования своих запросов в течение нескольких этапов. Таким образом, мы вводим RQ2, который изучает природу запросов разработчиков в многоэтапных беседах. Для облегчения комплексного анализа мы дополнительно вводим два под-вопроса:
– RQ2.1: Каковы роли запросов разработчиков в многоэтапных беседах? Этот вопрос направлен на категоризацию структурной роли каждого запроса в соответствующей многоэтапной беседе.
– RQ2.2: Каковы шаблоны потока в многоэтапных беседах? На основе таксономии, предложенной в качестве ответа на RQ2.1, этот вопрос исследует частые шаблоны переходов между идентифицированными ролями запросов в многоэтапных беседах. Ответы на вышеуказанные под-вопросы предоставят исследователям информацию о динамике и практиках разработчиков при использовании ChatGPT через несколько раундов взаимодействия.
\ 4.1 Подход
В RQ2.1 мы рассматриваем запросы во всех 189 многоэтапных беседах, т.е. 64 беседы из DevGPT-PRs и 125 из DevGPT-Issues. Следуя методу, аналогичному RQ1, мы использовали открытое кодирование для ручной маркировки 645 запросов (236 запросов из DevGPT-PRs и 409 запросов из DevGPT-Issues) в многоэтапных беседах в течение трех раундов:
– В первом раунде пять соавторов независимо маркировали случайно выбранные 20 бесед из наборов данных многоэтапных DevGPT-PRs и DevGPT-Issues, охватывающих 40 бесед и 123 запроса. После обсуждения мы разработали кодовую книгу, состоящую из семи различных меток.
– Во втором раунде, на основе существующей кодовой книги, два аннотатора независимо маркировали еще один набор из 20 бесед из каждого из наборов данных многоэтапных DevGPT-PRs и DevGPT-Issues, всего 144 запроса. Два аннотатора достигли показателя межэкспертного согласия 0,89, измеренного коэффициентом каппа Коэна, что представляет собой почти идеальное согласие (Landis and Koch, 1977). Затем аннотаторы обсудили и уточнили кодовую книгу.
\ – Наконец, каждый из двух аннотаторов из второго раунда независимо маркировал оставшиеся данные. В RQ2.2 мы используем модель Маркова (Gagniuc, 2017) для анализа шаблонов потока беседы путем построения графа переходов Маркова. Граф переходов Маркова - это направленный граф, который демонстрирует вероятностные переходы
между различными состояниями или узлами. В нашем случае каждый узел в графе представляет определенную категорию, разработанную в RQ2.1, а направленные ребра между узлами обозначают вероятность перехода от одной таксономии к другой на основе собранных нами многоэтапных бесед. Для извлечения значимых выводов из графа переходов Маркова мы предлагаем следующие шаги постобработки:
Мы обрезали граф, удалив переходы с вероятностями ниже 0,05, обеспечивая фокус на статистически значимых отношениях.
Мы уточнили структуру графа, удалив узлы без входящих и исходящих ребер, за исключением начальных и конечных узлов. Этот шаг обеспечивает упрощение, так как мы сохраняем только существенные компоненты.
Мы систематически реорганизовали граф переходов Маркова в блок-схему для повышения его интерпретируемости, предлагая более понятное представление шаблонов потока.
\ 4.2 Результаты
4.2.1 RQ 2.1 Каковы роли запросов разработчиков в многоэтапных беседах? Таблица 4 представляет нашу предложенную таксономию для классификации запросов в многоэтапных беседах. Наш анализ показывает, что как в запросах на слияние, так и в проблемах, многоэтапные беседы содержат три основных типа запросов: те, которые задают последующие вопросы (M1), те, которые представляют начальную задачу (M2), и те, которые уточняются из предыдущего запроса (M3). Один запрос из DevGPT-PRs и шесть запросов из DevGPT-Issues были отнесены к категории "Другие" из-за их характера, являющегося либо случайной беседой, либо не имеющего достаточных деталей для определения их ролей.
\ Ниже мы описываем каждую категорию более подробно.
==(M1) Итеративное продолжение:== В 33% и 40% запросов в многоэтапных DevGPT-PRs и DevGPT-Issues разработчики публикуют запросы, которые напрямую основываются на предыдущих ответах ChatGPT или текущем контексте, таких как отладка и исправление решения после генерации кода ChatGPT. Такие итеративные продолжения обычно возникают, когда начальная задача представляет собой сложную проблему, которую ChatGPT может не полностью решить в одном взаимодействии. Следовательно, разработчики участвуют в запросе, указывающем последующий запрос, позволяя ChatGPT включать обратную связь от человека и итеративно улучшать предложенное решение.
\ ==(M2) Раскрытие начальной задачи:== Мы обнаружили, что аналогичная доля, т.е. 26% в многоэтапных DevGPT-PRs и 29% в многоэтапных DevGPT-Issues, запросов служит для представления начальной задачи ChatGPT. Это распределение подчеркивает, что в многоэтапных беседах, в отличие от одноэтапных бесед, где единственный запрос посвящен описанию основной задачи, существует значительное количество запросов, служащих другим целям.
\ ==(M3) Уточнение запроса:== Помимо итеративного продолжения (M1), разработчики также стремятся улучшить решение, предложенное ChatGPT, предоставляя уточненный запрос с дополнительным контекстом или ограничениями. Цель состоит в том, чтобы повысить качество ответа на тот же запрос, опубликованный в предыдущем запросе. Уточненные запросы составляют 17% запросов в многоэтапных DevGPT-PRs и 14% в DevGPT-Issues.
\ ==(M4) Предоставление информации:== В 8% и 6% запросов в многоэтапных DevGPT-PRs и DevGPT-Issues разработчики не публикуют никаких запросов для ChatGPT, а скорее делятся знаниями или контекстом с ChatGPT.
\ ==(M5) Раскрытие новой задачи== Мы наблюдаем, что 7% и 4% запросов в многоэтапных DevGPT-PRs и DevGPT-Issues публикуют новую задачу для ChatGPT, которая отличается от задач, рассматриваемых в предыдущих запросах. Эта категория представляет собой четкое отличие от итеративных продолжений (M1), поскольку новая задача не связана с предыдущими ответами ChatGPT и не основывается на них, и направлена на другую цель. Например, разработчик изначально запросил у ChatGPT сгенерировать SQL, соответствующий набору запросов Django, а в последующем запросе попросил SQL для другого набора запросов, тем самым смещая фокус беседы на совершенно новую задачу без предварительной связи.
\ ==(M6) Отрицательная обратная связь:== В рамках многоэтапных бесед некоторые (6% в DevGPT-PRs и 2% в DevGPT-Issues) запросы содержат только отрицательную обратную связь, направленную на предыдущие ответы ChatGPT, без предоставления какой-либо информации для улучшения или дальнейшего решения ChatGPT. Например, "Ваш код неверен", "Та же ошибка сохраняется" и "...не работает". Эта категория подчеркивает случаи, когда разработчики стремятся информировать ChatGPT о его недостатках, не ища дальнейшей помощи или разъяснений.
\ (M7) Запрос на разъяснение: 4% и 5% запросов в многоэтапных DevGPT-PRs и DevGPT-Issues просят ChatGPT разъяснить свой ответ. Эти запросы на разъяснение направлены на обеспечение полноты решения, например, "Нужно ли мне делать что-то еще?". Они также включают проверку способности ChatGPT справляться с конкретными задачами или запросы для проверки того, были ли учтены определенные условия в ответе. Кроме того, разработчики могут спрашивать, почему некоторые альтернативы были упущены ChatGPT, что указывает на более глубокое взаимодействие с предложенными решениями и желание понять обоснование предложенного решения ChatGPT.
4.2.2 RQ 2.2 Каковы шаблоны потока в многоэтапных беседах?
Рисунок 5 представляет полученную блок-схему после применения шагов постобработки на графе переходов Маркова на основе аннотированных бесед в результате RQ2.1. Блок-схема применяется к многоэтапным беседам как в DevGPT-PRs, так и в DevGPT-Issues. Как показано на Рисунке 5, многоэтапные беседы обычно начинаются с представления начальной задачи (M2) или контекстной информации (M4).
\ Наш детальный последующий анализ показывает, что 81% многоэтапных бесед в DevGPT-PRs и 90% в DevGPT-Issues начинаются с описания начальной задачи.


