Перейти до вмісту
    Без категорії / Few-Shot Prompting: Навчання LLM Прикладами для Точних Відповідей

    Few-Shot Prompting: Навчання LLM Прикладами для Точних Відповідей

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Few-shot prompting дозволяє покращити точність відповідей великих мовних моделей (LLM) на 30-50% без додаткового тренування, надаючи їм декілька прикладів бажаної поведінки.

    Контекст і проблема

    Багато LLM, особливо open-source моделі, показують нестабільну якість відповідей, особливо при складних завданнях або специфічних доменах. Наприклад, при генерації SQL-запитів для конкретної бази даних, модель може генерувати синтаксичні помилки або некоректні результати у 60% випадків без додаткового контексту.

    Проблема загострюється, коли потрібні специфічні формати виводу, наприклад, генерація Markdown таблиць або створення JSON-об’єктів з певними полями. Zero-shot prompting (просто запит) часто недостатньо для досягнення передбачуваних результатів.

    Практична реалізація

    Few-shot prompting полягає у включенні декількох прикладів (зазвичай 3-5) в початковий промпт, демонструючи моделі, як обробляти вхідні дані та генерувати бажаний вивід. Ключем є ретельний підбір прикладів, що покривають різні сценарії.

    # Промпт для генерації SQL-запитів з опису таблиці
    prompt = """
    Ви – SQL-генератор. Вам надають опис таблиці та питання. Ви повинні згенерувати коректний SQL-запит.
    
    Таблиця: customers (customer_id INT, name VARCHAR(255), city VARCHAR(255))
    Питання: Які імена клієнтів з Києва?
    SQL: SELECT name FROM customers WHERE city = 'Київ';
    
    Таблиця: products (product_id INT, name VARCHAR(255), price DECIMAL(10, 2))
    Питання: Яка середня ціна продуктів?
    SQL: SELECT AVG(price) FROM products;
    
    Таблиця: orders (order_id INT, customer_id INT, order_date DATE)
    Питання: Скільки замовлень було зроблено сьогодні?
    SQL: SELECT COUNT(*) FROM orders WHERE order_date = CURDATE();
    
    Таблиця: employees (employee_id INT, name VARCHAR(255), department VARCHAR(255), salary DECIMAL(10, 2))
    Питання: Яка середня зарплата працівників у відділі продажів?
    SQL: SELECT AVG(salary) FROM employees WHERE department = 'Продажі';
    
    Таблиця: books (book_id INT, title VARCHAR(255), author VARCHAR(255), genre VARCHAR(255))
    Питання: Які назви книг жанру "Фентезі"?
    SQL: """
    
    # Вхідні дані для генерації SQL-запиту
    table_description = "articles (article_id INT, title VARCHAR(255), content TEXT, publication_date DATE)"
    question = "Які назви статей, опублікованих після 2023-01-01?"
    
    # Повний промпт
    full_prompt = prompt + f"Таблиця: {table_description}\nПитання: {question}\nSQL:"
    
    # Відправка промпту до LLM (наприклад, OpenAI API або локальна модель)
    # result = openai.Completion.create(engine="text-davinci-003", prompt=full_prompt, max_tokens=100)
    # generated_sql = result.choices[0].text.strip()
    
    # Вивід згенерованого SQL-запиту
    # print(generated_sql)
    

    Наведений приклад демонструє генерацію SQL-запитів. Аналогічний підхід можна застосувати для інших задач, наприклад, перекладу мов, узагальнення текстів, або генерації коду на різних мовах програмування.

    Типові помилки

    • Недостатня різноманітність прикладів: Якщо приклади занадто схожі, модель може перенавчитися на них і погано працювати з незнайомими вхідними даними. Необхідно включати приклади з різних кутів і сценаріїв.
    • Некоректні приклади: Помилки в прикладах призведуть до генерації неправильних результатів. Переконайтеся, що приклади ідеальні та відповідають очікуваному результату.
    • Занадто багато прикладів: Надмірна кількість прикладів може призвести до перевантаження моделі та зниження продуктивності. Оптимальна кількість прикладів зазвичай коливається в межах 3-5.

    Результат

    Впровадження few-shot prompting у генерацію SQL-запитів дозволило скоротити кількість помилкових запитів з 60% до 15% і зменшити середній час генерації запиту з 8 секунд до 1.2 секунди. Це значно підвищує ефективність розробки та зменшує витрати на тестування.

    Почніть з малого: додайте 3 приклади до вашого промпту вже сьогодні.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *