일상 코딩
[프롬프트] 고품질 코드를 유도하는 프롬프트 엔지니어링 원칙 및 예시 템플릿 본문
728x90
아래 답변은 단계별로 구성되어 있습니다.
“프롬프트 엔지니어링”을 통해 고품질 코드를 얻으려면, AI가 이해할 수 있는 맥락과 요구사항을 최대한 구체적으로, 논리적으로 전달해야 합니다.
1. 고품질 코드 생성을 위한 핵심 원칙
1) 맥락(Context) 충분 제공
- 프로젝트 환경(언어, 프레임워크, 라이브러리 버전 등)
- 요구 기능(사용자 시나리오, API 스펙, 성능/보안 목표)
- 코드 스타일(코딩 컨벤션, 테스트 방식, 문서화 방식 등)
2) 세분화된 요구사항(Specification)
- “무엇을 해야 하는가?” + “왜 그렇게 해야 하는가?” + “어떤 형태로 결과물을 받고 싶은가?”를 명확히.
- 예: “React 18 / TypeScript 4.9 환경에서, Redux Toolkit으로 상태 관리를 하고, API 통신은 Axios를 활용. ESLint + Prettier 설정. 유닛테스트는 Jest 사용.”
3) 명료한 지시(Instruction)
- “파일 구조까지 보여줘”, “폴더별/파일별로 코드를 제시해줘”, “동작 테스트가 가능하도록 package.json 의존성도 명시해줘” 등
- 역할(Role) 부여: “너는 10년 경력의 시니어 풀스택 개발자다”처럼 전문가적 시각을 갖추도록 유도
4) 피드백 반복(Iterative Approach)
- 처음 요청에서 완벽한 코드를 얻기 힘드므로, 반복 대화를 통해 고도화
- 에러 메시지나 테스트 결과, 성능 이슈 등을 AI에 역으로 피드백해 수정 요청
2. 고품질 코드를 유도하는 프롬프트 예시 템플릿
아래 템플릿을 활용하면, 첫 프롬프트부터 높은 품질의 코드를 얻을 가능성이 높아집니다. 필요에 따라 항목을 추가/수정해서 사용하세요.
[역할 지시 / 배경 설명]
너는 10년 이상 경력의 시니어 풀스택 개발자이자 아키텍트다.
최신 웹 기술에 정통하며, 테스트 커버리지를 90% 이상 유지하는 코드 작성을 선호한다.
[프로젝트 요구사항]
1) 환경 및 스펙
- React 18, TypeScript 4.9, Redux Toolkit
- Node.js 18, Express 4
- DB: PostgreSQL 14
- 배포 환경: Docker, Kubernetes(옵션)
- CI/CD: GitHub Actions
- ESLint + Prettier로 스타일 검사
- Jest로 유닛 테스트
2) 주요 기능
- 사용자 인증(토큰 기반): 로그인/회원가입/로그아웃
- 게시글 CRUD + 댓글 기능
- 파일 업로드(이미지/동영상) + S3 연동 (옵션)
3) 코드 구조
- client/ (React 앱)
- src/
- components/
- pages/
- store/
- services/
- ...
- server/ (Express 백엔드)
- src/
- routes/
- controllers/
- models/
- middlewares/
- ...
- docker-compose.yml, package.json 등
4) 요구사항 상세
- 로그인은 JWT 방식, 토큰 만료 1시간
- 게시글은 제목/내용/작성자/등록일시 필드
- CI 파이프라인에서 빌드 + 테스트 + 린트 검사 자동 실행
- TypeScript 구성(tsconfig.json)도 보여줄 것
- 가능하다면 샘플 테스트 코드(Jest)까지 제시
[출력 형식 / 전달 방식]
- 위 폴더 구조별로 파일 이름과 기본 코드 작성
- 각 파일 내용에 주석을 달아서 코드 의도를 설명
- 필요한 라이브러리는 package.json에 dependencies로 포함
- 실행/빌드 방법을 간단히 안내
[추가 조건]
- 최대한 최신 베스트 프랙티스 적용
- 보안/에러 처리를 간단히라도 반영
[마무리 지시]
"이 요구사항에 맞게, 작동 가능한 초안 코드를 작성해줘."
설명
- [역할 지시 / 배경 설명]: AI가 스스로를 “시니어 개발자”라고 인식하도록 해서, 깊이 있는 고려사항(보안, 성능, 테스트 등)을 적용하도록 유도합니다.
- [프로젝트 요구사항]: 언어/프레임워크 버전, 배포 환경, 주요 기능 등을 명시해 AI가 헷갈리지 않도록 합니다.
- [출력 형식 / 전달 방식]: “파일 구조별 코드” + “간단 설명” + “테스트 코드” 등을 하나의 답변으로 받고 싶다고 구체적으로 지시합니다.
3. 프롬프트 엔지니어링 기법 요약
1) 역할 부여(Role Prompt):
- “너는 10년 경력의 시니어 개발자다”와 같이 AI에게 전문가 프레임을 부여해, 답변 품질 상승을 유도
2) 명세(Requirements) 자세히:
- 환경, 버전, 기능, 테스트/배포 방식 등 구체화
3) 예시 출력(Formatting):
- “폴더 구조 + 각 파일 코드 + 주석 + 실행 방법” 형식으로 달라고 요청
- 코드 예시에 주석을 달도록 지시하면, AI가 의도를 설명해 주어 이해가 쉬움
4) 에러/테스트 피드백:
- 실제로 코드를 실행했을 때 발생하는 문제(빌드 에러, 런타임 에러, 테스트 실패)를 AI에게 알려주고 해결책을 다시 요청
4. 추가 팁
1) “샘플 데이터”나 “시나리오” 제공
- 예: “가상의 테스트 계정은 이메일
test@example.com
, 비번Test1234!
이며, 로그인 성공 시 JWT를 발급해준다.” - 이렇게 구체적으로 써 주면 코드에 더 상세한 예시가 포함될 가능성이 높습니다.
2) 성능/보안 요구사항
- 예: “DB 커넥션 풀 최소 10개, 최대 50개로 구성” / “OWASP Top 10 취약점에 대비한 미들웨어 적용”
- AI가 설정값이나 미들웨어를 자동으로 넣어줄 수 있습니다.
3) 테스트 요구
- “유닛 테스트 + 통합 테스트 샘플도 보여달라” 라고 요청하면, AI가 여러 테스트 케이스를 포함하려고 시도합니다.
4) 단계별로 세분화된 프롬프트
- 프로젝트가 매우 복잡하다면, “백엔드 코드부터 작성해줘 → 이제 DB 모델링 파일 보여줘 → 이제 테스트 코드 추가해줘 → 클라이언트 React 코드도 작성해줘” 식으로 단계적으로 진행 가능합니다. 다만, 이전 코드를 AI가 잊어버리지 않도록, “이전 코드”를 함께 다시 붙여넣고 맥락을 상기시켜야 합니다.
5. 결론
- “고품질 코드”를 받기 위해서는, AI가 충분히 이해할 수 있는 수준의 구체적이고 체계적인 요구사항을 최초 프롬프트부터 제시해야 합니다.
- 역할 지시(시니어 개발자), 버전/환경/테스트/보안 요구사항, 출력 형식(파일 구조, 주석, 테스트 코드) 등을 상세히 써 주면, AI가 단번에 양질의 초안을 생산해줄 확률이 크게 올라갑니다.
- 그래도 즉시 완벽한 코드가 나올 가능성은 낮으므로, 실제 실행·빌드·테스트 후 나온 피드백을 반복해서 AI에게 전달해, 점진적으로 완성도를 높이는 접근이 가장 효과적입니다.
이것이 프롬프트 엔지니어링을 통해 고품질 코드를 최대한 빠르고 정확하게 얻는 요령입니다.
728x90
'Ai > Prompt 엔지니어링' 카테고리의 다른 글
[프롬프트] 고품질 코드를 얻기 위한 프롬프트 생성 학습 문서 (1) | 2025.01.12 |
---|---|
[프롬프트] Ai 프롬프트 템플릿 추천 사이트 (0) | 2025.01.12 |
[ChatGPT o1 답변] ChatGPT를 이용한 개발시 앞선 코드와의 연계성 및 맥락 끊김 문제 해결 방법 답변 (0) | 2025.01.12 |