[00:00]
새로운 AI 모델이 나올 때마다
[00:02]
저는 그걸로 코딩을 해봅니다. 재미있는
[00:04]
원샷이나 쓰리샷, 또는 필요한 만큼
[00:06]
시도해보죠. 하지만 실제 소프트웨어
[00:08]
엔지니어처럼 실무에서 사용해봅니다.
[00:10]
Windsurf나 Cursor 같은 도구를 통해
[00:12]
개발 환경에 통합된 방식으로
[00:14]
사용해보는 거죠.
[00:16]
누군가 '통합 개발 환경'이라는
[00:17]
용어를 만들었어야 했는데,
[00:19]
꽤 그럴듯하게 들리네요.
[00:21]
그래서 오늘날 가장 인기 있는
[00:24]
5개의 코딩용 AI 모델로
[00:27]
이 모든 것을 시도해보려고 합니다.
[00:28]
실제 코드베이스에서 이 모델들을
[00:30]
사용해본 모든 경험을 공유하고,
[00:33]
브라우저 인터페이스에서
[00:35]
간단한 코드를 리팩토링하고,
[00:37]
P5JS 게임을 원샷으로 만들어볼 겁니다.
[00:39]
각 모델의 장점과
[00:40]
약점을 발견하고, 어떤 작업에
[00:42]
어떤 모델이 더 적합한지 알아볼 거예요.
[00:45]
여러분이 보게 될 것은 본질적인
[00:47]
코딩 경험입니다. Tab Tab Tab을
[00:49]
좋아하긴 하지만, 그건 여기서 선택한 모델을
[00:52]
사용하지 않고 Windsurf의
[00:54]
내장 기능을 사용하죠. 그래서
[00:57]
모델들을 실제로 테스트하려면
[00:59]
여기서 프롬프트를 입력하고
[01:01]
코드베이스와의 통합을 봐야 합니다.
[01:03]
먼저 Claude 3.5 Sonnet으로 시작해보죠.
[01:06]
솔직히 이건 제가 처음 시도한 AI 코딩
[01:08]
도구였는데 정말 대단했습니다.
[01:10]
믿을 수 없을 정도로 정확하고,
[01:13]
제가 요청한 것을 최소한의 불필요한
[01:16]
설명 없이 정확하게 실행합니다.
[01:18]
제 경험상 거의 불필요한 내용이 없었고,
[01:20]
필요한 모든 맥락도 이해합니다.
[01:22]
특정 코드 파일에서 뭔가를
[01:24]
요청하면, 그 파일이 다른 파일들과
[01:26]
어떻게 연결되어 있는지 파악하고
[01:28]
거기에 있는 파일들도 분석해서
[01:30]
전체 맥락을 이해한 다음
[01:32]
최상의 코드를 작성합니다.
[01:34]
또한 맥락을 잘 유지하여
[01:36]
다른 모델들처럼
[01:37]
5개 메시지 전에 언급했던 내용을
[01:39]
다시 설명할 필요가 없습니다.
[01:41]
왜냐하면 모델이
[01:43]
기억하고 있기 때문이죠.
[01:45]
속도는 좀 느린 편이지만,
[01:47]
빠르지만 디버깅에 많은 시간을
[01:50]
쓰는 것보다 느리더라도
[01:52]
정확한 게 낫습니다.
[01:53]
이 모델이 오래되었지만
[01:54]
여전히 최고의 모델 중 하나입니다.
[01:57]
매우 정밀하고 신중한 작업이
[01:59]
필요할 때 이상적인
[02:02]
모델이라고 할 수 있죠.
[02:05]
한 가지 분명히 말씀드리자면,
[02:07]
이 영상은 Windsurf나
[02:08]
다른 AI 모델들의 후원을 받지 않았고,
[02:11]
MicroCenter의 후원을 받았습니다.
[02:13]
아시다시피 그들은
[02:14]
상상할 수 있는 모든 모니터와
[02:16]
키보드, 마우스, 조립PC,
[02:18]
컴퓨터 부품, 케이블, 스위치 등
[02:20]
모든 것을 취급합니다.
[02:23]
그리고 만약 Apple 제품을
[02:24]
구매하고 싶으시다면 지금이 적기입니다.
[02:27]
Mac Studio부터 Mac Mini,
[02:28]
MacBook Air, MacBook Pro까지
[02:31]
모든 제품이 현재 MicroCenter에서
[02:34]
할인 중입니다. 그리고 말씀드리고 싶은데
[02:36]
이것들은 최신 제품이지
[02:38]
구형 제품이 아닙니다.
[02:39]
매장에서 구매하려고 하시는 거라면
[02:41]
이것들은 2024년 말에서 2025년 초의 새로운 제품들입니다
[02:44]
만약 여러분이 새로운 Apple M4 칩을 가지고 있고
[02:46]
마이크로센터가 근처에 있는 운 좋은 분이라면
[02:48]
꼭 매장을 방문해보세요
[02:50]
매장에는 매우 도움이 되는 직원들이 많이 있습니다
[02:53]
제가 얼마 전에 Nix OS를 설치하기 위해
[02:55]
미니 PC를 사러 갔을 때
[02:58]
콘텐츠 제작용 PC와
[03:00]
코딩용 PC를 어떻게 설정할지
[03:02]
KVM 스위치와 함께 어떻게 구성할지
[03:05]
KVM 스위치 관련해서 잘 몰랐는데
[03:07]
직원분들이 정말 큰 도움이 되었습니다
[03:10]
근처에 매장이 없다면
[03:11]
아래 설명란의 링크를 클릭하시면
[03:12]
모든 세일 정보를 확인하실 수 있고
[03:14]
원하시는 모든 것을 검색하실 수 있습니다
[03:17]
그리고 캘리포니아 산타클라라에 사시는 분들은
[03:19]
곧 마이크로센터 매장이
[03:21]
들어설 예정이니
[03:23]
꼭 확인해보세요. 자, 영상으로 돌아가서
[03:24]
하지만 이 모델은 약간 안전하게 접근하는 경향이 있어서
[03:27]
관련된 모든 파일을 분석하긴 하지만
[03:29]
문제가 있거나 개선이 필요한 파일들은
[03:32]
리팩토링하지 않습니다
[03:34]
이는 좋은 점이면서도
[03:37]
나쁜 점이기도 합니다
[03:38]
작업에 충실하다는 점에서는 좋지만
[03:41]
개선이 필요한 부분을 놓친다는 점에서는 아쉽죠
[03:43]
Claude 3.7 Sonnet의 경우는
[03:46]
너무 야심적이라고 할 수 있습니다
[03:50]
특정 파일에 필요한 것보다
[03:52]
더 많은 것을 읽어들이고
[03:54]
읽은 모든 파일에 대해
[03:57]
'이건 리팩토링이 필요하고
[03:58]
이 함수는 삭제해야 하고
[04:00]
여기도 저기도 수정이 필요해'라며
[04:01]
모든 곳에 관여하려고 합니다
[04:03]
결국 5-6개의 변경사항을
[04:05]
검토해야 하는 상황이 되는데
[04:07]
원래는 하나만 요청했었죠
[04:09]
3.5보다 성능이 좋다고 할 수 있지만
[04:12]
집중력이 떨어지는 편입니다
[04:15]
이런 야심 때문에 종종 과도하게 확장되어
[04:18]
어떤 함수를 삭제하고는
[04:21]
다른 것으로 교체해야 하는 것을
[04:24]
잊어버리거나
[04:25]
보다 보면
[04:27]
'왜 이 함수를 삭제했지?
[04:28]
저 파일에
[04:30]
이 함수가 필요한데'라는 생각이 들죠
[04:32]
확장된 사고 모드에 대해서는
[04:33]
제가 좋아하지 않습니다. 환각이 너무 많고
[04:36]
시간도 오래 걸리고 비용도 많이 들며
[04:38]
불필요하게 복잡하게 만들려고 합니다
[04:41]
그래서 이 사고 모드는
[04:43]
제게는 선택지가 아니에요
[04:47]
3.7 자체도
[04:48]
추천하지 않을 것 같습니다
[04:50]
새로운 Gemini 2.5 Pro의 열등한 버전처럼 느껴지거든요
[04:54]
Gemini 2.5 Pro는 3.5의 장점과
[04:56]
3.7의 장점을 모두 결합한 것 같습니다
[04:59]
3.5만큼 정확하거나 더 정확하며
[05:02]
3.7처럼 넓은 시야를 가지고 있지만
[05:06]
불필요한 코드는 건드리지 않습니다
[05:09]
앞서 말씀드린 것처럼
[05:11]
3.5는 모든 파일을 분석하지만
[05:13]
요청받은 부분에 대해서만 코드를 작성하고
[05:15]
약간의 탐색만 하는 반면
[05:17]
2.5 Pro는 별도로 지정하지 않는 한
[05:20]
실제로 수정사항을 추천하고
[05:22]
리팩토링도 제안합니다
[05:24]
이런 식으로요
[05:26]
또한 매우 큰 컨텍스트 윈도우를 가지고 있어서
[05:27]
컨텍스트 윈도우가 매우 크기 때문에
[05:30]
함수를 삭제할 때도 다른 부분을 잊어버리지 않고
[05:32]
대체해야 할 부분을 정확히 기억합니다.
[05:33]
3.7 버전은 이전에 요청받은 모든 내용과
[05:36]
보았던 모든 것을 기억하며
[05:37]
큰 컨텍스트 윈도우 덕분에
[05:40]
발생하는 실수도
[05:41]
다른 모델들보다 훨씬 더 사소한 수준입니다.
[05:45]
때로는 AI 모델이
[05:46]
지시하지 않은 코드를 건드리지 않길 원하지만
[05:48]
만약 그렇게 할 수 있고
[05:50]
제대로 처리할 수 있는 모델이 있다면
[05:52]
그것이 바로 Gemini 2.5 Pro입니다.
[05:54]
대규모 코드베이스가 있고
[05:57]
처리해야 할 작업이 많거나
[05:59]
대규모 리팩토링이 필요하거나
[06:01]
복잡하고 중요한 작업이 있다면
[06:03]
이 모델을 추천합니다.
[06:06]
그리고 한 가지 더 말씀드리자면
[06:07]
Gemini 2.5 Pro가 현재 제가 가장 선호하는 모델입니다.
[06:11]
3.5 Sonnet보다도 더 선호하는데
[06:13]
범위가 좀 더 넓음에도 불구하고
[06:16]
전반적인 코드 품질이 더 우수하기 때문입니다.
[06:19]
그 다음으로는
[06:21]
3.7 Sonnet과 정반대 성향을 가진
[06:23]
Claude 3 Opus Mini를 소개하겠습니다.
[06:26]
3.7 Sonnet이 모든 곳에 접근하고
[06:28]
모든 코드를 건드리려 하는 반면
[06:31]
Claude 3 Mini는 전혀 그렇지 않습니다.
[06:34]
요청한 코드조차도
[06:36]
완전히 작성하지 않으려 합니다.
[06:37]
대부분을 작성한 후에
[06:40]
수동으로 반복 작업을 해야 합니다.
[06:42]
'이것을 추가해야 해요'라고 하면
[06:44]
그 한 줄만 추가하고
[06:46]
또 다른 것을 추가해야 하면
[06:48]
한두 줄 더 추가하는 식으로 진행됩니다.
[06:50]
정확하고 정밀한 코드를 얻을 수 있지만
[06:53]
여러 번의 수동 반복 작업이 필요합니다.
[06:56]
또한 전체 코드베이스의 맥락을
[06:59]
거의 분석하지 않기 때문에
[07:01]
주변 코드에 대한 이해가 부족합니다.
[07:03]
따라서 더 많은 통제력과
[07:05]
정밀성을 원한다면
[07:08]
3.5보다는 정확히 무슨 일이 일어나는지
[07:11]
알 수 있는 Claude 3 Mini가 좋은 선택일 수 있습니다.
[07:14]
하지만 그 정도라면 차라리
[07:16]
코드 파일 안에서 탭 자동완성을
[07:19]
사용하는 게 낫습니다. 마치
[07:21]
탭 자동완성의 불편한 버전 같아요.
[07:24]
프롬프트를 작성해야 하고...
[07:25]
영상에서 보셨겠지만
[07:27]
이게 가장 이상했는데
[07:28]
코드를 작성한 후에
[07:30]
'업데이트했으니 버튼을 테스트해보세요'라고 했어요.
[07:32]
잘 작동한다고 하니 데이터를 저장하자고 했고
[07:34]
'업데이트하겠습니다'라고 했죠.
[07:36]
변경사항을 적용하자고 했더니
[07:39]
'지금 업데이트하겠습니다'라고만 하고
[07:41]
이전 변경사항을 적용하지 않았어요.
[07:43]
코드 변경을 요청했더니
[07:46]
계속 '변경사항을 적용하겠습니다'만 반복하고
[07:48]
현재 상태에서
[07:50]
실제 프롬프트를 하려는데
[07:51]
'변경사항을 적용하겠습니다'라고만 하더니
[07:53]
'네, 진행하겠습니다'라고 했을 때
[07:55]
코드를 diff 형태로만 보여주고 실제로 적용하지는 않았어요.
[07:58]
코드베이스에 추가해달라고 하니
[08:00]
또다시 '한 번에 적용하겠습니다'라고만 하고...
[08:01]
이게 Claude 3 Mini의 Windsurf 버전인데
[08:03]
Cursor에서는 어떤지 모르겠지만
[08:07]
제가 경험해본 바로는
[08:10]
최악의 사용자 경험이었습니다.
[08:12]
마지막으로 GPT-4.0을 살펴보겠습니다.
[08:15]
이것은 코딩 AI 모델 중에서
[08:18]
가장 뛰어난 것 중 하나로 알려져 있죠.
[08:20]
이 벤치마크에 따르면, 3월 26일에
[08:23]
새로운 업데이트가 있었는데요.
[08:26]
지브리 스튜디오 스타일의
[08:28]
이미지 생성 기능이 포함된
[08:30]
그 업데이트와 함께
[08:32]
코딩 능력도 향상되었다고 합니다.
[08:34]
그런데 느낌상으로는
[08:37]
Claude 3.5를 따라하려 하지만 그만큼 좋지는 않아요.
[08:40]
정확도도 떨어지고 환각 현상도 더 많이 발생하며
[08:43]
특히 이상한 점은
[08:45]
어떤 이유에서인지
[08:47]
동일한 코드를 반복해서 덮어쓰는 경향이 있습니다.
[08:49]
3.5보다 나은 점은
[08:51]
속도가 더 빠르다는 것뿐인데
[08:54]
뭔가가 더 빠르지만
[08:56]
훨씬 더 많은 오류가 있다면
[08:57]
차라리 시간이 더 걸리더라도
[08:59]
정확한 것을 선호합니다.
[09:02]
코딩할 때는 4.0을 쓰지 말고
[09:04]
채팅용으로 사용하세요. 아이디어를
[09:06]
주고받을 때는 정말 좋은
[09:08]
대화 상대가 되어줍니다.
[09:10]
"형, 진짜 잘하고 있어요. 진짜
[09:12]
대박이에요." 이런 식으로요.
[09:16]
요즘 유행하는 말투는 잘 모르지만
[09:17]
그런 식으로 친근하게 대화하려고 해요.
[09:19]
하지만 이건 코딩과는 무관하죠.
[09:20]
이제 어떤 것이 가장 좋은지
[09:22]
알아보도록 하겠습니다. 아쉽게도
[09:25]
Claude는 3.5 Sonnet에 대해 요금을 부과하지만
[09:27]
3.7 Sonnet은 무료로 사용할 수 있어서
[09:30]
3.5는 건너뛰고 3.7을 살펴보겠습니다.
[09:32]
이론적으로 제가 이전에 해봤던
[09:35]
다른 테스트들을 보면
[09:36]
3.7이 원샷 시도에서 더 나은 결과를 보여줬는데
[09:39]
스포일러를 하자면 최고는 아니에요.
[09:40]
어떻게 작동하는지 봅시다.
[09:42]
이런 프롬프트를 입력했어요.
[09:44]
"Kitten Cannon 같은 중독성 있는 발사 게임을 만들어줘.
[09:46]
p5.js만 사용하고 HTML은 제외해. 화면에 설명을 표시하고
[09:49]
픽셀화된 동물들과 재미있는
[09:51]
물리 효과, 그리고 날아가게 하거나
[09:53]
멈추게 하는 랜덤 장애물을 넣어줘"
[09:55]
약 1분 40초 후에
[09:57]
이런 결과가 나왔습니다.
[09:59]
p5.js 웹 에디터를 열어서 실행해보겠습니다.
[10:03]
음... 예상과는 좀 달랐네요.
[10:06]
하지만 쉽게 고칠 수 있을 것 같아요.
[10:08]
에러는 없지만
[10:10]
발사 후 화면이 캐릭터를
[10:11]
따라가지 않는다고 설명하고
[10:13]
궤도 조정을 위해 위아래로
[10:14]
조준할 수 있어야 한다고 했더니
[10:16]
그게 해결됐지만
[10:18]
이제는 장애물들이
[10:20]
뭐라고 설명해야 할지도 모르게
[10:22]
떠다니고 있네요.
[10:24]
물론 고칠 수는 있겠지만...
[10:26]
장애물들이 이상하게
[10:27]
위아래로 움직이고 있어요.
[10:29]
제자리에 있어야 하는데...
[10:33]
아니네요, 이건 안 되겠어요.
[10:36]
잠깐, 뒤로 가고 있나요?
[10:38]
다음으로 넘어가죠.
[10:39]
Gemini 2.5 Pro로 해봤는데, 처음에는 에러가 났어요.
[10:43]
수정 후에는 게임이 작동했지만
[10:45]
충돌 감지 에러가 발생했고
[10:48]
추가 프롬프트로 해결했더니
[10:49]
꽤 괜찮은 게임이 완성됐습니다.
[10:52]
모든 코드를 직접 작성했고
[10:55]
몇 가지 오류만 수정하면 됐는데
[10:56]
진정한 바이브 코딩 방식으로
[10:58]
스스로 해결했죠. 확실히 3.7보다 낫네요.
[11:01]
GPT-4.0은... 맨 처음 녹화를 시작하는 걸
[11:04]
깜빡했지만, 동일한 프롬프트를
[11:05]
모두 같은 방식으로 테스트했어요
[11:07]
실제로 첫 시도에서 작동은 했는데
[11:09]
물론 '작동'의 기준에 따라 다르겠죠
[11:12]
제가 발견한 문제점은 너무 많은 오류가 있었다는 거예요
[11:14]
충전 기능도 없고, 조준도 안 되고
[11:15]
카메라도 제대로 작동하지 않았어요
[11:18]
발사 거리도 충분하지 않았고
[11:19]
픽셀들이 지면 위에 떠있는데
[11:21]
움직이지도 않았어요
[11:22]
GPT-3.7보다는 나았지만...
[11:24]
솔직히 말해서 다른 모델들만큼
[11:27]
여러 번 시도해보지는 않았어요
[11:28]
그럴 가치가 없다고 봤거든요. Claude-3 Opus도
[11:31]
시도해봤는데, 제가 깜빡한 게
[11:33]
이전 대화 기록이 남아있었다는 거예요
[11:36]
그래서 GPT-4.0과 비슷한 결과가
[11:37]
나온 것 같아요. 흥미로운 발사 시스템은 있는데
[11:39]
그다지 강력하지는 않았죠
[11:42]
다시 한번 시도해볼 필요가 있어요
[11:44]
오, 이게 훨씬 더 멀리 날아가네요
[11:46]
처음엔 파워가 약한 줄 알았는데
[11:48]
드래그하는 거리에 따라
[11:50]
발사 거리가 달라지는 것 같아요
[11:53]
특정 지점 이후에는 장애물이
[11:56]
없네요. 흥미롭네요
[11:59]
무한히 진행되지는 않고, 빨간 장애물은
[12:01]
속도를 늦추고 초록색은 가속시켜요
[12:04]
실제로 꽤 멋진 메커니즘이에요
[12:06]
하지만 이건 프롬프트와는
[12:08]
다르게 구현된 거예요
[12:10]
제가 '무작위 장애물이 날려보내거나 완전히 멈추게 한다'고 했는데
[12:13]
초록색은 날려보내는 게 아니라
[12:16]
부스트만 주고
[12:18]
빨간색도 완전히 멈추는 게 아니라
[12:19]
속도만 늦추죠
[12:22]
독특하고 좋긴 하지만
[12:24]
프롬프트를 정확히
[12:27]
따르지는 않았어요. 결과적으로 Gemini 2.5 Pro가
[12:30]
세 번의 반복이 필요했고
[12:32]
대부분의 코드를 처음에 작성하고
[12:34]
두 개의 오류만 수정하면 됐는데
[12:36]
프롬프트에 가장 충실한 최고의 게임을 만들었어요
[12:38]
Claude-3 Opus가 2위인데
[12:41]
프롬프트를 정확히 따르진 않았지만
[12:43]
200줄의 코드를 한 번에 작성했고
[12:45]
꽤 멋진 메커니즘을 구현했어요
[12:48]
나름대로 독특한 게임을 만들려고
[12:50]
시도했고 잘 작동했죠
[12:52]
반면에 GPT-3.7과 4.0은
[12:55]
3,4위를 매길 가치도 없어요
[12:57]
완전히 형편없었거든요
[12:58]
이제 Rust 리팩토링 결과를 보면
[13:00]
네 개의 AI 모두 올바르게 처리한 건
[13:02]
Vec<input>을 슬라이스로 변경한 거예요
[13:06]
불필요한 클로닝을 피할 수 있죠
[13:08]
그리고 windows_2_next를 windows_2_all로 변경했는데
[13:11]
이게 더 효율적이고 읽기 쉽고
[13:14]
관용적인 표현이에요
[13:16]
Claude, GPT-4.0, Claude-3 Opus는
[13:19]
unwrap 대신 expect를 사용했는데
[13:22]
메시지는 더 좋지만
[13:24]
여전히 패닉이 발생해요. 반면 Gemini 2.5 Pro는
[13:27]
Result, ? 연산자와 match 로직을 사용해서
[13:29]
잘못된 라인을 로깅하고
[13:32]
계속 진행하도록 했어요
[13:34]
모두 작동은 하지만 2.5 Pro가
[13:36]
확실히 더 나은 것 같네요. 다른 세 개는
[13:39]
전체 벡터를 복제해서 제거했는데
[13:42]
이건 비효율적이에요. Gemini는
[13:44]
filter_map이나 슬라이싱을 사용해
[13:46]
특정 인덱스를 건너뛰면서 새 벡터를 만들어요
[13:48]
더 효율적이고 메모리 사용도 적죠
[13:50]
흥미로운 점은 Gemini와
[13:51]
Claude가 'report_late_less_than_2'를 true로 반환했는데
[13:54]
이건 논리적으로 맞는 거예요
[13:56]
하지만 OpenAI 모델들은
[13:59]
false를 반환했고
[14:00]
이건 기술적으로 틀렸죠. Claude와 Claude-3 Opus는
[14:03]
map과 sum을 함께 사용했는데, 이건 좋아요
[14:07]
완벽하게 작동하고 오류 처리도
[14:09]
제한적이에요. GPT-4.0과 Gemini는
[14:12]
이 부분에 for 루프를 사용했는데
[14:14]
우아하진 않지만 더 나은 오류 처리가 가능하고
[14:17]
더 많은 제어가 필요할 때
[14:19]
유용하죠. 하지만 이 경우에
[14:21]
그게 필요한지는 여러분이
[14:23]
판단하시면 될 것 같아요
[14:25]
결론적으로 2.5 Pro가
[14:27]
훨씬 더 나은 것 같고, GPT-3.7이
[14:30]
2위를 차지할 것 같아요
[14:32]
2.5 Pro와 비슷한 부분이 있었고
[14:34]
조금 더 나은 면이 있었거든요
[14:35]
Claude-3 Opus와 GPT-4.0은 매우 비슷했는데
[14:38]
Claude-3 Opus가 약간 더 나았지만
[14:40]
그래도 그저 그랬어요
[14:44]
이게 제가 발견한 거예요
[14:45]
다시 요약할 필요는 없을 것 같아요
[14:46]
영상 전체에서 각각의 장단점과
[14:47]
어떤 상황에 추천하는지
[14:49]
다 설명했거든요. 이건 새로운 프레임워크나
[14:51]
인기 없는 언어를 사용할 때
[14:53]
달라질 수 있고
[14:55]
코드베이스의 크기나
[14:57]
다른 여러 변수들에 따라
[14:59]
어떤 게 더 나은지가 달라질 수 있어요
[15:02]
하지만 이 영상에서는
[15:03]
최대한 광범위하게 테스트해봤어요
[15:05]
도움이 되었길 바랍니다