Промптів недостатньо: забезпечення жорстких обмежень у вихідних даних LLM
Демонстрації LLM виглядають чудово, доки не стикаються з суворими вимогами.
Моделі працюють на основі ймовірності. Продакшн-системам потрібні гарантії.
Я зрозумів це під час розробки конвеєра новин на базі ШІ для Radio del Volga в Аргентині. Система переписує новини та створює дописи для соціальних мереж. Все працювало добре, поки не виникла одна проблема. Gemini продовжував писати не тією іспанською.
В Аргентині люди використовують специфічні слова. Вони кажуть "podés" замість "puedes" та "sos" замість "eres". Якщо модель використовує нейтральну іспанську, текст здається неправильним для місцевих читачів.
Спочатку я спробував покращити промптинг. Я сказав моделі:
- Використовуй ріоплатенську іспанську.
- Ніколи не використовуй нейтральну іспанську.
- Використовуй список конкретних заборонених слів.
- Перечитай свою відповідь перед відправленням.
Це допомогло, але не вирішило проблему повністю. Офіційні джерела новин повертали модель до нейтральної іспанської. Скільки б я не писав у промпті, помилки залишалися.
Я перестав розглядати це як проблему промптингу. Я почав розглядати це як проблему валідації.
Деякі речі є ймовірнісними, як-от тон чи стиль. Інші — детерміновані. Якщо текст містить "puedes", він неправильний. Для цього не потрібен ШІ. Вам потрібен простий код.
Я додав етап постобробки. Він запускається після того, як ШІ завершує роботу. Він шукає конкретні слова та замінює їх:
- puedes стає podés
- tienes стає tenés
- eres стає sos
Цей список невеликий і безпечний. Я не намагаюся виправити всю іспанську мову. Я виправляю лише ті правила, які код може перевірити з певною впевненістю.
Цей урок не про іспанську. Він про межі промпт-інжинірингу.
Промптинг покращує продуктивність, але не дає гарантій. Якщо правило є стабільним і таким, що піддається тестуванню, використовуйте код для його забезпечення.
Використовуйте LLM для генерації зв'язного тексту. Використовуйте детермінований код для забезпечення термінології бренду, регуляторних формулювань та правил форматування.
Надійні системи розподіляють обов'язки: • Модель генерує контент. • Код забезпечує дотримання жорстких правил. • Люди приймають остаточне редакційне рішення.
Source: https://dev.to/zendev2112/prompts-arent-enough-enforcing-hard-constraints-on-llm-output-2hpo
Optional learning community: https://t.me/GyaanSetuAi