【Природний діалог】Чому з появою природного мовлення ми знову повертаємось до програмування? — Повільно вчимося АІ029
Передмови
- Не має сенсу писати код у Prompt
- Ми нарешті навчилися спілкуватися природною мовою
- Це ж не програмування на природній мові
- Давайте залишимо програмування професіоналам
- Не варто ускладнювати життя звичайним людям
- Професійні програмісти повинні залишити код там, де його потрібно писати
- Код у Prompt може бути уявним та складно налагоджуваним
- Немає потреби навантажувати звичайних людей навчанням і тривогою
- Вставляти код у Prompt абсолютно недоцільно
1. Досвід написання коду у Prompt
1.1 Один невдалий приклад Prompt, який демонструє, що це абсолютно недоцільно
Prompt і результат
Ви - генератор карток для повторення слів з можливістю виконання коду, який на основі вводу користувача (кількість рядків, стовпців, рівень навчання та дата) створює картку. Використайте наведеним нижче код для виконання:
1 | import pandas as pd |
Коли ви почнете, вам потрібно буде дочекатися вводу користувача щодо кількості рядків, стовпців, рівня навчання та дати, а потім за допомогою коду створити графік.
Результат, він все ж виконав код
Ось його код:
1 | import pandas as pd |
З цього невдалого прикладу можна зробити кілька висновків:
- Щоб досягти результатів традиційних мов програмування, потрібно докласти чимало зусиль.
- Налагодження та внесення змін у код є дуже складними.
- Важко побачити необхідність вставляти код у Prompt.
У цей момент хтось може сказати, що проблема в недостатньому рівні програмування у вас…
Так, визнаю, наші вміння писати код дійсно на середньому рівні.
Але почекайте, якщо AI має такі високі вимоги до кодування, чи залишається він AIGC?
Давайте розглянемо ще один простий приклад зі змінною, і зрозуміємо, що мова програмування тут зовсім не зрозуміла.
1.2 Сцена використання псевдокоду
Prompt і результат
1 | "На основі моїх інтересів {interests}, бюджету {budget}, тривалості подорожі {travel_duration} та кількості супутників {number_of_companions}, будь ласка, допоможіть мені спланувати подорож." "Інтереси включають, але не обмежуються {list_of_interests}." "Бюджетний діапазон {budget_range}." "Запланована тривалість подорожі {length_of_trip} днів." "Я подорожуватиму з {number_of_people} людьми, їх вік та інтереси: {ages_and_interests}." "Надайте детальні рекомендації щодо щоденного розкладу, включаючи рекомендації щодо їжі {meal_preferences} та вибору житла {accommodation_preferences}." |
Хоча цей приклад і не ідеальний, він більше нагадує шаблон Prompt з змінними. Це показує, що в певних ситуаціях цей підхід може бути ефективним. Подібні випадки включають: якщо потрібно створити більш складний Prompt, можна додати більше контрольних точок і змінних, що зробить процес взаємодії більш детальним та гіллястим. Нижче наведено приклади для різних сцен:
Сцена 1: Повний план харчування
Початковий Prompt:
1 | "У мене є {dietary_restrictions}, потрібно розробити план харчування на {number_of_days} днів для {meal_type}." |
Сцена 2: Глибокий технічний огляд продукту
Початковий Prompt:
1 | "Я розглядаю можливість покупки {product_name}, будь ласка, надайте детальні характеристики продукту {detailed_features}, відгуки користувачів {detailed_reviews}, порівняння цін {price_comparison} та поради щодо покупки {purchase_advice}." |
Сцена 3: Докладний план навчальних ресурсів
Початковий Prompt:
1 | "Я хочу вивчити {subject}. Враховуючи мій стиль навчання {learning_style} та доступний час {available_time}, будь ласка, порекомендуйте відповідні навчальні ресурси." |
Сцена 4: Докладний шлях професійного переходу
Початковий Prompt:
1 | "Я наразі працюю {current_job}, а мене цікавить індустрія {industry_interest}." |
Тепер давайте поглянемо на прості логічні відносини.
1.3 Логічний псевдокод або природний мовлення
Prompt і результат
1 | Вхід: n |
Це здається досить простим. Що, якщо ми ускладнимо приклад трохи?
1 | Вхід: відсортований масив A, значення val, яке потрібно знайти |
Я не казав йому, що хочу знайти 99. Він сам пішов на пошуки…
Усі наведені вище приклади мають сильний науковий відтінок та не дуже стосуються повсякденного досвіду більшості з нас.
Це було виконано за допомогою ChatGPT 3.5, і чи дійсно він виконав обчислення, ще під питанням. Але це не заважає нам продовжувати дослідження. Оскільки більшості людей не потрібно занурюватись у складні та динамічні мови програмування, немає сенсу витрачати на це час. Головна проблема полягає в тому, що наведені вище приклади природної мови та псевдокоду є важкими для розуміння. Якщо Prompt ускладниться, у реальному середовищі ситуація може стати дуже складною:
- Результати непередбачувані
- У наведених прикладах вже були проблеми з уявленнями
- Процес непередбачуваний
- Як у блоці коду SQL на 8000 рядків
- Кожного разу при оновленні системи ніхто не наважується вносити зміни
Схоже, що найбільший Prompt все ще знаходиться за адресою https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor
2. Що таке програмування природною мовою?
Після появи Prompt, завдяки рекламі таких компаній, як OpenAI, у ЗМІ здійнявся шум, і натхнення для статей з’явилося! Prompt помилково сприймався як нова мова програмування, немов володіння нею дозволяє управляти цілими арміями, з’явлення AIGC в різних формах — малювання, написання, зйомка фільмів — стало простим і легким! Так просто!!!
Один-єдиний факт:
- Я поки не вмію
- Але вірю, що це дійсно просто.
- Але я все ще не вмію.
Отже, що таке програмування природною мовою? Що мало на увазі, коли Хуан Женьшун казав, що не потрібно вчити програмування?
Перш ніж виникнути запитання, варто повернутись у далеке минуле…
Краще не поглиблюватись у деталі. Суть у тому, що ми хочемо, щоб комп’ютер вирішував наші задачі, але виявляємо, що це насправді важко, тому деякі вчені почали з комп’ютерів, поступово накопичуючи методи та способи розв’язання проблем.
Вчені виявили, що деякі природні явища можуть бути абстраговані у математичні задачі. Наприклад, задачу “кури і кролики” можна вирішити через рівняння.
Товариство поступово розвивалося, вчені почали все більше абстрагувати свої проблеми, використовуючи нові математичні інструменти, які неможливо розв’язати вручну. Тому були винайдені комп’ютери та мови програмування. Більшість людей навчається мовам програмування в цьому процесі, вивчаючи типи даних, конструкції if/else, цикли for тощо.
Це є методами, які комп’ютери використовують для вирішення проблем, абстрагуючи та зменшуючи їх, одночасно обмежуючи їх розширення. Переваги очевидні — ми звужуємо проблеми і способи їх вирішення. Але є й недоліки: іноді проблеми не легко звузити, і виникає потреба в розширенні.
Отже, виникла ідея: чи можна обійтись без вивчення мов програмування? Станом на сьогодні, у міру ускладнення задач, може виявитись, що програмування все ж потрібне! Як я не вмію працювати в Photoshop, але лише малюю в Paint та користуюсь простими онлайн-інструментами, якщо потрібно вирішити складну задачу з зображеннями, вірогідно, кращим рішенням буде вивчити Photoshop! Парадокс тут полягає в тому, що коли ми обираємо програмування природною мовою, як ми оцінюємо результати? Ми застосовуємо природну мову, а як зрозуміти, що результати не є хибними?
Всі знають вислів: великі мовні моделі грають у словесний теніс. Тому:
1 | 1+1=2 |
Це не результат обчислення, а навчальний матеріал. Щоб покращити цю ситуацію, OpenAI минулого року представила Code Interpreter, що дало нам, які не володіють програмуванням, певну надію.
3. Що може зробити інтерпретатор коду?
Простими словами, інтерпретатор коду можна сприймати як пісочницю, що дозволяє виконувати Python-код на основі вже існуючих великих моделей. Вона розуміє контекст, генерує код, виконує його і надає результати.
Можна всього лише знайти когось, хто допоможе виконати задачу, повідомити необхідність, і він впорається. Слід зазначити, що більшість завдань, які може виконати Python, здебільшого здатен робити і він. Розглянемо кілька типов