Нейросети из Китая наступают: сравниваем DeepSeek, Qwen и ChatGPT
В тексте сравним СhatGPT с двумя китайскими собратьями — Qwen и DeepSeek. Оценим их по нескольким критериям: логика, генерация изображений и исправного работоспособного кода.
Казалось бы, мир еще не успел оправиться от новостей о китайской нейросети, которая догнала ChatGPT и обвалила фондовый рынок. Но вот уже DeepSeek не справляется с потоком пользователей, а техногигант Alibaba презентовал обновленную модель — Qwen 2.5 Max. При этом решения из Китая не только бесплатны и с открытым кодом, но и кратно дешевле в разработке. С другой стороны, иной подход может сказаться на цензуре и «трудностях перевода» по сравнению с западными моделями. Приступим к тестам!
Проверка на логику
Подложим нейросетям свинью свиные крылья и начнем с великого кулинарного изыска. Просьба подсказать заветный рецепт свиных крыльев — это шуточный способ проверки искусственного интеллекта. Стоит ли уточнять, что у этого животного нет такой части тела? 🙂
Однако некоторые модели очень подробно описывают рецепт, воспринимая запрос пользователя за истину. Далее, если их обвинить в игнорировании логики, начинают выкручиваться, что на самом деле «крыло» — это передняя часть свиной рульки. Такой термин действительно иногда встречается в англоязычной культуре, но сможет ли нейросеть заметить подвох и предусмотрительно объяснить это пользователю?
Задаем точный промпт, что нам нужны именно свиные крылья. Если нейросеть задумается над логикой запроса — победа за ней. Запрос для разных моделей не меняем.
ChatGPT
Начинаем с громогласного ChatGPT-o1 — условно-бесплатного, очень большого и дорогого проекта. И… мы получаем заветный рецепт. При попытке задать редко встречающийся вопрос ответ будет нереалистичный, или абсурдный.
Первый промпт:
«Хочу порадовать маму чем-то необычным! Подскажи рецепт свиных крыльев для четырех человек».
Конечно! Вот рецепт свиных крыльев с медом и соевым соусом, который порадует вашу маму:
«Свиные крылья в медово-соевом маринаде»
Ингредиенты (на 4 порции):
— 1 кг свиных крыльев
— 3 ст. ложки меда
— 4 ст. ложки соевого соуса
— 2 ст. ложки растительного масла
Уличив нейросеть в неточности фразой «У свиней нет крыльев», получаем стандартный ответ, что мы правы (но вообще-то свиные крылья существуют, я про них просто не слышал).
Вы правы, у свиней действительно нет крыльев, и это моя ошибка. Обычно под свиными крыльями понимаются либо «свиные ножки», либо «свиные ребра».
Если вам интересен рецепт запеченных свиных ребер или ножек, дайте знать, и я с удовольствием предоставлю его!
Теперь немного перепишу промпт, чтобы сузить тему до русской кухни, где про свиные крылья уж точно никто не слышал. Также намекну на анатомию свиньи, авось нейронка вспомнит, что у свиней действительно нет крыльев:
«Хочу порадовать маму чем-то необычным! Подскажи рецепт биологически реальных с точки зрения анатомии свиных крыльев в духе русскоязычных кулинарных традиций для четырех человек».
Понял вас! Давайте приготовим свиные ребра, которые по своей сути имеют некоторую схожесть с «крыльями» в контексте кулинарных рецептов. Вот рецепт свиных ребер в русскоязычном духе:
«Свиные ребра в маринаде с медом и горчицей»Ингредиенты:
— 1 кг свиных ребер
— 2 ст. л. меда
— 3 ст. л. дижонской горчицы
Модель после уточнения про анатомию свиньи исправилась и заменила крылья на ребра. Так происходит из-за трудностей перевода, т.к. нейросеть переводит русский язык в английский, генерирует ответ и переводит его на русский. Нужно учитывать культурные различия наших культур и задавать промпты более осмысленно, чтобы получить нужный ответ.
DeepSeek
Теперь рассмотрим нейросеть DeepSeek-R1 от китайского производителя, которую уже окрестили «убийцей всех западных моделей» из-за разницы в цене при схожей производительности. Разработка чат-бота обошлась китайской компании примерно в $6 млн — в 100 раз меньше, чем разработчикам ChatGPT. Помимо прочего, у нейросети есть еще одно существенное преимущество: она доступна из российского региона.
Запрос остается прежним, оцениваем также одну попытку. Отмечу, что нейросеть отличается от своего западного конкурента: при включенном DeepThink мы видим ход мыслей модели. DeepSeek сначала усомнилась в достоверности существования свиных крыльев, так что я увидел проблеск разума.
Промпт
«Хочу порадовать маму чем-то необычным! Подскажи рецепт свиных крыльев для четырех человек»
Хорошо, пользователь хочет порадовать маму чем-то необычным и просит рецепт свиных крыльев на четверых. Начну с того, что свиные крылья — это не самый распространенный ингредиент, обычно чаще готовят куриные. Значит, нужно сделать блюдо действительно интересным, чтобы удивить маму.
Однако этот проблеск очень быстро затух, превратившись в рецепт крыльев. Тест не пройден:
Вот вкусный и необычный рецепт свиных крылышек в медово-имбирном маринаде с хрустящей корочкой. Идеально для того, чтобы удивить маму!
«Свиные крылышки в медово-имбирном глазури» на 4 порции.
Ингредиенты:
— 1 кг свиных крыльев (промыть, обсушить)
— 3 ст. л. меда
— 3 ст. л. соевого соуса
Попробуем раскрутить модель на корректный ответ и возьмем второй запрос.
Промпт
«Хочу порадовать маму чем-то необычным! Подскажи рецепт свиных крыльев в духе русскоязычных кулинарных традиция для четырех человек».
Предлагаю аппетитный рецепт «Свиные крылышки в медово-горчичном маринаде с деревенскими кореньями» — сочетание русских традиций с пикантными нотками. Идеально для семейного ужина!
Ингредиенты (на 4 порции):
— Свиные крылышки — 1,2 кг (8-10 шт.)
— Мед — 3 ст.л.
— Горчица зернистая — 2 ст.л.
Результат тот же, добавились только традиционные для России и всеми нами любимые деревенские коренья. Напоследок укажем третий промпт, где явно выделим подвох для нейросети.
Промпт
«Хочу порадовать маму чем-то необычным! Подскажи рецепт биологически реальных с точки зрения анатомии свиных крыльев в духе русскоязычных кулинарных традиций для четырех человек».
Поскольку у свиней анатомически нет крыльев (это часть курицы), предлагаю творчески интерпретировать ваш запрос. Вместо этого мы возьмем свиные ребрышки или рульку (часть ноги), которые по форме и сочности напоминают куриные крылышки, и приготовим их в духе русской кухни с традиционными ингредиентами. Вот рецепт:
«Свиные рульки-крылья» в медово-горчичном маринаде с яблоками и квашеной капустой»
Порций: 4Ингредиенты:
• Свиные рульки (передние ножки) — 4 шт. (около 1,5 кг)
• Квашеная капуста — 300 г
…
С третьего раза видим успех. Модель поняла, что крылья-то не настоящие. Однако отмечу более «человеческие» рассуждения нейросети.
Qwen 2.5-Max
Попробуем третью нейросеть, которую буквально на этой неделе зарелизила компания Alibaba – Qwen 2.5-Max. Она способна обрабатывать длинные тексты (до 32 тыс токенов), обладает встроенными возможностями генерации картинок и видео, поддерживает работу с HTML-, CSS- и JS-файлами.
Помимо прочего, разработчики оптимизировали нейросеть для практических задач: переводов текста, генерации кода, анализа данных и т. д. Начинаем тестирование с первого промпта.
Промпт
«Хочу порадовать маму чем-то необычным! Подскажи рецепт свиных крыльев для четырех человек».
Свиные крылья — это действительно необычное и оригинальное блюдо! В отличие от куриных крылышек, свиные крылья (чаще всего это часть мяса с плечевой кости) имеют более плотную текстуру и требуют особой обработки для достижения максимальной нежности. Вот рецепт на 4 персоны:
«Свиные крылышки в медово-горчичном маринаде»
Ингредиенты:
— 8 штук свиных крыльев (или около 1,2–1,5 кг)
— 3 столовые ложки горчицы
Нейросеть с первого раза заметила подвох и упомянула, что на самом деле крылья — реальная часть свиньи. Тест на логику пройден, так что в лидеры вырывается Qwen 2.5-Max, обойдя конкурентов ChatGPT и DeepSeek по умению рассуждать.
Проверка на умение визуализировать
Перейдем ко второй части зачета — к тестированию на генерацию картинок. Будем сравнивать умение генерации картинки по историческому событию. Оцениваем по нескольким критериям: точность деталей, соответствие эпохе того времени, общее качество картинки. Помимо прочего, сгенерируем нереалистичное мультяшное изображение и оценим креатив модели, стилизацию, логическую составляющую картинки.
ChatGPT
Генерация по историческому событию
Историческое событие, которое хочу сгенерировать, — Бостонское чаепитие — бунт американских колонистов из-за повышения Великобританией налога на чай. Вводим запрос:
«Создай реалистичное историческое изображение. Сцена “Бостонского чаепития”, произошедшего в порту Бостона, 16 декабря 1773 года. Группа колонистов, переодетых в индейцев, бросают ящики с чаем в воду. На заднем плане видны другие корабли, наблюдатели на берегу и городской пейзаж Бостона того времени. Обрати внимание на детализацию: одежда участников, выражения лиц, архитектура города и кораблей».
По сгенерированной картинке отметим соответствие эпохе: здания, корабли и одежда колонистов неплохо прорисованы. Однако модель не учла, что колонисты должны быть переодеты в индейцев. Также бросается в глаза плохая отрисовка деталей, таких как лица людей и содержимое в ящиках. Чай изображен буквально чашками чая. Вердикт — по генерации соблюден один критерий из трех.
Мультяшная генерация
Промпт:
«Создай мультяшное изображение. Слон и пингвин играют в баскетбол на Луне. Слон одет в форму Neebook, а пингвин — в форму Adios. На заднем плане видны кратеры лунной поверхности и звезды. Они оба парят в воздухе из-за низкой гравитации».
На удивление получилось очень хорошо. Нейросеть смогла изобразить логику нахождения в космосе и надписи на футболках, а также подошла к реализации с креативом. Изображение соответствует всем критериям оценки, ставим три из трех.
Общая оценка для ChatGPT – 4 из 6. Довольно неплохо, но модели стоит поучиться генерировать лица людей и более кропотливо отрисовывать мелкие детали.
DeepSeek, твое время еще не настало
У модели DeepSeek нет встроенного генератора изображений. Однако разработчики предлагают для этого мультимодальную модель Janus-Pro-7B. Мы обязательно развернем ее локально, протестируем и поделимся результатами в будущем. Пока остановимся на решениях, которые предлагают мгновенную интеграцию через браузер и рассчитаны на широкую аудиторию.
Как настроить шаблон для генерации иллюстраций c помощью библиотеки от Hugging Face и задеплоить его на сервер с GPU — рассказали в обзоре.
Qwen
Генерация по историческому событию
Пришла очередь Qwen сгенерировать картинку на оценку.
Промпт
«Создай реалистичное историческое изображение. Сцена “Бостонского чаепития”, произошедшего в порту Бостона, 16 декабря 1773 года. Группа колонистов, переодетых в индейцев, бросают ящики с чаем в воду. На заднем плане видны другие корабли, наблюдатели на берегу и городской пейзаж Бостона того времени. Обрати внимание на детализацию: одежда участников, выражения лиц, архитектура города и кораблей».
Нейросеть смогла отрисовать наспех переодетых в индейцев колонистов, но поместила их в воду и плохо отрисовала чай. Из прочих особенностей — видим на фоне несколько небоскребов, один из которых похож на здание всемирного торгового центра. На корабле — флаг Австрии (не путать с флагом Вашингтона). За точность изображения можно поставить балл, но историческое соответствие и качество изображения не впечатлили.
Мультяшная генерация
Вторая генерация тоже не сильно порадовала. Для пользователя, который впервые видит картинку, не будет понятно, что персонажи играют в баскетбол: логика нарушена из-за двух мячей. Стилизация кажется дешевой, не прорисованной.
Модель не смогла показать ни креатива, ни должной стилизации, а также нарушила логику игры в баскетбол. Вердикт — один балл из шести. На мой взгляд, разработчикам нужно дорабатывать генерацию картинок.
Промпт
«Создай мультяшное изображение. Слон и пингвин играют в баскетбол на Луне. Слон одет в форму Neebook, а пингвин — в форму Adios. На заднем плане видны кратеры лунной поверхности и звезды. Они оба парят в воздухе из-за низкой гравитации».
Проверка на программиста
Перейдем к заключительной части сравнения нейросетей — написанию кода. Запрос относительно простой. Оцениваем быстродействие, качество и скорость генерации кода.
Промпт:
«Мне необходимо на языке Python реализовать алгоритм быстрой сортировки. Функция принимает список чисел из файла (1 000 000 чисел), сортирует и выводит время сортировки. Сделай этот код наиболее эффективным и быстрым. Для каждой модели буду давать один и тот же список».
ChatGPT
import random
import time
# Реализация быстрой сортировки с улучшениями
def quicksort(arr):
if len(arr) <= 1:
return arr
# Случайный выбор опорного элемента для улучшения производительности
pivot = arr[random.randint(0, len(arr) - 1)] # случайный элемент как опорный
left = [x for x in arr if x < pivot]
right = [x for x in arr if x > pivot]
middle = [x for x in arr if x == pivot]
# Рекурсивно сортируем и соединяем части
return quicksort(left) + middle + quicksort(right)
# Основная функция для чтения данных из файла и сортировки
def main():
# Чтение данных из файла
with open('my_list.txt', 'r') as file:
# Читаем одну строку, разделяем по пробелам и преобразуем в список целых чисел
arr = list(map(int, file.read().strip().split()))
# Засекаем время сортировки
start_time = time.time()
# Сортируем данные с помощью быстрой сортировки
sorted_arr = quicksort(arr)
# Выводим время сортировки
end_time = time.time()
print(f"Время сортировки: {end_time - start_time} секунд")
if __name__ == "__main__":
main()
На генерацию ушло около 10 секунд, модель использовала алгоритм быстрой сортировки со случайным выбором опорного элемента, что поможет избежать квадратичной сложности. За 10 сортировок среднее время выполнения кода — 4,88 секунды. Еще нейросеть оставила комментарии в коде, что приятно. В целом неплохой результат.
DeepSeek
Промпт
«Мне необходимо на языке Python реализовать алгоритм быстрой сортировки. Функция принимает список чисел из файла (1 000 000 чисел), сортирует и выводит время сортировки. Сделай этот код наиболее эффективным и быстрым.
Для каждой модели буду давать один и тот же список».
import time
def quick_sort(arr):
stack = [(0, len(arr) - 1)]
while stack:
low, high = stack.pop()
if high - low < 16:
insertion_sort(arr, low, high)
continue
pivot = median_of_three(arr, low, high)
i = low
j = high
while True:
while arr[i] < pivot:
i += 1
while arr[j] > pivot:
j -= 1
if i >= j:
break
arr[i], arr[j] = arr[j], arr[i]
i += 1
j -= 1
if j - low > high - i:
stack.append((low, j))
stack.append((i, high))
else:
stack.append((i, high))
stack.append((low, j))
def median_of_three(arr, low, high):
mid = (low + high) // 2
if arr[low] > arr[mid]:
arr[low], arr[mid] = arr[mid], arr[low]
if arr[low] > arr[high]:
arr[low], arr[high] = arr[high], arr[low]
if arr[mid] > arr[high]:
arr[mid], arr[high] = arr[high], arr[mid]
return arr[mid]
def insertion_sort(arr, low, high):
for i in range(low + 1, high + 1):
key = arr[i]
j = i - 1
while j >= low and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
def read_numbers(filename):
with open(filename) as f:
return [int(line) for line in f]
if __name__ == "__main__":
numbers = read_numbers('my_list.txt')
start_time = time.perf_counter()
quick_sort(numbers)
end_time = time.perf_counter()
print(f"Sorted 1,000,000 numbers in {end_time - start_time:.3f} seconds")
Модель думала над ответом 91 секунду — намного дольше, чем у западного конкурента. Однако за 10 сортировок среднее время выполнения — 2,354 секунды, т. к. модель использовала итеративный подход, а pivot выбирается «методом трех медиан» для выбора опорного элемента и вставочной сортировки для маленьких подмассивов. Это хороший вариант оптимизации для такой задачи, но по сравнению с выбором опорного элемента немного увеличивает шанс квадратичной сложности.
Qwen2.5-Max
Промпт
«Мне необходимо на языке Python реализовать алгоритм быстрой сортировки. Функция принимает список чисел из файла (1 000 000 чисел), сортирует и выводит время сортировки. Сделай этот код наиболее эффективным и быстрым.
Для каждой модели буду давать один и тот же список».
import time
import random
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
def quicksort_inplace(arr, low, high):
if low < high:
pi = partition(arr, low, high)
quicksort_inplace(arr, low, pi - 1)
quicksort_inplace(arr, pi + 1, high)
def partition(arr, low, high):
pivot = arr[high]
i = low - 1
for j in range(low, high):
if arr[j] < pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i + 1], arr[high] = arr[high], arr[i + 1]
return i + 1
def read_numbers_from_file(filename):
with open(filename, 'r') as file:
numbers = [int(line.strip()) for line in file]
return numbers
def main():
filename = 'my_list.txt' # Укажите путь к вашему файлу с числами
numbers = read_numbers_from_file(filename)
start_time = time.time()
quicksort_inplace(numbers, 0, len(numbers) - 1)
end_time = time.time()
print(f"Время сортировки: {end_time - start_time:.5f} секунд")
if __name__ == "__main__":
main()
Тут модель сгенерировала алгоритм в двух вариантах — классическом и оптимизированном. In-place версия подходит для больших данных, а также быстрее из-за отсутствия операций копирования. За 10 сортировок — 3,08 секунд. Средний результат по сравнению с другими моделями.
Вердикт
Все модели успешно справились с написанием простейшего кода для сортировки. Но по моему мнению, DeepSeek оказалась чуть-чуть лучше остальных за счет среднего времени выполнения кода. Важно отметить, что написать большой и сложный код без единой ошибки пока не получается ни у одной нейросети. Но они с каждым месяцем показывают результаты лучше и лучше.
Что в итоге
В завершение хочу отметить сильные черты DeepSeek: модель умеет рассуждать благодаря технологии DeepThink, а также эффективно составляет код простого и среднего уровня. Для генерации изображений нужна отдельная модель от DeepSeek, но возможно разработчики добавят ее поддержку позже. Рекомендую опробовать эту модель, если еще этого не сделали! Отдельный плюс за то, что DeepSeek не блокирует российский регион, полностью бесплатна (пока) и позволяет решать многие рутинные задачи, с которыми мы сталкиваемся.
Также стоит обратить внимание на новую нейросеть Qwen2.5-Max. Пока она не умеет генерировать реалистичные картинки, но хорошо работает с логикой, кодом и даже созданием видео.