AI 코딩 정확도를 높이는 자가 계획(Self-planning) 기법을 상징하는 건축 설계도와 3D 건물 모델 이미지
|

AI 코딩 정확도 25% 높이는 ‘자가 계획(Self-planning)’ 기법 활용법

AI 코딩 정확도 25% 높이는 ‘자가 계획(Self-planning)’ 기법 활용법

ChatGPT나 Claude에게 복잡한 로직의 코드를 요청했다가, 겉만 번지르르하고 실행은 안 되는 쓰레기 코드를 받아본 적 있으시죠?

예를 들어 “피보나치 수열이면서 소수인 n번째 숫자를 구하는 함수를 짜줘”라고 시켰을 때, 숙련된 개발자는 머릿속으로 ‘소수 판별’과 ‘수열 생성’이라는 설계도를 먼저 그립니다. 하지만 AI는 일단 def부터 타이핑하기 바쁩니다. 설계도 없이 벽돌부터 쌓으니 건물이 무너지는 건 당연한 결과죠.

오늘은 북경대학교 연구팀의 논문 “Self-planning Code Generation”을 통해, AI의 코딩 정확도를 무려 25.4%나 끌어올린 ‘자가 계획(Self-planning)’ 기법을 살펴보겠습니다.


단계별로 생각하기(CoT)가 코딩에선 독이 되는 이유

우리는 보통 AI의 성능을 높이기 위해 “차근차근 생각해서 답해줘(Chain of Thought)”라는 프롬프트를 씁니다. 수학이나 논리 퀴즈에서는 마법 같은 효과를 내지만, 코딩에서는 의외로 힘을 못 씁니다.

이유는 간단합니다. 코딩에서 CoT는 코드 그 자체만큼이나 구체적이고 복잡하기 때문입니다.

  • 의도(추상적): “소수인 피보나치 수 찾기”
  • CoT(너무 구체적): “변수 i를 0으로 두고, while 루프를 돌면서…”
  • 코드(구체적): 실제 Python 코드

CoT가 너무 구체적이다 보니 AI 입장에서는 설명을 적는 것 자체가 이미 코딩을 하는 것만큼 에너지가 소모되는 일이 됩니다. 결국 설명하다가 지쳐서 로직을 꼬아버리는 거죠. 그래서 우리에게는 ‘의도’와 ‘구현’ 사이를 이어줄 ‘추상적인 계획(Plan)’이 필요합니다.


해결책: Self-Planning

이 방법의 핵심은 아주 직관적입니다. 설계와 구현을 철저히 분리하는 2단계 프로세스입니다.

[1단계] 계획 단계 (Planning Phase)

AI에게 구체적인 코드를 짜지 말고, 오직 ‘어떤 순서로 문제를 해결할지’에 대한 계획만 세우게 합니다. 이때 계획은 의사 코드(Pseudo-code)보다 더 높은 수준의 인간 언어로 작성됩니다.

계획 예시:
1. 숫자가 소수인지 판별하는 함수를 정의한다.
2. 피보나치 수열을 차례대로 생성한다.
3. 생성된 숫자가 소수인지 확인하고 맞으면 카운트를 줄인다.
4. 카운트가 0이 되면 해당 숫자를 반환한다.

[2단계] 구현 단계 (Implementation Phase)

위에서 만든 계획을 AI에게 다시 주면서 “이 계획에 맞춰 코드를 작성해”라고 시킵니다. 이제 AI는 ‘무엇을 할지’ 고민할 필요 없이 ‘어떻게 구현할지’에만 집중하면 됩니다.


실제 사례 비교

‘소수인 피보나치 수’를 구할 때 두 방식의 차이는 극명합니다.

구분 일반적인 생성 (Direct) 자가 계획 (Self-planning)
결과 실패. 로직 없이 숫자를 하드코딩하거나 소수 판별을 빼먹음 성공. is_prime 함수를 먼저 만들고 논리적으로 연결함
특징 맥락을 잃고 눈앞의 코드에만 집착함 전체 로직을 파악한 뒤 부품(함수)을 조립함

왜 이 방법이 강력한가?

연구팀의 벤치마크 결과는 이 기법의 효율성을 명확히 보여줍니다.

  • 정확도 폭발: Python 기준으로 기존 방식보다 25.4% 성능이 향상되었습니다. (48.1% → 60.3%)
  • 범용성: Java, JavaScript, Go 등 언어를 가리지 않고 일관된 향상을 보였습니다.
  • 확신도 상승: AI가 코드를 작성할 때 ‘머뭇거림(토큰 확률 변동)’ 없이 훨씬 자신 있게 코드를 써 내려가는 것이 확인되었습니다.

실전 적용 가이드

지금 당장 AI에게 코딩을 시킬 때 다음 두 가지만 기억하세요.

  1. 질문을 쪼개서 던지세요: “일단 이 문제를 해결하기 위한 단계별 계획(Plan)을 번호를 매겨서 세워줘. 코드는 짜지 마.”
  2. 계획을 검토 후 코딩을 시키세요: “방금 네가 세운 계획대로 코드를 작성해줘.”
[Tip] 계획은 “함수를 만든다”, “루프를 돈다”처럼 동사 중심의 명확한 문장으로 구성될 때 가장 효과적입니다.

마치며

“프로그래밍은 복잡성을 조직하는 기술이다”라는 말이 있습니다. AI 시대에도 이 원칙은 유효합니다. AI에게 무작정 코드를 내놓으라고 채찍질하기보다, 문제를 구조화할 시간을 먼저 줘보세요. 훨씬 유능한 페어 프로그래머를 만나게 될 것입니다.

다음번에 복잡한 코딩 질문을 던질 때, “먼저 계획부터 세워볼까?”라는 한마디를 추가해 보시는 건 어떨까요?

Similar Posts