본문 바로가기

Various Information

[ChatGPT 활용] 챗지피티 활용해서 코드 이해시키기 / 코드 분할 기본원칙

반응형

ChatGPT와 같은 언어 모델은 한 번에 처리할 수 있는 텍스트(토큰) 길이에 제한이 있습니다. 따라서 긴 코드를 한 번에 붙여넣으면 모델이 전체 맥락을 잃거나 중요한 부분을 놓칠 수 있어요. 아래와 같은 방법으로 ‘코드 분할 → 단계별 공유 → 맥락 연결’을 잘 해두시면 도움이 됩니다.


1. 코드 분할의 기본 원칙

  1. 토큰 제한 고려
    • ChatGPT(특히 GPT-3.5, GPT-4 등)은 일반적으로 수천 개 정도의 토큰까지 처리가 가능합니다. 정확한 한도는 모델 버전에 따라 다르지만, 여유 있게 잡아 최대 약 2,000~3,000 토큰 이하로 분할하는 것이 좋습니다.
    • 텍스트(한글 + 영어)가 섞인 경우, 한글은 영어 대비 상대적으로 토큰이 더 많아지기 때문에, 분량을 조금 더 작게 나눠주면 안정적일 수 있습니다.
  2. 의미 단위대로 끊기
    • 함수나 클래스, 혹은 한 파일 단위와 같이 맥락상 같이 묶여야 할 부분을 한 덩어리로 묶어서 보내면 추후 재참조가 용이해집니다.
    • 예를 들어, 파일이 500줄이고 그 안에 함수가 5~6개 있다면, 함수별로 끊어서 보낼 수 있습니다.
  3. 요약 및 목차 제공
    • 코드를 여러 번에 걸쳐 보낼 때, 먼저 “전체적으로 어떤 구조이며, 어떤 파트가 있는지”를 간단하게 요약해서 먼저 제시해 주세요.
    • 이후 각 덩어리를 보낼 때마다 “이전 덩어리는 어떤 내용이었고, 현재 덩어리는 무엇인가”를 짧게 덧붙여주면 모델이 맥락을 이어받아 이해하기가 쉽습니다.

2. 실제 분할·전달 방식 예시

예를 들어, “train.py”라는 파일에 300줄의 코드가 있고, 그 안에 5개의 주요 함수(prepare_data, build_model, train_loop, evaluate, save_results)가 있다고 합시다.

  1. 목차/구조 요약 메시지 (예시):
  2. [메시지 1] 아래는 모델 학습을 위한 train.py 파일 구조입니다: 1) prepare_data 2) build_model 3) train_loop 4) evaluate 5) save_results 전체 코드는 약 300줄로 되어 있습니다. 이 코드를 나눠서 전달하려고 합니다.
  3. 첫 번째 코드 덩어리 (예시):
    • prepare_data 함수 부분(예: 1~60줄)을 ‘코드 블록’으로 묶어서 전달.
    • 혹은 한 파일 내에서도 이 함수가 다른 유틸 함수들을 포함한다면, 함께 묶어 전달.
    [메시지 2]
    다음은 train.py에서 prepare_data 함수 부분입니다:
    
    ```python
    # --- prepare_data 함수 시작 ---
    import os
    import numpy as np
    ...
    def prepare_data(path):
        # ... 함수 내용 ...
    # --- prepare_data 함수 끝 ---
    
    > **주의**: 
    > - 코드 블록 ```python … ```을 사용하면 ChatGPT가 코드 문맥을 더욱 정확하게 인식할 수 있습니다.
    > - 길이가 너무 길면 여러 번에 나눠서 보내도 좋습니다. (예: 1~30줄, 31~60줄)
    
    
  4. 두 번째 코드 덩어리 (예시):
    • build_model 함수 부분을 같은 방식으로 전달.
    • 이후에도 동일한 패턴으로 train_loop, evaluate, save_results 순서대로 보내줍니다.
  5. 질의하거나 수정사항을 요청하고 싶을 때
    • 각 코드 덩어리를 보낸 후, “해당 부분을 어떻게 개선하면 좋을지”, “이 부분이 어떻게 작동하는지 설명해 달라”고 질문하면 됩니다.
    • 한 덩어리에 대한 답변이 끝난 다음, 다음 덩어리를 보내도 되고, 모두 전송한 후 한꺼번에 피드백을 받아도 됩니다.

3. 대화 맥락(History) 유지를 위한 팁

  • 메시지에 ‘참고 메시지 번호’ 혹은 ‘덩어리 이름’을 넣기
    • 예) “위에서 보낸 [prepare_data 함수 코드]를 다시 살펴봐 줘.”와 같이 레퍼런스를 사용하면 모델이 이전 대화를 다시 참고하기 쉽습니다.
  • 중간 요약 활용
    • 어느 정도 코드를 보냈다면, 한 번 “지금까지 준 코드 요약”을 요청하거나, 직접 요약 메시지를 보내서 대화를 정돈합니다.
  • 수정된 코드 재전달 시 주의
    • 동일한 코드를 수정해 다시 공유할 때는, “이전 것과 비교해 어떤 점이 바뀌었는지”를 코멘트로 표시해주면 모델이 바뀐 부분을 인식하는 데 도움이 됩니다.

4. 최적의 분할 전략 요약

  1. 함수/클래스/파일 단위로 의미 있게 나누어 전달하자.
  2. 한 번에 너무 많은 토큰을 보내지 않도록 주의(대략 2,000~3,000 토큰 이내).
  3. 각 덩어리가 어떤 역할을 하는지 간단한 요약과 함께 제공한다.
  4. 코드 블록을 사용해 주면 코드 인식이 정확해진다.
  5. 중간에 질문/요약을 섞어가면서 맥락을 유지한다.

이런 식으로 코드를 나눠서 보내주시면, ChatGPT가 기억을 잘 유지한 상태에서 각각의 코드 섹션을 분석하고, 또 전체적인 흐름도 파악하기 훨씬 수월해집니다. 추가로 궁금하신 부분 있으면 알려주세요!

반응형