인공지능의 성능만 놓고 보자면 정말 인공지능이 사람을 대체할 날이 얼마 남지 않은 것으로 느껴지기도 한다. 하지만 그 실상을 조금만 들춰 보면 아직도 명확한 한계가 있다. 대부분의 벤치마크는 간단한 함수나 모듈 수준의 구현만을 확인하며, 구현하고자 하는 코드에 대한 명확한 설명이 존재한다. 이는 실제 개발자가 업무를 하는 환경과는 큰 괴리가 있다. 개발자의 업무는 단순한 프로그래밍 문제를 푸는 것을 넘어 훨씬 광범위하다. 많은 개발자가 명확하지 않은 요구 사항 아래에서 많은 소통과 시행착오를 겪으며 프로그램을 개발한다. 또한, 거대한 프로젝트의 일부분을 담당하거나 심지어는 프로젝트 전체를 구현해야 하는 일도 비일비재하다. 그렇기에 아직은 인공지능이 개발자 한 명을 온전히 대체하기에는 무리가 있다.
-01_“AI, 경쟁과 활용 사이” 중에서
생성형 인공지능이 코드를 이해하기 위해서는, 먼저 생성형 인공지능에 현재의 코드를 보여 줄 필요가 있다. 예를 들어 깃허브 코파일럿 서비스의 경우, 현재 개발 중인 파일과 관련된 다양한 파일들을 참고하여 사용자와 상호작용을 한다. 즉, 자동으로 필요한 코드들을 보고 이해하며, 사용자에게 유의미한 설명을 할 수 있는 것이다. 반면 챗지피티 서비스를 활용하고자 하는 경우에는, 직접 관련된 코드들, 예를 들어, 현재 보고 있는 함수가 사용되는 부분이나 현재 함수에서 사용하는 다른 함수 등을 채팅을 통해 잘 전달할 필요가 있다. 또한 프롬프트를 통해, 해당 코드들을 참고하여 현재 보고 있는 코드에 대한 설명을 잘 요청하여야 한다.
-03_“AI가 설명하는 코드” 중에서
코드의 버그를 예측하는 가장 간단하면서도 어려운 방법은 코드의 동작을 직접 머릿속에서 시뮬레이션해 보는 것이다. 어떠한 입력이 들어왔을 때, 구현된 알고리즘에 따라 어떤 연산이 이루어지고, 그 결과로 어떤 결과가 출력될지를 상상해 볼 수 있다. 실제로 간단한 프로그램에서는 이 과정을 통해 사소한 버그들을 발견하고 수정할 수 있으며, 이를 통해 더 효율적으로 업무를 수행할 수 있다. 그러나 코드가 복잡해지거나 연산해야 하는 양이 많아지는 경우에는 사람의 머리만으로는 시뮬레이션이 어렵다.
-06_“지능형 테스트” 중에서
프롬프트 개선 없이 문제 정의만 제공했을 때, 코파일럿 서비스는 166건의 문제 중 79건(약 48%)을 해결할 수 있었으며, 프롬프트 엔지니어링을 통해 해결하지 못한 87건 중 53건(약 61%)을 추가로 해결할 수 있었다. 이때 프롬프트에는 알고리즘에 대한 직접적인 힌트 등이 포함되었다. 대형 언어 모델을 이용해 코드를 생성하는 상황이라면, 이러한 연구를 참고하여 프롬프트를 개선함으로써 더 양질의 도움을 받을 수 있을 것이다.
-09_“프롬프트 엔지니어로서 개발자” 중에서