Code Roulette: How Prompt Variability Affects LLM Code Generation

이 논문은 프롬프트의 변이가 LLM 의 코드 생성 품질에 미치는 영향을 정량화하기 위해 특정 작업이나 모델에 구애받지 않는 평가 파이프라인을 제안하고, 이를 통해 얻은 실험 결과와 오픈소스 코드를 공유합니다.

Andrei Paleyes, Radzim Sendyka, Diana Robinson, Christian Cabrera, Neil D. Lawrence

게시일 2026-03-19
📖 3 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

🍳 제목: "레시피의 작은 변화가 요리에 미치는 영향 (Code Roulette)"

1. 연구의 배경: 왜 이걸 연구했을까요?

요즘은 누구나 AI(대형 언어 모델) 에게 "이거 만들어줘"라고 말하면 코드를 짜줍니다. 마치 요리사에게 "오늘 저녁 뭐 먹지?"라고 묻는 것과 비슷하죠.

하지만 문제는 사람마다 같은 음식을 설명하는 방식이 다르다는 점입니다.

  • 사람 A: "소금 좀 넣어서 간을 맞춰줘."
  • 사람 B: "간을 적당히 해줘."
  • 사람 C: "소금 조금만."

이 세 가지 말은 본질적으로 같은 뜻이지만, AI 요리사가 이 말들을 들었을 때 만들어내는 요리의 맛 (코드) 이 완전히 달라질 수 있을까요? 만약 "소금"을 "소금"이라고 오타를 내거나, "간"을 "맛"이라고 바꿔 말하면 AI 는 당황해서 엉뚱한 요리를 내놓을까요?

이 연구는 바로 **"AI 요리사가 말투의 작은 변화에 얼마나 민감하게 반응하는지"**를 측정하는 실험입니다.

2. 실험 방법: "AI 요리사 테스트"

연구자들은 4 명의 유명한 AI 요리사 (GPT-4o, Claude, Gemini, Llama 등) 를 불러모아 다음과 같은 테스트를 진행했습니다.

  • 기본 레시피 (프롬프트): "파이썬으로 계산기를 만들어줘."라는 기본 명령을 줍니다.
  • 변형 실험 (Augmentation): 이 명령을 조금씩 망가뜨려 봅니다.
    1. 타이핑 실수 (Typos): "계산기"를 "계산기" (키보드 옆 키 누름) 로 바꿈.
    2. 유의어 교체 (Synonyms): "만들어줘"를 "작성해줘"로 바꿈.
    3. 문장 재구성 (Paraphrasing): "파이썬으로 계산기 만들어줘"를 "파이썬 언어를 써서 계산기 기능을 구현해 줘"라고 다르게 표현.

그리고 AI 가 만들어낸 코드가 원래 코드와 얼마나 다른지 TSED라는 자 (코드 구조 비교 도구) 로 측정했습니다.

3. 주요 발견: 놀라운 결과들

① 오타는 치명적이다 (타이핑 실수)

  • 비유: 요리사에게 "소금"이라고 말하려다 실수로 "송금"이라고 말하면, 요리사는 당황해서 완전히 다른 요리를 만들거나 요리를 포기합니다.
  • 결과: AI 는 오타에 매우 민감했습니다. 명령에 아주 작은 오타만 있어도 AI 가 만들어낸 코드는 완전히 엉뚱한 방향으로 변했습니다.

② 단어 바꾸기는 덜 민감하다 (유의어/재구성)

  • 비유: "소금" 대신 "간"이라고 하거나, "소금 좀 넣어" 대신 "간을 맞춰줘"라고 해도 요리사는 대충 이해하고 비슷한 요리를 만듭니다.
  • 결과: 단어를 바꾸거나 문장을 살짝 다르게 써도 AI 는 비교적 견고하게 같은 코드를 만들어냈습니다.

③ AI 가 배운 적이 있는 문제는 강하다 (데이터 오염)

  • 비유: 요리사가 이미 레시피 책에 있는 유명한 요리를 만들 때는, 사용자가 말을 조금 실수해도 "아, 그거죠?" 하고 금방 알아맞힙니다. 하지만 새로운 요리를 시키면 조금만 말투가 달라져도 당황합니다.
  • 결과: AI 가 훈련 데이터에 이미 많이 접한 유명한 문제 (LeetCode 구형 문제) 는 오타가 있어도 코드가 잘 변하지 않았습니다. 하지만 AI 가 처음 보는 새로운 문제나, 연구진이 직접 만든 독창적인 문제에서는 작은 말실수에도 코드가 크게 달라졌습니다.

4. 이 연구가 우리에게 주는 교훈

이 연구는 우리에게 중요한 메시지를 줍니다.

  1. AI 는 완벽하지 않다: 우리가 "똑같은 뜻"이라고 생각해도, AI 는 말투나 오타 하나에 따라 완전히 다른 코드를 뽑아낼 수 있습니다.
  2. 신뢰를 쌓는 방법: AI 코드를 믿고 쓰려면, 사용자가 명령을 내릴 때 얼마나 정확해야 하는지, 혹은 AI 개발자가 어떻게 AI 를 더 튼튼하게 만들어야 하는지 이해해야 합니다.
  3. 새로운 기준 필요: 기존에 AI 성능을 평가할 때 쓰던 문제들은 AI 가 이미 다 외워서 (훈련 데이터에 있어서) 너무 쉽게 풀고 있었습니다. 진짜 실력을 보려면 AI 가 처음 보는 새로운 문제로 테스트해야 합니다.

🎯 한 줄 요약

"AI 에게 코딩을 시킬 때, 우리가 실수한 오타나 말투의 작은 변화만으로도 AI 가 만들어내는 코드가 완전히 달라질 수 있다는 것을 증명했습니다. 즉, AI 와 대화할 때는 말을 정확하고 명확하게 해야 한다는 교훈을 줍니다."

이 연구는 앞으로 우리가 AI 와 더 잘 소통하고, 더 안정적인 코드를 얻기 위한 첫걸음이 될 것입니다.