728x90
반응형
- AI에 의도를 어떻게 전달하느냐에 따라 코드 품질이 달라짐
- 좋은 프로픔프트를 작성하는 것을
프롬프트 엔지니어링(prompt engineering)이라 함
기초
- 바이브 코딩 : 사용자와 AI 모델의 대화
- 프롬프트 엔지니어링 : AI의 언어를 완벽하게 구사하는 기술
- AI를 두고 자연어로 프로그래밍하는 것
- 컴파일러의 출력물이 입력된 소스 코드의 품질에 따라 다르듯이, AI의 출력물도 프롬프트의 품질에 따라 달라짐
- 프롬프트의 패턴을 공유할 수 있다. 유사한 상황에서 재사용
구체성과 명확성
- "웹 사이트를 만들어주세요" -> 포괄적인 프롬프트를 입력하고 마법처럼 원하는 웹사이트가 나오길 기대하는 실수를 하게 됨
- 모든 관련 정보를 세세하게 작성해야 함
- 프로그래밍 언어
- 프레임워크
- 라이브러리
- 정렬함수를 작성하세요. 보단 명확한 프롬프트 작성
- 고객 기록 목록을 받아 sort_by_lastname(customers)라는 파이썬 함수를 작성하세요. 각 고객기록엔 first_name과 last_name필드가 있으며, 이 함수는 last_name을 ..블라블라
- 구체적으로
- 사용 언어 또는 환경에 대한 언급
- 결과 범위
- 엣지 케이스나 제약 조건을 생각하고 프롬프트에 포함하세요.
- 모호한 참조 피하기
- '그거'라는 단어 사용하지 않기
- 원하는 출력 형식
- 코드만 제공하세요. 설명은 필요하지 않습니다.
- 아래는 피하자
- 소설 쓰기
- AI가 세부사항을 제대로 채울것이라는 가정
- 중요한 사항(쓰레드 안전성, 특수 문자 처리)가 있다면 반드시 언급. 언급되지 않은 문제를 처리하지 못할 수 있음
- 개방적인 '창의적'프롬프트
- 데이터를 분석하는 코드를 작성하세요. -> 숫자 목록의 평균과 표준편차를 계산하는 코드를 작성하세요.
반복적인 정제: AI와의 피드백 반복
- 단번에 완벽한 답이 나오지 않으니 상호작용을 반복적인 개발 과정이라 생각해야 함
- 프롬프트 입력 -> AI 출력 -> 검토 -> 프롬프트 수정 -> AI 출력 -> ...
프롬프트 작성 기법
- 사고의 연쇄(Chain-of-thought)프롬프트
- 모델에 단계별로 생각하고 최종 답변을 제공하기전에 그 이유를 보여달라고 요청
- 12개 중에서 4개를 선택하는 방법의 수를 단계별로 알려주세요.
- 역할 프롬프트
- AI가 특정한 정체성이나 역할을 맡도록 요청해 AI 응답 방식에 영향을 미침
- 당신은 파이썬 강사입니다. 다음 코드를 설명한 후, 더이 파이썬답게 수정하세요.
- 컨텍스트 프롬프트
- 필요한 작업 설명 외에 추가적인 컨텍스트나 정보를 제공하는 것을 의미
고급 프롬프트 : 기법의 조합
- Cot를 시연하는 퓨샷 프롬프트 작성
- 시니어 엔지니어의 입장에서 문제를 단계별로 생각한 다음, 코드를 제공하세요.
프롬프트 안티패턴
- 모호한 프롬프트
- '작동하지 않습니다. 수정해 주세요' 또는 'X를 하는 A를 작성하세요'같은 프롬프트는 세부 사항이 부족한 표현
- 컨텍스트와 구체적인 내용을 추가해야 함. 질문을 했는데 AI가 너무 뻔함 답('X를 확인해 보셨나요?')을 내놓는다면, 더 많은 세부 사항 (오류 메시지, 코드 발췌,ㅡ 예상 결과 vs 실제 결과 등)을 포함해서 다시 질문해 보는게 좋다.
- 과부하 프롬프트
- AI가 한번에 너무 많은 일을 하도록 지시하는 경우, AI는 과부하에 빠진다.
- AI가 시킨대로 시도할 수 있지만 결과가 엉망이거나 불완전할 가능성이 높고 시킨 일 전체를 못할 수 있음
- 사용자 인증이 포함된 완전한 노드JS 애플리케이션을 생성하고, 프론트엔드는 리액트로 구성하며, 배포 스크립트를 작성하세요.
- 해결책은 작업을 분할하는 것. 한 번에 한 가지 일만 해야 함.
- AI가 한번에 너무 많은 일을 하도록 지시하는 경우, AI는 과부하에 빠진다.
- 누락된 질문
- 많은 정보를 제공하면서 질문이나 필요한 내용을 구체적으로 제시하지 않는 경우
- 요청을 명확하게 작성해야함. 텍스트만 제공하고 질문이나 지시가 없으면, AI는 잘못된 가정을 하게 됨
- 모호한 성공 기준
- 이 함수를 더 빠르게 만드세요. -> 이 함수를 최적화하여 선형 시간에 실행되도록 하세요. (현재 시간복잡도는 n^2 입니다.)
- 코드를 깔끔하게 작성하세요. -> 전역 변수를 제거하고 대신 클래스를 사용하도록 리팩터링하세요.
- AI의 설명이나 출력 무시
- '리액트 클래스 컴포넌트를 사용하고 계신가요. 아니면 함수형 컴포넌트를 사용하고 계신가요?' 이런 응답을 무시하지 않고 답변하도록 함.
- 일관성 부족
- 질문하는 방식을 바꾸면 모델이 혼란에 빠질 수 있음
- '나는'(1인칭)과 '사용자는'(3인칭)을 번걸아 쓰거나, 가상 코드와 실제 코드를 구분 없이 섞어서 제시하는 경우 프롬프트마다 다른 방법을 제안할 수 있음
- 질문하는 방식을 바꾸면 모델이 혼란에 빠질 수 있음
- 모호한 참조
- '위의 함수'나 '이전 출력'이라고 입력한다면, 잘못된 접근을 할 수 있음. 코드를 다시 붙여 넣거나 리팩터링할 메서드를 직접 언급하는 편이 안전
728x90
반응형
'AI 노트 > AI 끄적끄적' 카테고리의 다른 글
| 70%를 넘어서: 인간 역할의 극대화 (0) | 2026.02.09 |
|---|---|
| 효과적인 AI 보조 워크플로 (0) | 2026.02.02 |