Порівнюємо популярних ШІ у створенні перевірки надійності пароля: хто краще впорається?
Обираємо завдання та критерії оцінювання
Пошук ідеального завдання для тесту ШІ був непростим. Не хотілося брати щось надто просте, наприклад, пошук дублікатів у списку — більшість ботів розв’язали б таку задачу однаково. З іншого боку, складні форуми на кшталт LeetCode могли б збентежити тих, хто не програмує глибоко.
Тож вибір упав на щось, близьке багатьом та корисне — перевірку надійності пароля. Це добре знайома функція: при створенні акаунту система показує, наскільки складний введений пароль і що можна зробити, аби зробити його безпечнішим.
Саме ця задача дозволить оцінити, наскільки грамотно ШІ підходять до розробки коду, чи дотримуються стандартів, наскільки зручними будуть створені рішення для користувача і які найкращі практики вони застосують.
Вибір золотої середини: не надто легка, але й не надто складна задача
Завдання має бути зрозумілим і водночас потребувати логіки та творчого підходу без жорсткої єдиної відповіді. Такий формат ідеально пасує для тестування креативності штучного інтелекту та його розуміння людських потреб.
Формулюємо запит: як правильно «поставити» завдання ШІ
Усі три боти — ChatGPT, Gemini та Claude — отримали однаковий стартовий запит. Це було зроблено для об’єктивного порівняння їх відповідей у першому турі. Подальші уточнювальні запити — про пояснення коду, обробку винятків чи рефакторинг — були адаптовані в залежності від початкової відповіді, щоб зрозуміти, наскільки глибоко кожен із ШІ може розвиватися.
Ось основний запит, який отримали всі три:
Напиши функцію на Python, що перевіряє надійність пароля, класифікуючи його як «слабкий», «середній» або «надійний».
Поясни свою логіку простою мовою для початківця.
Відсутність зайвих підказок — мінімум напрямних
Запит був досить лаконічним, адже цікаво було побачити, скільки ініціативи або власних ідей продемонструють боти без зайвих намірів зі сторони користувача.
ChatGPT: чистий код із середнім рівнем пояснень
Використано безкоштовну веб-версію на базі моделі GPT 5.2. Результат був досить акуратним, код чистий, зрозумілий, з використанням модуля re для пошуку символів, хоч і не зовсім “початковий” підхід для новачка.
Основні особливості:
- Оцінка насиченості пароля на основі кількості типів символів та довжини.
- Прості коментарі, що описували загальні блоки коду.
- Запропоновано варіант без регулярних виразів, якщо це буде потрібно.
Пояснення, яке надавав ChatGPT, було базовим і лінійним — крок за кроком, але без глибоких інсайтів.
Щоправда, для користувача це не був повноцінний додаток: відсутня інтерактивність, відсутні підказки щодо того, що саме не так із паролем і що покращити.
Дещо з коду для тесту:
print(check_password_strength("abc")) # Weak
print(check_password_strength("abc12345")) # Medium
print(check_password_strength("Abc@12345")) # Strong
Gemini: простий код із дружнім для початківця поясненням, але слабка логіка оцінки
Модель Gemini 3 Fast у вільному веб-доступі запропонувала більш базовий підхід без regex, використовуючи вбудовані функції Python — це виглядає природним і зрозумілим.
Позитивні сторони:
- Зрозумілі коментарі, що пояснюють логіку кожного кроку.
- Добре структуроване пояснення після коду.
Втім у коді були недопрацювання:
- Відсутня перевірка на наявність малих літер та спеціальних символів.
- Система оцінки пароля не вловлює критичні моменти, через що навіть слабкі паролі іноді отримують позначку “Strong”.
- Код менш охайний через поєднання перевірок і результатів у непослідовному порядку.
Приклад тестового запуску:
print(f"'12345': {check_password_strength('12345')}")
print(f"'Password123': {check_password_strength('Password123')}")
print(f"'qwerty': {check_password_strength('qwerty')}")
Claude: явний лідер із складною, але дуже продуманою логікою
Версія Sonnet 4.6 у безкоштовній веб-версії виділилась професійним підходом: використанням regex, докладним описом у вигляді докстрінга, а також багаторівневою системою оцінювання.
Цікаві моменти:
- Максимальний бал — 7, із значними бонусами за довжину пароля та спеціальні символи.
- Автоматичний збір рекомендацій для користувача, що підказують, які елементи варто додати.
- Повний набір перевірок: великі літери, малі літери, цифри, символи.
На відміну від інших, Claude додав секцію демонстрації роботи — кілька тестових паролів із різним рівнем надійності.
for pwd in test_passwords:
label, score, tips = check_password_strength(pwd)
print(f"\nPassword : {pwd}")
print(f"Strength : {label} (score: {score}/7)")
if tips:
print("Tips :", " | ".join(tips))
Єдиний нюанс — пояснення в тексті після коду було більше про систему оцінювання, ніж про деталі коду. Зате коментарі у коді добре детальні, тож усе зрозуміло без додаткових пояснень.
Різноманітність можливостей ШІ у програмуванні
Цей експеримент показав, наскільки по-різному штучні інтелекти сприймають одну й ту саму задачу, адаптують логіку та реалізують функціонал. Кожен мав свої переваги й недоліки, що робить процес порівняння дуже цікавим і повчальним для розуміння подальшого розвитку штучного інтелекту в сфері програмування.