![](https://habrastorage.org/getpro/habr/upload_files/2ef/c44/ea6/2efc44ea66f3e5cb4cd1becf135e0c68.jpg)
Недавно в открытый доступ вышел сервис Poe от Quora, где пользователям предлагается пообщаться с несколькими чат-ботами. Сегодня можно без ограничений задавать вопросы ботам Sage, Claude, Dragonfly и ChatGPT. Кстати, GPT стал бесплатным недавно — правда, пока только в версии 3,5. По подписке же доступны свежие GPT-4 и Claude+.
Мы не могли упустить возможность протестировать бесплатно сразу четыре бота и подкинули им несколько разных задач — от программирования до креатива. Понравилось то, что боты общаются на русском, хотя и через автопереводчик. Поэтому те, кому некомфортно переписываться на английском, могут задавать вопросы на родном языке.
А теперь давайте посмотрим, как отвечает на вопросы из разных областей наша четверка. Но сначала коротко познакомимся с каждым из них:
ChatGPT — это наиболее популярный современный чат-бот, разрабатываемый компанией OpenAI.
Claude стал известен не так давно. Этот ИИ от компании Anthropic создается бывшими сотрудниками OpenAI. Anthropic получила поддержку Google на сотни миллионов долларов. И амбициозные разработчики прилагают максимум усилий, чтобы не только не отстать, но и опередить ChatGPT по качеству ответов в различных областях знаний.
Sage — менее известный чат-бот, который разрабатывается на базе OpenAI командой Luminar AI.
Dragonfly — еще один продукт OpenAI, который позиционируется как ИИ-помощник в исследованиях и анализе данных, а также при решении творческих задач.
Чтобы наши тесты были максимально объективными, мы не стали задавать ботам вопросов, связанных с событиями 2022-2023 гг., так как их обучали на массивах данных до 2021 года включительно, о чём нас предупреждают в начале беседы. Поехали!
Пишем программу
Для начала мы мы попросили написать на Python простенький модуль рандомной генерации звездных систем, а затем проверим результаты в Python IDLE. Вот текст запроса:
Напиши код программы на Python со случайной генерацией 10 звёздных систем в галактике. В каждой звёздной системе должно быть случайное количество планет. Укажи размеры и цвет звезды (согласно реальным астрономическим данным), а для планет укажи тип (земная, газовый гигант, ледяной гигант, карликовая). Также каждая звезда и планета должны иметь название. Результаты должны выводиться пользователю в виде списка с описанием каждой системы.
А теперь код от ботов (для экономии места их комментарии под # будем сокращать):
ChatGPT
Код
import random
star_names = ["Солнце", "Альфа Центавра", "Барнардова звезда", "Сириус", "Лаланд 21185", "Вольф 359", "Луна", "Епсилон Эридана", "Проксима Центавра", "Тау Кита"]
planet_names = ["Меркурий", "Венера", "Земля", "Марс", "Юпитер", "Сатурн", "Уран", "Нептун", "Плутон", "Эрида"]
planet_types = ["земная", "газовый гигант", "ледяной гигант", "карликовая"]
for i in range(10):
num_planets = random.randint(1, 9)
star_size = random.randint(1, 10) * 1000000
star_color = random.choice(["красный", "оранжевый", "желтый", "белый", "голубой", "фиолетовый"])
planets = []
for j in range(num_planets):
planet_type = random.choice(planet_types)
planet_name = random.choice(planet_names)
planets.append((planet_name, planet_type))
print(f"Звездная система {i+1}: {random.choice(star_names)}")
print(f"Звезда: размер - {star_size} км, цвет - {star_color}")
print("Планеты:")
for planet in planets:
print(f"{planet[0]} - {planet[1]}")
print()
Вывод:
Звездная система 1: Проксима Центавра
Звезда: размер - 10000000 км, цвет - красный
Планеты:
Плутон - газовый гигант
Земля - ледяной гигант
Марс - ледяной гигант
Эрида - земная
…
Звездная система 10: Луна
Звезда: размер - 2000000 км, цвет - белый
Планеты:
Плутон - земная
Меркурий - ледяной гигант
Плутон - ледяной гигант
Уран - земная
Плутон - ледяной гигант
Меркурий - газовый гигант
Меркурий - земная
ChatGPT с задачей в целом справился, хотя в выводе вы заметите, что названия планет в одной и той же системе повторяются. Но это легко поправляется уточняющими комментариями.
Claude
Код
import random
galaxies = []
for i in range(10):
star_system = []
star_size, star_color = random.randint(0.6, 1.4), random.choice(['жёлтая', 'белая', 'красная'])
star_name = 'Звезда ' + chr(random.randint(65, 90))
planets = random.randint(0, 8)
for j in range(planets):
planet_type = random.choice(['земная', 'газовый гигант', 'ледяной гигант', 'карлик'])
planet_name = 'Планета ' + chr(random.randint(65, 90))
star_system.append((star_name, star_size, star_color, planet_name, planet_type))
galaxies.append(star_system)
print(*galaxies, sep = '\n')
Отформатировали код (Claude местами ошибается в отступах) и попытались запустить. И получили ошибку, связанную с тем, что в строке 6 у нас не целочисленные значения. Придется править дальше.
Исправленный код
import random
galaxies = []
for i in range(10):
star_system = []
star_size, star_color = random.randint(1, 10), random.choice(['жёлтая', 'белая', 'красная'])
star_name = 'Звезда ' + chr(random.randint(65, 90))
planets = random.randint(0, 8)
for j in range(planets):
planet_type = random.choice(['земная', 'газовый гигант', 'ледяной гигант', 'карлик'])
planet_name = 'Планета ' + chr(random.randint(65, 90))
star_system.append((star_name, star_size, star_color, planet_name, planet_type))
galaxies.append(star_system)
print(*galaxies, sep = '\n')
Вывод:
[('Звезда Z', 3, 'белая', 'Планета F', 'газовый гигант'), ('Звезда Z', 3, 'белая', 'Планета E', 'земная'), ('Звезда Z', 3, 'белая', 'Планета T', 'газовый гигант'), ('Звезда Z', 3, 'белая', 'Планета Z', 'земная'), ('Звезда Z', 3, 'белая', 'Планета E', 'газовый гигант')]
Итог куда менее впечатляющий — сколько бы систем ни сгенерировалось, у звезд будут одинаковые названия, размер и цвет, да и количество планет тоже будет всегда одинаковым. Правда, с каждым выводом меняется количество систем, но это, скорее, «утешительный приз». Так что пока с явным преимуществом лидирует ChatGPT.
Sage
Код
import random
star_colors = ["red", "orange", "yellow", "white", "blue"]
planet_types = ["terrestrial", "gas giant", "ice giant", "dwarf"]
class Star:
def __init__(self, name):
self.name = name
self.color = random.choice(star_colors)
self.size = random.uniform(0.1, 100) # in solar radii
class Planet:
def __init__(self, name):
self.name = name
self.type = random.choice(planet_types)
class StarSystem:
def __init__(self, name):
self.name = name
self.star = Star(f"{name}-star")
self.planets = []
for i in range(random.randint(0, 9)):
self.planets.append(Planet(f"{name}-planet-{i+1}"))
systems = []
for i in range(10):
systems.append(StarSystem(f"system-{i+1}"))
for system in systems:
print(f"{system.name}:")
print(f"Star: {system.star.name}, Color: {system.star.color}, Size: {system.star.size:.2f} solar radii")
print("Planets:")
if len(system.planets) == 0:
print("No planets")
else:
for planet in system.planets:
print(f"{planet.name}, Type: {planet.type}")
print()
Вывод:
system-1:
Star: system-1-star, Color: red, Size: 19.61 solar radii
Planets:
system-1-planet-1, Type: terrestrial
system-1-planet-2, Type: dwarf
system-1-planet-3, Type: dwarf
system-1-planet-4, Type: terrestrial
system-1-planet-5, Type: dwarf
system-1-planet-6, Type: terrestrial
system-2:
Star: system-2-star, Color: blue, Size: 52.02 solar radii
Planets:
No planets
Нужно признать, получилось солидно. Во-первых, в коде не пришлось ничего править. Во-вторых, Sage привязал размер звезды к радиусу Солнца. В-третьих, бот предусмотрел, что в отдельных системах планет может не быть вовсе. Итог: скромный Sage справился с задачей, пожалуй, даже лучше, чем ChatGPT.
Dragonfly
Здесь нас ожидал сюрприз. Dragonfly оборвал код, а перед этим выдал следующий комментарий:
![](https://habrastorage.org/getpro/habr/upload_files/516/ffe/60c/516ffe60c8cfae6fc7f285ef99c3f548.png)
«Dragonfly дает краткие ответы, а также может делать неверные заключения или отказываться отвечать на большее количество вопросов». Мы спрашивали бота по-разному, но результата это не дало. Учтем и дадим ему шанс проявить себя в других областях.
Получаем языковую консультацию
Посмотрим, насколько боты могут облегчить задачу изучения иностранного языка. Зададим несложный вопрос с подвохом по французской грамматике:
Подскажи, пожалуйста, нужно ли ставить артикль после livres во втором предложении, и если да, то какой? J'ai trouvé des livres sur la programmation. Je n'ai pas trouvé livres sur la programmation.*
Перевод: Я нашел книги по программированию. Я не нашел книг по программированию.
ChatGPT
![](https://habrastorage.org/getpro/habr/upload_files/a96/9ee/4d6/a969ee4d64e97fe167df78d079c0bf78.png)
Не будем придираться к формулировкам, ответ верный: Je n'ai pas trouvé de livres sur la programmation.
Claude
![](https://habrastorage.org/getpro/habr/upload_files/d2c/d18/c2b/d2cd18c2b34b7edde9111f39a5c98c93.png)
А вот Claude неправ: видимо, иностранные языки — не его сильная сторона. Возможно, пока.
Sage
![](https://habrastorage.org/getpro/habr/upload_files/e96/a53/446/e96a53446c74ca8e4cbde4e2781bbf76.png)
Емкий и верный ответ и достаточно точное объяснение, как и у ChatGPT.
Dragonfly
![](https://habrastorage.org/getpro/habr/upload_files/172/f39/1c7/172f391c78647be363ced38f398bd2c1.png)
Действительно, пусть французы говорят по-русски, и проблем с артиклями не будет.
Придумываем рекламный ролик
Теперь дадим нашим ботам творческую задачу — попросим придумать сценарий короткого рекламного ролика. Вот запрос:
Напиши сценарий короткого рекламного ролика, в котором друзья выбирают подарок на день рождения программиста.
ChatGPT
![](https://habrastorage.org/getpro/habr/upload_files/5da/370/0d0/5da3700d042983f52e8b7bcdcd026831.png)
Claude
![](https://habrastorage.org/getpro/habr/upload_files/685/45f/171/68545f171199f5d183bbf4949ad1c51f.png)
Sage
![](https://habrastorage.org/getpro/habr/upload_files/c88/f6e/423/c88f6e4235962c3b1a28511a7b5279d9.png)
Dragonfly
![](https://habrastorage.org/getpro/habr/upload_files/5ef/700/39b/5ef70039b993c2988a1fed09e02428db.png)
Почти все боты подошли к этому вопросу креативно, а главное — предложили идеи для проработки. А вот при взгляде на ответ Dragonfly так и хочется воскликнуть: «Спасибо, кэп!» В сравнении с детализацией, предложенной другими ботами, выглядит бедно.
Составляем текст вакансии
Попробуем облегчить задачу эйчарам и получить ответ на такой запрос:
Составь текст вакансии фулстак разработчика, укажи обязанности и требования.
ChatGPT
![](https://habrastorage.org/getpro/habr/upload_files/0b2/ccb/c6d/0b2ccbc6d2c05cea6ba8bac98f633279.png)
Claude
![](https://habrastorage.org/getpro/habr/upload_files/1b0/cd3/583/1b0cd3583257e1be6a9497ffbdd1a1a1.png)
Sage
![](https://habrastorage.org/getpro/habr/upload_files/d83/d0c/e81/d83d0ce813489a5eba355a12d064366f.png)
Dragonfly
![](https://habrastorage.org/getpro/habr/upload_files/fee/538/65a/fee53865a75afe9467ce21278928b1f7.png)
Постарались все, кроме Dragonfly, вакансия от которого получилась не информативной. Но как мы уже выяснили, общаться он любит не особо. Вероятно, для составления оптимального текста лучшим решением будет отправить запросы сразу трем нашим лидерам и затем скомпоновать и скорректировать их ответы. Такой подход все равно значительно сэкономит время.
Проверяем факты
В завершение посмотрим, как у ботов обстоит дело с фактологией. Давайте возьмем что-нибудь из спортивных событий прошлого:
Кто выиграл в 1986 году Кубок Европейских Чемпионов по футболу? Какие примечательные факты о том матче ты можешь привести?
Эту информацию нетрудно проверить — она есть в Википедии и на официальном сайте УЕФА, да и исторических обзоров в сети немало.
ChatGPT
![](https://habrastorage.org/getpro/habr/upload_files/7ca/e89/167/7cae89167074df141e33564170121db5.png)
По поводу первой команды из Восточной Европы — в точку, а вот Христо Стоичков никогда не играл за «Стяуа», да и вратарем тоже не был. А ведущего румынского полузащитника звали не Жорж Хаги, а Георге Хаджи, но тут уж простим нашему преимущественно англоязычному «другу» такую транслитерацию. Однако с фактами относительно Хаджи бот тоже ошибся, поскольку тот пришел в румынский клуб только в 1987 году, а до этого играл за скромный «Спортул». Но давайте попросим GPT исправить самую грубую ошибку, не указывая какую именно:
![](https://habrastorage.org/getpro/habr/upload_files/f0d/a13/953/f0da13953fa6785c79486b9fb3d80b64.png)
Что ж, достойный ответ: именно Дукадам стоял на воротах «Стяуа» в том матче.
Claude
![](https://habrastorage.org/getpro/habr/upload_files/22b/eca/a69/22becaa69df53f5b4361bb8df126b0fc.png)
Claude точно не следует рекомендовать для изучения фактов, так как в 6 из 7 пунктов допущены ошибки, причем некоторые из них непростительно грубые. Claude, видимо, большой фанат «Барселоны»: отдал клубу трофей заранее, хотя первая победа испанского гранда в главном европейском турнире состоялась в 1992 году. Остальные ляпы на этом фоне выглядят не так страшно, особенно весело смотрится итальянский клуб из Бухареста. А после просьбы исправить ошибки Claude выдал нечто еще более феноменальное:
![](https://habrastorage.org/getpro/habr/upload_files/33a/4ec/0cc/33a4ec0cc26f9568a2a1b6ef4f2dcbc9.png)
Правда, затем «покаялся» и признал, что такие факты — не его сильная сторона:
![](https://habrastorage.org/getpro/habr/upload_files/b2b/67c/9c7/b2b67c9c75aacdd1dce01c3fb91f8d8d.png)
Sage
![](https://habrastorage.org/getpro/habr/upload_files/9b8/93d/b9b/9b893db9bc2573fe59296f1230f68dbc.png)
У нас появился еще один новый вратарь (ну, хотя бы румын), но главное – Sage верно назвал результат матча и привел любопытный факт. А еще он правильно определил роль вратаря в финальной игре (Дукадам тогда отразил все пенальти в послематчевой серии). Только не угадал с фамилией. Но вот исправлять ошибку долго не хотел, пока ему не указали на нее явно:
![](https://habrastorage.org/getpro/habr/upload_files/347/c8e/777/347c8e77758ae837bb1dccb03e3dad31.png)
Dragonfly
![](https://habrastorage.org/getpro/habr/upload_files/808/fb7/140/808fb7140cb2d7ebabc8c4a10b6d3b80.png)
Без комментариев. Слабый проблеск надежды, что бот сможет проявить себя хотя бы в этом, угас быстро.
Также по ответам ботов заметно, что при запросе фактов на ИИ опираться не стоит. Лучше изучать источники самостоятельно.
Подводим итоги
Сделаем небольшую выжимку по тем областям, в которых мы протестировали наших ботов. Итак:
за помощью в программировании лучше обращаться к Sage или ChatGPT;
в языковых консультациях также сильны только Sage и ChatGPT;
в придумывании сценариев более креативно выступили Claude и Sage;
в составлении текстов вакансий единственным слабым звеном является Dragonfly;
в качестве источника фактов мы не стали бы рекомендовать никого из этой четверки, но если бы пришлось выбирать, то игроками запаса стали бы ChatGPT и Sage.
В большинстве случаев, чтобы выжать максимум идей, разумней всего компоновать ответы 2-3 ботов (кроме Dragonfly). К слову, боты умеют генерировать описания чего-либо, что будет полезно для бизнеса, но это тема отдельной статьи, и, скорее всего, не для Хабра.
Добавим, что в приведенных примерах мы почти не использовали уточнения, а после каждого тематического диалога обнуляли историю. Это было сделано специально, чтобы оценить возможности ботов, так сказать, as it is — «как есть». Конечно, чтобы выводы были точнее, понадобится более масштабная выборка. Однако приведенные выше ответы демонстрируют потенциал ИИ в тех или иных областях. Пока не удалось найти сильных сторон у Dragonfly, но, возможно, они всё же есть. Напишите о них в комментариях, если вам удалось их обнаружить.