Notice
Recent Posts
250x250
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

일상 코딩

[ChatGPT o1 답변] ChatGPT를 이용한 개발시 앞선 코드와의 연계성 및 맥락 끊김 문제 해결 방법 답변 본문

Ai/Prompt 엔지니어링

[ChatGPT o1 답변] ChatGPT를 이용한 개발시 앞선 코드와의 연계성 및 맥락 끊김 문제 해결 방법 답변

polarcompass 2025. 1. 12. 19:45
728x90

아래 답변은 단계별로 구성되어 있습니다.
“단계적으로 세부 파일 코드를 생성 받는 경우, 이미 작성된 코드와의 연계성이나 맥락이 끊기지 않을까?” 하는 고민에 대한 답변을 정리해 드립니다.


1. 단계별 코드를 생성할 때 겪는 문제점

1) 맥락(컨텍스트) 부족

  • AI가 한 번에 긴 코드를 전부 생성하지 않고, 파일별로 쪼개서 만들다 보면,
  • 나중에 생성되는 코드가 이미 작성된 코드의 내용(예: 함수명, 인터페이스, 내부 로직)을 완전히 파악하지 못할 수 있습니다.

2) 세션 기억 한계

  • AI(예: ChatGPT)의 문맥 길이(토큰 제한)가 있기 때문에, 대화가 길어지면 초기 코드를 “잊어버리거나” 생략해 버릴 수 있습니다.
  • 따라서 “이전 메시지에서 언급했던 함수 A가 어디에서 어떻게 쓰이는지”를 AI가 스스로 잊어버릴 위험이 있습니다.

3) 프로젝트가 복잡해질수록

  • 파일 간 의존관계가 늘어나고, 여러 라이브러리를 함께 사용하게 되면, 단계별 코드를 받고 합치는 과정에서 타이핑 오류, 함수 시그니처 불일치, 네임스페이스/임포트 충돌 등이 발생할 가능성이 높아집니다.

2. 문제점을 해결하는 방법

이 문제를 완전히 해결하기 위해서는, AI의 한 번의 응답에 “전체 프로젝트 구조와 서로 연동되는 코드”를 모두 포함시키는 것이 가장 이상적입니다. 그러나, 실제로는 프로젝트가 너무 커서 한 번에 설명하기 어렵거나, 단계적으로 개발하며 파일별 코드를 차근차근 작성해야 할 수도 있습니다.

아래와 같은 3가지 방법을 권장드립니다.

1) “참조 코드”를 명시적으로 재제공하기

  • 매 프롬프트마다, 이전에 AI가 생성해 준 코드를 요약 또는 핵심 부분만이라도 다시 포함해 주는 방식입니다.
  • 예:
    1. AI가 src/p2p/gun.js 코드를 생성했다면, 다음에 src/services/auth.ts 코드가 필요할 때 이전 코드를 그대로 붙여넣고
      “이전 코드(gun.js)에서 Gun 인스턴스를 어떻게 생성했으니, 그 인스턴스를 여기서도 활용하도록 auth.ts를 수정해 달라”고 요청합니다.
    2. 이렇게 하면 AI가 “이미 작성된 코드”를 다시 한 번 인지하고, 새 코드를 작성할 때 해당 함수나 변수명을 인식할 수 있습니다.

이 방법은 대화가 길어지는 것을 감수하는 대신, AI의 맥락 유실을 최소화해 준다는 장점이 있습니다.


2) “전체 코드”를 일정 간격으로 정리/통합하기

  • 한두 번 코드를 생성할 때마다, 현재까지 작성된 코드를 로컬에서(개발자 측) 하나로 통합하고 간단히 빌드 혹은 테스팅을 해봅니다.
  • 그 후, 새 프롬프트로 넘어가기 전에, “현재 코드 전체”를 (가능하다면) AI에게 다시 요약해서 보여주며,

    “이것이 현재까지 통합된 코드다. 다음 파일(예: pushNotifications.js)을 작성할 때, 이 코드 기반으로 작동해야 한다.”
    라고 지시합니다.

이 과정을 통해 AI에게 최신 코드베이스의 스냅샷을 계속 업데이트해 주는 것이죠.


3) “한 덩어리”로 만드는 전략

  • 단계별로 진행하더라도, 최종적인 특정 시점(예: “v1.0” 초기 릴리즈 단계)에서는
    • “이제 전부 합쳐서, package.json, src/p2p/gun.js, src/services/auth.ts, App.tsx(혹은 index.js), 기타 필요한 파일을 한 덩어리로 보여주고, 유기적으로 연결되는지 확인해 줘”
      라고 한 번에 요청할 수 있습니다.
  • 그럼 AI는 전체 코드를 다시 점검하며, 임포트 구문이나 함수 시그니처가 일치하는지 등을 (기계적으로나마) 확인하고, 가능한 수정본을 제시해 줄 수 있습니다.

3. 실제 개발 관점에서

1) AI 코드 → 로컬 환경에서 빌드/테스트

  • 가장 확실한 방법은, AI가 준 코드를 로컬(개발자 환경)에 붙여넣고, 빌드/런/테스트를 해보는 것입니다.
  • 에러 로그나 워닝을 다시 AI에게 전달하면, “이 에러 메시지를 해결해 달라”고 할 수 있습니다.

2) 버전 관리(Git) & CI

  • 코드를 작성할 때마다, Git에 커밋하고(브랜치를 나눠), CI(예: GitHub Actions)로 자동 빌드/테스트를 돌립니다.
  • 실패 로그(테스트 실패, 타입 에러 등)가 생기면, 그 로그를 AI에게 함께 전달해 “어떻게 해결해야 할까?” 물어봅니다.

3) AI 코드 = 초안(Boilerplate)

  • AI가 작성해주는 코드는 “참고용 보일러플레이트”이며, 실제로는 개발자가 검토·리팩토링·테스트를 거쳐야 합니다.
  • 특히 복잡도가 올라가면 AI의 문맥 처리 한계로 인해 중간중간 작은 불일치가 생기는 건 어쩔 수 없는 현실입니다.

4. 결론 및 권장 프로세스

  1. “단계별”로 물어볼 때, 이전 코드를 간단히 요약하거나 전체를 복사해서 “AI가 다시 참고하도록” 제공하는 것이 좋습니다.
  2. 주기적으로 프로젝트 전체 코드를 통합본 형태로 AI에게 주고, “맞게 연결되는지 확인해달라”고 요청합니다.
  3. 실제 빌드와 테스트를 통해 에러를 잡아가면서, AI에게 해결책을 물어보는 반복 작업이 필요합니다.

추천 워크플로우

  • 1단계: 프로젝트 구조 + 핵심 요구사항(프롬프트) 한 번에 전달 → “초기 세팅 코드” 받기
  • 2단계: 파일 단위로 세부 구현 물어보기 (이때 이전 코드 맥락을 복사해서 넣어주기)
  • 3단계: 중간 점검(빌드/테스트) → 에러/경고 해결 → 통합본 업데이트
  • 4단계: 모든 파트가 어느 정도 완성되면, AI에게 통합 코드를 검토하게 하여 (임포트 경로, 함수명, 객체 구조) 일관성 있는 코드로 정리

이렇게 하면, 단계별 접근을 하면서도 연계성을 어느 정도 유지할 수 있습니다.

정리하면, 단계별 코드를 생성하더라도, AI의 문맥 유실을 최소화하기 위해서는 “반드시 이전 코드를 다시 제시”하거나 “전체 통합본을 주기적으로 갱신해서 AI에게 확인”시켜주는 방식이 가장 효과적입니다.


추가 팁:

  • 코드 스니펫이 너무 길다면, 요약본(핵심 함수, 중요 인터페이스, 주석)만 붙여넣고, “이전 답변에서 자세히 구현한 함수 xxx는 변동 없음”이라고 언급해 주어도 됩니다.
  • AI가 텍스트만 인식하기 때문에, “파일이름 + 코드 내용”을 텍스트 형태로 전달하는 것이 필수입니다.
  • 프로젝트가 매우 방대해지면, ChatGPT보다는 코드 전용 AI(코파일럿, 코랩스, etc.)과 함께 사용하거나, 잘 정돈된 문서(API 명세, 타입 정의)를 병행하는 편이 낫습니다.

결론

  • “단계적으로 물어볼 때 프로젝트 전반의 코드 연계를 어떻게 보장하느냐?”라는 고민은 당연합니다.
  • 최선의 방법은, 각 단계마다 이전 코드를 함께 전달하여 AI의 문맥을 갱신하고, 주기적으로 전체 코드를 리캡하여 일관성을 확인시키는 것입니다.
  • 실제론 개발자 측에서 빌드/테스트를 병행해야 하며, AI 코드는 어디까지나 초안 역할임을 염두에 두시면 됩니다.
728x90