3,583 papers
arXiv:2508.19663 87 27 авг. 2025 г. FREE

Использование больших языковых моделей для автоматического перевода устаревшего кода: исследование случая трансформации PL/SQL в Java

КЛЮЧЕВАЯ СУТЬ
Обнаружено: LLM не «учится» на few-shot примерах — она копирует их как шаблон, поэтому пять разнородных примеров дают худший результат, чем один идеально подходящий. Метод позволяет получать стабильные результаты в заданном формате — от генерации отчетов до кода — без fine-tuning и длительных экспериментов. Вместо случайного набора примеров выбирается 1-2, максимально похожих на целевую задачу по структуре и стилю, и встраивается в трехчастный промпт: правила игры (какой формат нужен) → эталонный пример (как это выглядит) → ваша задача (исходные данные). Точность выполнения формата выросла с 40% до 89% в задачах трансляции кода.
Адаптировать под запрос
📌

Ключевые аспекты исследования:

Исследователи изучали, как с помощью LLM автоматически переводить устаревший код (PL/SQL) в современный (Java). Они обнаружили, что для получения качественного результата нужно не просто дать модели много примеров, а тщательно отобрать те, которые наиболее похожи на решаемую задачу. Они предложили структурированный промпт, который сначала задает "правила игры" (контекст), затем показывает релевантный пример и только потом ставит саму задачу.

Ключевой результат: Качество и схожесть примеров в промпте гораздо важнее их количества для получения точного и функционального результата.


🔬

Объяснение всей сути метода:

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

  1. Принцип "Качество важнее количества" для примеров (Few-shot). Вместо того чтобы давать LLM много случайных примеров в надежде, что она "поймет", что вы хотите, нужно действовать как снайпер. Выберите 1-2 примера, которые максимально похожи по структуре, стилю и содержанию на тот результат, который вы хотите получить. Модель использует эти примеры как точный шаблон, а не как общие данные для обучения. Один хороший пример-шаблон работает лучше, чем пять посредственных.

  2. Трехчастная структура промпта "Контекст → Пример → Задача". Чтобы LLM работала предсказуемо, ее нужно вести по шагам.

    • Часть 1: Контекст и правила (Domain Model). В самом начале промпта вы четко определяете рамки: какой формат ответа вам нужен (например, JSON, таблица, список), какой стиль использовать (официальный, дружелюбный), какие есть ограничения (не больше 100 слов, не использовать определенные термины). Это "законы", по которым модель должна играть.
    • Часть 2: Идеальный пример (Similar n-shot). Сразу после правил вы даете тот самый, тщательно отобранный, похожий пример, который полностью соответствует заданным правилам. Это наглядная демонстрация того, как "законы" применяются на практике.
    • Часть 3: Ваша задача (Query). И только в самом конце, когда модель уже "настроена" правилами и примером, вы даете ей исходные данные и ставите саму задачу.

Этот подход превращает LLM из "творческого угадывателя" в "исполнительного ассистента", который точно следует вашему шаблону.


📌

Анализ практической применимости:

  • Прямая применимость: Пользователь может немедленно начать строить свои промпты по схеме "Правила -> Пример -> Задача". При решении повторяющихся задач (например, написание отчетов, постов для соцсетей, email-ов) достаточно один раз создать хороший пример и затем просто подставлять новые исходные данные в секцию "Задача". Принцип отбора похожих примеров также применяется напрямую: вместо того чтобы брать первый попавшийся пример, пользователь будет осознанно искать или создавать тот, что лучше всего отражает его цель.

  • Концептуальная ценность: Исследование дает пользователю понимание, что LLM очень чувствительна к паттернам, предоставленным в контексте. Оно учит воспринимать few-shot промптинг не как "обучение", а как "предоставление шаблона для копирования". Это объясняет, почему иногда LLM "тупит" или "креативит не по делу" — ей просто дали плохой или неподходящий шаблон (пример).

  • Потенциал для адаптации: Метод абсолютно универсален. Вместо "трансляции кода" его можно использовать для чего угодно:

    • Маркетинг: Генерация описаний товаров в едином стиле. "Правила" — это структура карточки товара, "Пример" — идеально заполненная карточка, "Задача" — сырые данные о новом товаре.
    • HR: Написание писем-отказов кандидатам. "Правила" — вежливый тон, упоминание сильных сторон, "Пример" — эталонное письмо, "Задача" — данные о кандидате.
    • Аналитика: Суммаризация статей или отчетов в структурированном виде. "Правила" — формат вывода (ключевые тезисы, выводы, риски), "Пример" — идеальная выжимка из другой статьи, "Задача" — текст новой статьи.

🚀

Практически пример применения:

Ты — опытный SMM-менеджер. Твоя задача — создавать анонсы для Telegram-канала о новых статьях в блоге.

### Часть 1: Контекст и Правила

Каждый анонс должен строго соответствовать следующей структуре и правилам:
1.  **Заголовок:** Яркий и интригующий, со смайликом в начале. (Пример: 🌶️ Почему ваш маркетинг не работает?)
2.  **Вступление (1-2 предложения):** Кратко обозначить проблему, которую решает статья.
3.  **Ключевые пункты (список из 3-4 буллетов):** Что читатель узнает из статьи.
4.  **Призыв к действию:** Прямая ссылка на статью с текстом "Читать полностью".
5.  **Хэштеги:** 3-4 релевантных хэштега.
6.  **Тон:** Энергичный, но экспертный.

---

### Часть 2: Идеальный Пример

Вот отличный пример анонса, который ты делал ранее:

---
🚀 Как ускорить свой сайт в 5 раз без программистов?

Многие теряют клиентов из-за медленной загрузки сайта, даже не подозревая об этом. Рассказываем, как исправить ситуацию подручными средствами.

Внутри статьи вы найдете:
*   Простой чек-лист для аудита скорости.
*   Обзор 3 бесплатных плагинов для кэширования.
*   Технику оптимизации изображений, которая экономит до 80% веса.
*   Как правильно настроить lazy loading.

Читать полностью: [ссылка на статью про скорость]

#оптимизация #скоростьсайта #seo #webdev
---

### Часть 3: Твоя Задача

Теперь, пожалуйста, напиши анонс для новой статьи. Вот ее краткое содержание:

**Тема статьи:** "Как правильно составить ТЗ для дизайнера, чтобы получить результат с первого раза"
**Основные тезисы:**
- Почему важно четко формулировать цели проекта.
- Структура идеального ТЗ: референсы, анти-референсы, целевая аудитория, технические требования.
- Частые ошибки при составлении ТЗ, которых нужно избегать.
- Пример готового шаблона ТЗ.
🧠

Почему это работает:

Этот промпт эффективен, потому что он не оставляет LLM пространства для домыслов и неверных интерпретаций.

  • Часть 1 (Контекст и Правила) работает как жесткий каркас. Она задает точную структуру (Заголовок, Вступление, Буллеты и т.д.) и стилистические ограничения (интригующий, энергичный). Модель понимает, что от нее требуется не просто текст, а текст, отформатированный определенным образом.
  • Часть 2 (Идеальный Пример) — это ключевой элемент, иллюстрирующий выводы исследования. Он не просто показывает абстрактный пример, а конкретный образец, который на 100% соответствует правилам из Части 1. Модель видит, как теоретические "правила" превращаются в практический результат. Это самый сильный сигнал для LLM.
  • Часть 3 (Твоя Задача) подается в последнюю очередь, когда модель уже "настроена" на нужный лад. Она просто берет сырые данные ("тема", "тезисы") и обрабатывает их по шаблону, который был задан и продемонстрирован в предыдущих двух частях.

📌

Другой пример практического применения

Ты — ассистент руководителя. Твоя задача — готовить краткие структурированные саммари по итогам рабочих встреч.

### Часть 1: Формат и Требования к Саммари

Каждое саммари должно быть оформлено по следующему шаблону:
- **Тема встречи:**
- **Дата:**
- **Ключевые участники:**
- **Главные решения (список):** 2-3 основных решения, принятых на встрече. Формулировки должны быть четкими и ориентированными на результат.
- **Задачи и ответственные (таблица):** Таблица из трех колонок: "Задача", "Ответственный", "Срок".

---

### Часть 2: Пример Саммари

Вот пример саммари по прошлой встрече:

---
**Тема встречи:** Запуск новой рекламной кампании Q4
**Дата:** 15.08.2024
**Ключевые участники:** Анна, Виктор, Ольга

**Главные решения:**
1.  Утвержден бюджет кампании в размере 500 000 руб.
2.  Основной канал продвижения — Telegram Ads.
3.  Старт кампании назначен на 01.10.2024.

**Задачи и ответственные:**
| Задача                               | Ответственный | Срок       |
|--------------------------------------|---------------|------------|
| Подготовить креативы для Telegram Ads | Ольга         | 25.08.2024 |
| Настроить аналитику и дашборды      | Виктор        | 01.09.2024 |
---

### Часть 3: Твоя Задача

Подготовь, пожалуйста, саммари по итогам сегодняшней встречи. Вот ее запись (сырой текст):

"Так, всем привет. Сегодня 20 августа. С нами Иван, Мария, Петр. Обсуждаем проблему с оттоком клиентов из мобильного приложения. Посмотрели аналитику, отток вырос на 15% после последнего обновления. Мария говорит, что больше всего жалоб на новый процесс оплаты. Решили: откатываем процесс оплаты к старой версии. Это главное. Петр, ты займешься этим, сделай до пятницы, это у нас 23 августа. Еще Иван предложил запустить опрос среди ушедших клиентов, чтобы понять причины глубже. Иван, подготовь опросник до конца недели. Мария, ты должна будешь разослать его по базе ушедших клиентов на следующей неделе, скажем, до 28 августа."
🧠

Объяснение механизма почему этот пример работает.

Этот промпт работает за счет превращения творческой задачи в техническую.

  1. Четкая структура (Часть 1): Вместо абстрактной просьбы "сделай саммари", мы даем модели точный "скелет" для ответа, включая сложные элементы вроде таблицы. Это направляет внимание LLM на поиск конкретных сущностей в тексте: дат, имен, решений, задач.
  2. Релевантный шаблон (Часть 2): Пример показывает, как именно нужно извлекать информацию из неструктурированного обсуждения и укладывать ее в заданный "скелет". Модель видит, как фраза "Старт кампании назначен на..." превращается в четкое решение, а устное поручение — в строку таблицы. Это учит ее не просто пересказывать, а структурировать.
  3. Снижение когнитивной нагрузки (Часть 3): Когда модель получает сырой текст встречи, она уже не пытается "понять" его в широком смысле. Ее задача сужается до "найти в этом тексте данные, чтобы заполнить вот эти поля по вот этому образцу". Это значительно повышает точность и снижает риск "галлюцинаций" или пропуска важных деталей.
📌

Оценка полезности: 87

📌

Основные критерии оценки

  • A. Релевантность техникам промтинга: Высокая. Исследование предлагает конкретную структуру промпта (Контекст -> Примеры -> Задача) и, что более важно, выдвигает принцип отбора примеров для few-shot промптинга.
  • B. Улучшение качества диалоговых ответов: Высокая. Хотя исследование сфокусировано на генерации кода, его основной вывод — о важности релевантности примеров — напрямую переносится на любые генеративные задачи, включая диалоговые, где требуется следование определенному стилю или формату.
  • C. Прямая практическая применимость: Высокая. Пользователь может немедленно применить основной принцип (выбирать наиболее похожие на его задачу примеры) и предложенную структуру промпта без каких-либо инструментов. Это не требует написания кода или доступа к API.
  • D. Концептуальная ценность: Очень высокая. Исследование дает ключевое понимание механики few-shot промптинга: LLM не просто "учится" на примерах, а использует их как паттерн. Качество и релевантность этого паттерна важнее, чем количество примеров. Это помогает сформировать у пользователя правильную "ментальную модель" работы с LLM.
  • E. Новая полезная практика: Работа попадает в несколько кластеров:
    • 1. Техники формулирования промптов: Предлагает продвинутую версию few-shot промптинга.
    • 3. Оптимизация структуры промптов: Демонстрирует эффективность структуры "Контекст/Правила -> Примеры -> Задача".
    • 6. Контекст и память: Показывает, как эффективно использовать "domain model" (контекст задачи) для управления генерацией.
  • Чек-лист практичности (+15 баллов): Да, работа объясняет, где размещать информацию, как структурировать запросы, раскрывает неочевидное поведение LLM (качество примеров > количество) и предлагает способ улучшить точность. Бонус в 15 баллов применен.
📌

Цифровая оценка полезности

Аргументы за оценку: Оценка 87 баллов обусловлена тем, что исследование раскрывает не просто "трюк", а фундаментальный принцип эффективного промптинга — принцип релевантности примеров. Вывод о том, что один-два очень похожих примера работают лучше, чем десяток разнородных, является чрезвычайно ценным и неинтуитивным для многих пользователей. Этот принцип универсален и применим к огромному спектру задач: от написания email-ов в определенном стиле до генерации структурированных отчетов. Предложенная структура промпта "Контекст -> Примеры -> Задача" также является мощным и легко воспроизводимым паттерном.

Контраргументы (почему не 90+): * Исследование сфокусировано на узкой задаче трансляции кода, что может отпугнуть нетехнического пользователя. Требуется умственное усилие, чтобы перенести выводы на свои повседневные задачи. * Метод не дает готовых "магических фраз", а требует от пользователя самостоятельной работы по подбору релевантных примеров для своей задачи, что усложняет его применение по сравнению с простыми техниками вроде "Думай шаг за шагом".

Контраргументы (почему не ниже 70): * Несмотря на технический контекст, основной вывод является чистым промпт-инжинирингом и напрямую влияет на качество генерации в любых задачах. Это не академическая теория, а практическое руководство к действию. * Понимание этого принципа выводит пользователя на новый уровень владения LLM, позволяя получать стабильно качественные и предсказуемые результаты в сложных задачах, где базовые промпты не справляются.


Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с