AI 챗봇의 코딩 능력을 테스트하는 방법 - 당신도 할 수 있습니다
이 기사에서는 자주 사용하는 AI 챗봇에서 반복하여 안정적으로 프로그래밍하는 데 도움이 될 수 있는지 확인할 수 있는 자세한 프롬프트와 테스트를 제공합니다.
ChatGPT와 생성적 인공지능(AI)이 2022년 대중의 관심을 받은 이후로 저는 AI 챗봇이 코드를 얼마나 잘 작성할 수 있는지 탐구해 왔습니다. 처음에 이 기술은 강아지가 새로운 재주를 부리도록 격려하는 것과 비슷한 참신한 기술이었습니다.
그러나 AI 챗봇이 어떻게 효과적인 생산성 도구이자 프로그래밍 파트너가 될 수 있는지 확인한 이후로 저는 이 도구에 대해 보다 심층적인 테스트를 실시해 왔습니다. 시간이 지남에 따라 주요 AI LLM(대형 언어 모델)의 성능을 평가하는 데 사용한 4가지 실제 테스트 세트를 편집했습니다. 지금까지 저는 10개의 LLM을 테스트했습니다. 이 요약 문서에서 10가지 항목 모두의 포괄적인 결과를 볼 수 있습니다.
- 2024년 코딩을 위한 최고의 AI(그리고 사용하지 말아야 할 것)
이 기사는 여러분이 내 테스트를 보고 복사하여 직접 실행할 수 있는 살아있는 문서로 작성되었습니다. 성능을 설명하는 기사와 함께 일련의 개별 테스트를 계속하겠습니다. 하지만 이제는 집에서(또는 인터넷 연결이 양호한 곳이면 어디든) 마음껏 즐기고 놀 수 있습니다.
테스트를 업데이트하거나 추가하면 이 문서도 업데이트되므로 시간이 지나면 다시 확인해 보세요.
AI 코딩 테스트 제품군을 발전시킨 방법
AI가 임의의 사양이나 요구 사항을 충족하는지 확인하기 위해 성능을 평가하는 것과 일상적인 프로그래밍 작업에 도움이 될 수 있는지 확인하기 위해 기술을 테스트하는 것에는 차이가 있습니다.
처음에는 전자를 시도했습니다. 나는 시간과 날짜 계산을 추가하여 전통적인 "hello, world" 출력을 생성하는 프롬프트를 실행했습니다. 프롬프트는 다음과 같습니다.
Write a program using [language name] that outputs "Good morning," "Good afternoon," or "Good evening" based on what time it is here in Oregon, and then outputs ten lines containing the loop index (beginning with 1), a space, and then the words "Hello, world!".프롬프트를 실행하려면 [언어 이름]을 테스트하려는 언어로 바꾸세요. 22개의 프로그래밍 언어를 지정하여 ChatGPT에서 프롬프트를 테스트했습니다. 여기에서 결과를 확인할 수 있습니다.
저는 ChatGPT를 사용하여 12개의 주요 프로그래밍 언어로 동일한 루틴을 작성했습니다. 그 방법은 다음과 같습니다
여기에서 더 많은 내용을 볼 수 있습니다.
저는 ChatGPT를 사용하여 이 10가지 모호한 프로그래밍 언어로 동일한 루틴을 작성했습니다.
이것은 재미있는 테스트였습니다. 특히 더 모호한 언어와 환경을 실행했을 때 더욱 그렇습니다. 누구보다도 더 많은 즐거움을 누리고 싶다면 [언어 이름]을 "셰익스피어"로 대체하세요. 그리고 그렇습니다. 소스 코드가 셰익스피어 희곡으로 나타나는 SPL(셰익스피어 프로그래밍 언어)이라는 참신한 언어가 있습니다. 그다지 잘 실행되지는 않지만 이제 우리가 신나는 파티를 원할 때 언어 디자이너가 무엇을 하는지 알게 되었습니다.
내가 어떻게 몇 주 동안 이 토끼 굴을 내려갈 수 있었는지 알 수 있습니다. 그러나 중요한 질문은 AI가 실제 프로그래밍 작업에 도움이 될 수 있는지 여부입니다.
저는 실제 일상적인 프로그래밍 작업을 사용하여 테스트를 진행했습니다. 예를 들어, ChatGPT가 공개 도구가 된 직후 아내는 업무 프로젝트에 도움이 될 맞춤형 WordPress 기능을 요청했습니다. 나는 ChatGPT가 그것을 구축할 수 있는지 알아보기로 결정했습니다. 놀랍게도 그랬습니다.
다른 때에는 ChatGPT에게 코드 세그먼트를 다시 작성하고, 나를 당황하게 했던 코딩 오류를 디버그하고, 스크립팅 도구를 사용하여 코드를 작성하도록 했습니다. 이것들은 실제 업무의 일부로 해결해야 했던 문제였습니다.
현존하는 프로그래밍 언어가 너무 많기 때문에 테스트할 언어를 선택하려고 애쓰는 일에 열중하지 않기로 결정했습니다. 대신 저는 업무에 사용하는 언어를 선택했습니다. 그 접근 방식이 AI가 실제 도우미로서 어떻게 수행되는지에 대해 더 많은 것을 알려주기 때문입니다. 생산성 테스트는 PHP, JavaScript, CSS 및 HTML로 진행됩니다.
프로그래밍 프레임워크에도 동일한 접근 방식을 사용했습니다. 저는 대부분의 작업을 WordPress에서 수행하고 있기 때문에 WordPress를 사용하고 있습니다. 일부 테스트는 AI가 WordPress API의 고유한 측면을 얼마나 잘 알고 있는지 확인하는 데 도움이 됩니다.
최근에 일부 Mac 스크립팅을 수행했기 때문에 AppleScript와 Chrome API를 사용하여 테스트를 만들었습니다. 추가 테스트를 추가하면 이 문서에 포함하겠습니다.
다음으로 각 테스트에 대해 알아보겠습니다. 그 중 4개가 있습니다.
테스트 1: WordPress 플러그인 작성
이는 AI가 사용자 인터페이스 코드를 포함하여 전체 WordPress 플러그인을 작성할 수 있는지 여부를 테스트합니다. AI 챗봇이 이 테스트를 통과하면 웹 개발자의 보조자로서 기본적인 코드를 작성하는 데 도움이 될 수 있습니다. 저는 원래 이 테스트를 "ChatGPT에 필요한 WordPress 플러그인 작성을 요청했습니다. 5분 이내에 완료했습니다"라는 기사에 문서화했습니다.
실제 요구사항: 제 아내는 WordPress 전자상거래 사이트를 운영하고 고객을 위해 바쁜 Facebook 그룹을 관리합니다. 매달 그녀는 온라인에서 찾은 사이트를 사용하여 이름 목록을 무작위로 뽑았지만 목록을 추출하는 것이 번거로웠습니다. 그녀의 참가자 중 일부는 여러 항목에 대한 자격이 있었고 일부 참가자는 많은 항목을 가지고 있었기 때문에 그녀는 이름이 목록 내에 분산되기를 원했습니다.
이 상황을 해결하기 위해 그녀는 대시보드에서 직접 더 쉽게 액세스할 수 있는 WordPress 플러그인을 만들어 달라고 요청했습니다. 필요한 UI와 로직을 갖춘 기본 플러그인을 개발하는 데는 며칠이 걸릴 수 있었고 일정도 빡빡했습니다. 그래서 AI에 눈을 돌렸습니다.
ChatGPT가 그녀의 요구 사항을 충족하는 작고 멋진 WordPress 플러그인을 만들 수 있다는 사실을 발견한 후(그녀는 여전히 이를 사용하고 있습니다) 저는 이 프로세스가 AI에 대한 훌륭한 테스트가 될 것이라고 결정했습니다.
테스트 데이터: 다음 프롬프트를 단일 요청으로 사용하세요.
Write a PHP 8 compatible WordPress plugin that provides a new admin menu and an admin interface with the following requirements:
Provide a text entry field where a list of lines can be pasted into it. A button, that when pressed, randomizes the lines in the list and presents the results in a second text entry field with no blank lines.
Make sure no two identical entries are next to each other (unless there's no other option). Be sure the number of lines submitted and the number of lines in the result are identical to each other.
Under the first field, display text stating "Line to randomize: " with the number of nonempty lines in the source field. Under the second field, display text stating "Lines that have been randomized: " with the number of non-empty lines in the destination field.플러그인이 완료되면 다음 이름을 테스트 데이터로 사용하십시오(William Hernandez 및 Abigail Williams가 중복됨).
Sophia Davis
Charlotte Smith
Madison Garcia
Isabella Davis
Abigail Williams
Mia Garcia
Isabella Jones
Alexander Gonzalez
Olivia Gonzalez
Emma Jackson
Ethan Jackson
Sophia Johnson
Abigail Williams
Liam Jackson
Noah Lopez
Olivia Jackson
Ava Martin
Benjamin Johnson
Alexander Jackson
Alexander Lopez
Charlotte Rodriguez
Olivia Rodriguez
Ethan Martin
Noah Thomas
Isabella Anderson
Abigail Williams
Michael Williams
William Hernandez
Abigail Miller
Emma Davis
Sophia Martinez
William Hernandez결과에서 확인할 사항: 새 .php 파일에 붙여넣을 수 있는 텍스트 블록이 필요합니다. 블록에는 적절한 헤더와 UI 정보가 모두 포함되어야 합니다. 이 코드에는 관련 JavaScript 파일이 필요하지 않습니다.
플러그인이 WordPress 설치에 설치되면 다음과 유사한 대시보드 메뉴와 사용자 인터페이스가 표시됩니다.
첫 번째 필드에 이름을 붙여넣고 무작위 버튼을 클릭한 후 두 번째 필드에서 결과를 찾습니다. William Hernandez 및 Abigail Williams에 대한 여러 항목이 목록 내에 배포되었는지 확인하십시오.
테스트 2: 문자열 함수 다시 작성
이 테스트는 AI 챗봇이 더 나은 기능을 위해 유틸리티 기능을 업데이트하는 방법을 평가합니다. 나는 원래 이 테스트를 "좋아, 그래서 ChatGPT가 내 코드를 디버깅했습니다. 실제로"라고 문서화했습니다.
실제 요구 사항: 유효한 금액을 확인하는 검증 루틴이 있었습니다. 그러나 사용자의 버그 보고서에서는 정수(즉, 5.02가 아닌 5)만 허용한다고 지적했습니다.
코드를 다시 작성하는 데 1~4시간이 걸릴 수 있는 시간을 소비하는 대신 AI에게 이를 요청했습니다.
테스트 데이터: 다음 프롬프트를 단일 요청으로 사용하세요.
Please rewrite the following code to change it from allowing only integers to allowing dollars and cents (in other words, a decimal point and up to two digits after the decimal point).
str = str.replace (/^0+/, "") || "0";
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;결과에서 확인할 사항: 가능한 여러 실패 시나리오에 대해 코드를 테스트합니다. 코드에 영숫자 값을 제공하고 실패하는지 확인하세요.
코드가 선행 0을 처리하는 방법을 확인하세요. 센트의 경우 두 자리 이상의 입력을 처리하는 방법을 확인하세요. 코드가 소수점 이하 한 자리를 어떻게 처리하는지 확인하세요.
소수점 왼쪽 5~6자리를 처리할 수 있는지 확인하세요.
테스트 3: 짜증나는 버그 찾기
이 테스트는 뻔한 답이 틀렸기 때문에 워드프레스에 대한 깊은 지식이 필요합니다. AI 챗봇이 이 테스트에 올바르게 응답할 수 있다면 WordPress와 같은 프레임워크를 사용해도 지식 기반이 상당히 완성된 것입니다. 나는 원래 이 테스트를 "좋아, 그래서 ChatGPT가 내 코드를 디버깅했습니다. 실제로"라고 문서화했습니다.
실제 요구 사항: 나중에 매각한 제품에 대한 새 코드를 작성하고 있었습니다. 두 개의 매개변수를 사용하는 함수와 두 개의 매개변수를 내 코드로 보내는 호출 문이 있었습니다.
문제는 계속 오류 메시지가 표시된다는 것이었습니다.
메시지의 두드러진 부분은 한 지점에서는 "1 통과"라고 말하고 다른 지점에서는 "정확히 2 예상"이라고 명시되어 있다는 것입니다. 호출 명령문과 함수 정의를 살펴보았는데 두 위치 모두에 두 개의 매개변수가 있었습니다. 이 문제로 인해 꽤 오랫동안 정신이 나갔기 때문에 ChatGPT에 도움을 요청했습니다.
호출을 수행한 코드 줄, 함수 자체, 핸들러(주 프로그램의 후크에서 호출된 함수를 전달하는 작은 코드)를 보여주었습니다.
테스트 데이터: 다음 프롬프트를 단일 요청으로 사용하세요.
I am using this function to process a WordPress filter:
$transaction_form_data = apply_filters( 'sd_update',
$transaction_form_data, $donation_id);
it's handled by
add_filter( 'sd_update', 'sd_aan_update', 10, 1 ) ;
and the function it calls is:
function sd_aan_update ( $donation_data, $donation_id ) {
// this processes the form data after
// the transaction returns from the gateway
if ( isset( $donation_data['ADD_A_NOTE'] ) ) {
update_post_meta( $donation_id,
'_dgx_donate_aan_note',
$donation_data [ 'ADD_A_NOTE']);
}
return $donation_data:
}
(!) ArgumentCountError: Too few arguments to function sd_aan_update(), 1 passed in /Users/david/Documents/Development/local-sites/sd/app/public/w-includes/class-wp-hook.php on line 310 and exactly 2 expected in /Users/david/Documents/Development/local-sites/sd/app/public/wp-content/plugins/ sd-add-a-note/sd-add-a-note.php on line 233결과에서 찾아야 할 사항: 뻔한 대답은 정답이 아닙니다. 실제로 add_filter 함수에는 올바른 매개변수가 없었습니다. 내 코드에서 add_filter 함수는 네 번째 매개변수에 값 1을 지정했습니다. 즉, 필터 함수는 하나의 매개변수만 수신합니다. 실제로 두 개의 매개변수가 필요합니다.
이 문제를 해결하려면 AI는 add_filter 함수의 네 번째 매개변수를 2로 변경하여 두 개의 매개변수로 필터 함수를 올바르게 등록하도록 권장해야 합니다.
내가 테스트한 대부분의 AI는 이 문제를 놓치는 경향이 있습니다. 그들은 호출 함수의 다른 매개변수를 업데이트해야 한다고 생각합니다. 따라서 이는 AI가 WordPress 프레임워크의 add_filter 기능이 어떻게 작동하는지 알아야 하는 까다로운 질문입니다.
테스트 4: 스크립트 작성
이 테스트에서는 AI 챗봇에게 대부분의 사용자에게 알려지지 않은 상당히 전문화된 두 가지 프로그래밍 도구를 사용하여 프로그래밍하도록 요청합니다. 이는 본질적으로 큰 언어를 넘어서는 AI 챗봇의 지식을 테스트합니다. 나는 원래 이 테스트를 "Google이 Gemini Code Assist를 공개했으며 이것이 프로그래머에게 도움이 될 것이라고 조심스럽게 낙관하고 있습니다"라는 글에 문서화했습니다.
실제 요구사항: 저는 많은 클릭과 키 입력을 줄일 수 있는 Mac용 자동화 루틴을 구축하고 싶었습니다. 저는 Mac에서 여러 가지 자동화 작업을 수행하기 위해 Keyboard Maestro라는 도구를 사용합니다(스테로이드의 단축키라고 생각하세요). Keyboard Maestro는 호주의 한 프로그래머가 작성한 상당히 모호한 프로그램입니다.
이 경우 내 루틴이 열려 있는 Chrome 탭을 확인하고 현재 활성화된 Chrome 탭을 루틴에 전달된 탭으로 설정하기를 원했습니다. 이 작업을 수행하려면 Keyboard Maestro가 일부 AppleScript 코드를 실행하여 Chrome의 API와 인터페이스해야 합니다.
다시 한 번 ChatGPT에 이 코드를 작성해 AppleScript 작성에 소요되는 몇 시간과 Chrome 데이터에 액세스하는 방법을 찾는 데 소요되는 시간을 절약해 달라고 요청했습니다.
테스트 데이터: 다음 프롬프트를 단일 요청으로 사용하세요.
Write a Keyboard Maestro AppleScript that scans the frontmost Google Chrome window for a tab name containing the string matching the contents of the passed variable instance__ChannelName. Ignore case for the match. Once found, make that tab the active tab.결과에서 찾아야 할 사항: 이것은 상당히 알려지지 않은 프로그래밍 도구(Keyboard Maestro), AppleScript 및 Chrome API뿐만 아니라 이 세 가지 기술이 모두 어떻게 작동하는지 테스트하기 때문에 좋은 AI 테스트입니다. 상호작용하다
먼저 결과 AppleScript가 다음과 같은 Keyboard Maestro로부터 채널 이름 변수를 가져오는지 확인합니다.
tell application "Keyboard Maestro Engine"
set channelName to getvariable "instance__ChannelName"
end tellAppleScript의 나머지 부분은 블록에 포함되어야 합니다. 대소문자를 무시해야 하므로 대소문자 대체를 찾거나 AppleScript에서 대소문자를 구분하지 않는 "contains"를 사용하십시오.
tell application "Google Chrome"어린이 여러분, 집에서 이것을 시도해 볼 수 있습니다
자유롭게 이러한 테스트를 수행하고 선택한 AI에 연결해 보세요. 결과가 어떻게 나오는지 확인하세요. 이러한 테스트와 직접 개발할 수 있는 기타 테스트를 사용하면 AI가 생성하는 코드를 얼마나 신뢰할 수 있는지 파악하는 데 도움이 됩니다.
지금까지 ChatGPT 외에도 ChatGPT Plus, Perplexity, Perplexity Pro, Meta AI, Meta Code Llama, Claude 3.5 Sonnet, Gemini Advanced 및 Microsoft Copilot과 같은 AI 챗봇을 테스트했습니다. 다음은 전체 세트에 대해 집계된 결과에 대한 보고서입니다.
- 2024년 코딩을 위한 최고의 AI(그리고 사용하지 말아야 할 것)
계속 지켜봐 주시기 바랍니다. 더 많은 테스트 결과가 나오면 이 기사 목록을 업데이트하겠습니다.
프로그래밍 지원을 위해 이러한 AI를 사용한 적이 있습니까? 결과는 어땠나요? AI에 대해 이러한 테스트를 시도해 보셨나요? 당신의 경험은 어땠나요? 아래 댓글을 통해 알려주세요.
소셜 미디어에서 저의 일상적인 프로젝트 업데이트를 팔로우하실 수 있습니다. 주간 업데이트 뉴스레터를 구독하고 Twitter/X(@DavidGewirtz), Facebook(Facebook.com/DavidGewirtz), Instagram(Instagram.com/DavidGewirtz), YouTube(YouTube.com/DavidGewirtzTV)에서 저를 팔로우하세요.

