Как программируют боты с искусственным интеллектом: сравнение Bing, Claude+, Co-Pilot, GPT-4 и Bard
29 апреля 2023 г.По мере развития технологий все больше и больше задач автоматизируются. Одной из быстро развивающихся областей является компьютерное программирование. Недавно было разработано несколько ИИ-ботов, которые могут писать код, освобождая программистов для работы над другими задачами.
В этой статье мы сравним четыре самых продвинутых ИИ-бота: GPT-4, Bing, Claude+, Bard и GitHub Co-Pilot. Мы рассмотрим, как они работают, их сильные и слабые стороны и как они соотносятся друг с другом.
Тестирование ИИ-ботов для написания кода
Прежде чем мы углубимся в сравнение этих четырех ботов ИИ, важно понять, что такое бот ИИ для кодирования и как он работает. AI-бот для кодирования — это программа искусственного интеллекта, которая может автоматически генерировать код для конкретной задачи. Эти боты используют алгоритмы обработки естественного языка и машинного обучения для анализа кода, написанного человеком, и создания нового кода на основе этого анализа.
Для начала мы собираемся протестировать ИИ на сложном вопросе Leetcode, в конце концов, мы хотим иметь возможность решать сложные проблемы кодирования. Мы также хотели проверить его на менее известном вопросе. Для нашего эксперимента мы будем тестировать Leetcode 214. Кратчайший палиндром. Это чем-то похоже на Leetcode 3, так как это одна из самых популярных проблем со строками.
GPT-4: новейшее и лучшее
Вот ответ GPT-4 на Python:
def shortestPalindrome(self, s: str) -> str:
if not s:
return s
# Find the longest palindrome prefix
def kmp_table(s: str) -> List[int]:
table = [0] * len(s)
i, j = 1, 0
while i < len(s):
if s[i] == s[j]:
table[i] = j + 1
i += 1
j += 1
elif j > 0:
j = table[j - 1]
else:
i += 1
return table
# Combine the original string and its reverse with a special character '#'
s_extended = s + '#' + s[::-1]
table = kmp_table(s_extended)
# The last element of the table is the longest palindrome prefix
longest_palindrome_prefix = table[-1]
# Add characters to the beginning to form a palindrome
return s[longest_palindrome_prefix:][::-1] + s
Заявка проходит все тесты. Он превзошел 47% отправок по времени выполнения и 8% по памяти.
Сильные стороны GPT-4
GPT-4 очень универсален для создания кода для различных языков программирования и приложений. Некоторые из предостережений заключаются в том, что для получения ответа требуется гораздо больше времени. Использование API также обходится намного дороже, и затраты могут быстро возрасти. В целом он дал правильный ответ и прошел тест.
Bing: поисковая система, умеющая программировать
Bing – это поисковая система, разработанная Microsoft. Ранее в этом году они интегрировали GPT в качестве нового способа поиска. Bing использует глубокие нейронные сети и обработку естественного языка для анализа кода, написанного человеком, и создания нового кода на основе этого анализа. Bing предназначен не для создания полных программ, а для создания небольших фрагментов кода, поскольку на данный момент вы получаете только 20 дополнительных вопросов за чат.
Вот ответ Bing на Python:
def shortestPalindrome(self, s: str) -> str:
if not s:
return ""
rev_s = s[::-1]
for i in range(len(s), -1, -1):
if s[:i] == rev_s[len(s)-i:]:
return rev_s[:len(s)-i] + s
Заявка прошла все тесты. Он превзошел 47% отправок по времени выполнения и 37% по памяти. Этот код выглядит намного проще, чем сгенерированный GPT-4. Он превзошел GPT-4 по памяти и использовал меньше кода! Bing, кажется, имеет самый эффективный код на данный момент, однако он дал очень краткое объяснение того, как он решил эту проблему. Тем не менее пока лучший.
Клод+: Антропный робот с искусственным интеллектом
Claude+ – это бот с искусственным интеллектом, разработанный компанией Anthropic. Выпущенная в марте 2023 года новая версия Клода была представлена. В отличие от других чат-ботов ИИ, Клод стремится предложить более безопасный ИИ с менее токсичными, предвзятыми и галлюцинаторными реакциями, чтобы ускорить развитие ИИ. положительно влияют на мир. В целом об этом ИИ говорят меньше, так что давайте посмотрим, является ли он скрытой жемчужиной.
Вот код Клода+ на Python:
def shortestPalindrome(self, s: str) -> str:
n = len(s)
# Find the longest suffix that is a palindrome
suffix = ''
for i in range(n-1, -1, -1):
if s[-i:] == s[-i:][::-1]:
suffix = s[-i:]
break
# Find the longest prefix that is a palindrome
prefix = ''
for i in range(n):
if s[:i+1] == s[:i+1][::-1]:
prefix = s[:i+1]
break
# The palindrome is prefix + suffix + reverse of rest of the string
return prefix + suffix + s[:n-len(prefix)-len(suffix)][::-1] + s[n-len(prefix)-len(suffix):]
Код не проходит проверку отправки. Только 1/121 теста пройдено. Ой! Это казалось многообещающим, но похоже, что Клод не очень хорошо подходит для программирования.
Бард: робот с искусственным интеллектом от Google
Теперь мы переходим к Барду. Как и многие другие, Барда недавно освободили. Хотя над ним высмеивались прошлое, давайте посмотрим, как оно справляется с задачами кодирования. В конце концов, Google — одна из ведущих технологических компаний, особенно в области искусственного интеллекта.
Вот код Барда для решения проблемы:
def shortestPalindrome(self, s):
lps = [0] * len(s)
for i in range(1, len(s)):
j = lps[i - 1]
while j > 0 and s[i] != s[j]:
j = lps[j - 1]
if s[i] == s[j]:
j += 1
lps[i] = j
palindrome = ""
i = len(s) - 1
while i >= 0:
if lps[i] == 0:
palindrome = s[i] + palindrome
else:
palindrome = s[i:lps[i]] + palindrome
i = lps[i] - 1
return palindrome
Итак, для начала мне пришлось вручную вставить аргумент «я» в функцию, поскольку Бард его не включил. По результатам теста код Барда не прошел тест на отправку. Прохождение только 2/121 тестовых случаев. Печальный результат, но сейчас можно с уверенностью сказать, что Бард не является экспертом в области кодирования.
Второй пилот GitHub
Хотя технически это не похоже на остальные, мы решили добавить второго пилота. в этом списке, чтобы увидеть, как он сочетается с остальными. На данный момент Co-pilot — самый популярный помощник по программированию, которым пользуются более миллиона разработчиков.
Я начну с того, что создам комментарий к VSCode и попрошу его решить тот же вопрос о литкоде.
Вот код, который вернул второй пилот:
def shortestPalindrome(self, s: str) -> str:
if not s:
return s
n = len(s)
for i in range(n-1, -1, -1):
if s[:i+1] == s[:i+1][::-1]:
return s[i+1:][::-1] + s
return s
Это проходит все тесты. Он показал лучшие результаты, чем 30 % при выполнении и 37 % при использовании памяти.
Заключение
В целом кажется, что Bing предлагает наименее адекватную помощь в кодировании в группе. Интересно, что и Bing, и Co-Pilot под капотом работают на GPT. Я предоставил всем ИИ одну и ту же подсказку: «Решить литкод 214. Кратчайший палиндром». Хотя я мог бы задать дополнительные вопросы, я решил рассмотреть только первоначальный ответ.
Неясно, была ли какая-либо из этих моделей предварительно обучена на данных Leetcode. Я протестировал эти модели, потому что по состоянию на апрель 2023 года они кажутся наиболее эффективными в программировании. Хотя есть некоторые модели с открытым исходным кодом, такие как Alpaca, Llama, Vicuna и GPT-J, ни одна из них пока не может сравниться по эффективности с моделями с закрытым исходным кодом.
Что ты думаешь? Какая модель программирования показалась вам наиболее эффективной и какой из способов ее реализации оказался наиболее эффективным?
:::информация Также опубликовано здесь.< /а>
:::
Оригинал