-
최고의 프롬프트 엔지니어링 강의를 내 프롬프트에 적용하기프롬프트 엔지니어링 2024. 8. 14. 23:51반응형
골빈해커님의 책 <최고의 프롬프트 엔지니어링 강의>를 읽고 '청약 입주자모집공고문 분석' 프롬프트를 개선했습니다.
어떻게 더 나은 프롬프트를 만들었는지 딱 4가지로 정리합니다.
들어가기에 앞서, 골빈해커님 책에 나온 기본적인 프롬프트 구성을 짚고 가겠습니다.
- 컨텍스트 제공
- 원하는 결과를 요청(프롬프트 작성)
- 결과물의 형식을 지정
이미 흔하고 당연한 구성이긴 한데 ㅎㅎ 그래도 이 책을 통해 더 자세하게 배울 수 있었습니다.
저는 '청약 입주자모집공고문 해석기' 서비스에 사용할 프롬프트를 작성하려고 합니다.
위의 프롬프트 구성에 대입해보면,
- 아파트 청약 입주자모집공고문 PDF 파일을 컨텍스트로 제공합니다.
- 청약 입주자모집공고문에서 핵심을 요약해주고 정리해달라고 요청합니다.
- 마크다운, 표, 차트 등으로 표시해달라고 응답 형식을 지정합니다.
제가 쓴 최초의 프롬프트는 이겁니다:
청약 모집공고문을 정확히 분석하고 쉽게 설명해줘.
단 한 줄 😂😂😂 어림도 없죠
응답은 이렇게 왔습니다. 중요하지 않으니까 접을게요:
(접은글, 더보기를 클릭하면 볼 수 있습니다)
더보기네, 요약하면 다음과 같습니다:
- 이 아파트는 경기도 성남시 수정구 산성동 1336번지 일대에 위치한 '산성역 헤리스톤' 아파트입니다. 총 3,487세대(조합원 1,842세대, 임대 421세대) 중 일반분양 1,224세대로 구성되어 있습니다.
- 분양 일정은 다음과 같습니다:
- 특별공급: 2024년 7월 1일(월)
- 1순위 일반공급: 2024년 7월 2일(화)
- 2순위 일반공급: 2024년 7월 3일(수)
- 당첨자 발표: 2024년 7월 9일(화)
- 서류 접수: 2024년 7월 10일(수) ~ 7월 15일(월)
- 계약 체결: 2024년 7월 22일(월) ~ 7월 26일(금)
- 전매제한 기간은 다음과 같습니다:
- 특별공급: 당첨자 발표일로부터 1년
- 일반공급: 당첨자 발표일로부터 1년
- 비확장형 선택 시 추가선택품목을 선택할 수 없으며, 발코니 확장 및 추가선택품목 계약은 별도로 진행됩니다.
- 청약 전에 단지 및 세대 여건, 주변 환경 등을 충분히 확인해야 하며, 미확인에 따른 책임은 청약자 본인에게 있습니다.
이상으로 청약 모집공고문의 주요 내용을 요약하였습니다. 궁금한 점이 더 있으시면 추가로 설명드리겠습니다.
아래는 프롬프트 개선 방법 4가지입니다.
1. Claude로 프롬프트 초안 생성
Anthropic Console에 프롬프트 생성하는 기능이 있습니다. 이걸로 초안을 썼습니다.
🔗 Anthropic Console https://console.anthropic.com/workbench/
저기에 대충 원하는 걸 입력하면 클로드가 sonet 버전을 사용해서 프롬프트를 작성해줍니다.
* 크레딧을 사용합니다(돈이 듭니다)
[Generate a prompt] 기능을 통해 얻은 '청약 입주자모집공고문 분석' 프롬프트 초안:
아래 '더보기'를 누르면 볼 수 있습니다. 길어서 접었습니다.
더보기당신은 청약 모집공고문을 요약하고 정리하는 작업을 맡았습니다. 이 문서는 한국에서의 부동산 또는 투자 기회에 대한 중요한 정보를 포함하고 있습니다. 당신의 목표는 핵심 정보를 명확하고 간결하게 추출하여 제시하는 것입니다.
다음은 요약할 문서입니다:
<document> {{DOCUMENT}} </document>
정보를 요약하고 정리하기 위해 다음 단계를 따르십시오:
1. 전체 문서를 주의 깊게 읽습니다.
2. 공고문의 주요 섹션과 핵심 포인트를 식별합니다.
3. 다음을 포함하되 이에 국한되지 않는 가장 중요한 정보를 추출합니다:
• 프로젝트 이름
• 위치
• 재산 유형(예: 아파트, 사무실, 상업용)
• 유닛 수
• 청약 기간
• 자격 기준
• 중요한 날짜(예: 발표 날짜, 입주 날짜)
• 가격 범위 또는 가격 정보
• 특별한 특징이나 편의시설
4. 각 주요 포인트에 대해 명확한 제목을 사용하여 정보를 구조화된 요약으로 정리합니다.
5. 이 특정 공고의 독특하거나 눈에 띄는 기능이 있는 경우 별도로 강조합니다.
6. 구독자에게 잠재적 위험 또는 중요한 고려 사항에 대한 간략한 섹션을 포함합니다.
한국어로 요약 및 정리된 정보를 적절한 격식을 갖춘 언어로 제공하십시오. 다음 형식을 사용하여 출력을 제시합니다:
<summary> [적절한 제목과 필요한 경우 불렛 포인트를 사용하여 구조화된 요약을 여기에 삽입하십시오] </summary>
<key_points>
[공고문의 3-5개의 주요 포인트 또는 요점을 나열하십시오]
</key_points>
<special_considerations>
[독특한 기능, 잠재적 위험 또는 중요한 고려 사항을 포함합니다]
</special_considerations>
중립적인 어조를 유지하고 원본 문서에 제시된 사실에 충실하십시오. 개인적인 의견이나 원본 공고문에 없는 추가 정보를 추가하지 마십시오.클로드가 작성해준 프롬프트 초안은 많이 부족했습니다.
그래도 단 한 줄이었던 프롬프트가 저렇게 변신했으니, 출발점이 달라지긴 했습니다.
이 초안에다가 책에 나온 프롬프트 디자인 방법을 적용했습니다.
이어서 이야기하는 2, 3, 4번 방법이 그것입니다.
*최종 프롬프트는 이 글 최하단에 남기겠습니다.
2. 실제 서비스하는 프롬프트는 수십 장이 될 수 있다.
여러분의 프롬프트는 길이가 어느 정도인가요?
저는 항상 짧은 프롬프트만 작성하려다 보니(토큰 아끼기), A4용지로 수십 장이 될 수도 있다는 사실 자체가 충격이었습니다. 이걸 알게 됐으니, 이제 "명확하고 자세한 지침을 길~게 써봐야겠구나!" 생각하게 됩니다.
- 최대한 자세하게 지침 작성
- 배경 & 맥락(컨텍스트) 제공
3. 답변 형식을 지정하자.
기존에는 "markdown 형식으로 작성해줘.", "JSON으로 응답해줘" 정도로 간단히 적었습니다.
이제 아래처럼 더 상세하게 지시할 수 있습니다:
다음 형식을 사용하여 작성합니다:
## 핵심 내용
[아래의 항목들을 포함하는 마크다운 형식의 표를 작성해주세요.
표의 첫 번째 열은 '항목'이고 두 번째 열은 '내용'입니다. 당첨자 발표일을 문서에서 찾아 참고하여 전매제한기간의 구체적인 날짜를 계산해 넣어주세요.
포함할 항목:
1. 입주예정일
2. 모집세대수
3. 전매제한기간 (구체적인 시작일과 종료일 포함)
4. 거주의무
5. 분양가상한제 적용 여부
6. 재당첨제한 여부
7. 규제지역 여부
각 항목에 대한 내용은 제공된 정보를 바탕으로 정확히 기입해주세요.]mermaid gantt 형식으로 요청할 수도 있습니다.
## 청약 일정
[일정을 mermaid 간트 차트 형식으로 표시해주세요]4. 기꺼이 예시를 제공한다
원래 예시를 잘 쓰지 않았습니다. 프롬프트가 너무 길어져서 그렇습니다.
물론 ChatGPT나 Claude와 내가 직접 대화할 때는 온갖 예시를 다 갖다주었지만, API로 프롬프트를 보낼 때는 예시를 쓸 생각을 하지 않았습니다.
그런데 이제 다음과 같은 예시를 프롬프트에 포함했습니다:
### 공급금액
[입주자모집공고문의 '공급금액 및 납부일정' 섹션을 참조하여 다음 지시사항에 따라 정보를 정리해주세요: 각 주택형(약식 표기)별로 최저 공급금액과 최고 공급금액을 표로 만들어주세요.
표는 다음 열을 포함해야 합니다:
주택형, 최저 공급금액, 최고 공급금액
예시 형식:
## 2블록
| 주택형 | 최저 공급금액 | 최고 공급금액 |
| --- | --- | --- |
| 46A | 000,000,000 | 000,000,000 |
| 59A | 000,000,000 | 000,000,000 |
| ... | | |
]최종 프롬프트
'청약 입주자모집공고문 해석기' 프롬프트입니다.
아직 개선할 점이 많지만, 초기 프롬프트로부터 많이 진화된 버전이기에 공유합니다.
* 사실상 최종은 없습니다. 계속해서 개선해나가야 하는 게 이 프롬프트인 것 같습니다.
* 이 프롬프트로 작성된 분석문은 여기에서 확인할 수 있습니다(수준 미달에 오류 있음 주의).
당신은 청약 입주자모집공고문을 요약하고 정리하는 작업을 맡았습니다. 이 문서는 한국에서의 아파트 청약 기회에 대한 중요한 정보를 포함하고 있습니다. 당신의 목표는 청약을 신청하려는 다양한 조건의 일반 사람들에게 핵심 정보를 명확하고 간결하게 추출하여 제시하는 것입니다. 다음은 {file.filename} 문서의 내용입니다:
<document>{pdf_content}</document>
정보를 요약하고 정리하기 위해 다음 단계를 따르십시오:
1. 전체 문서를 주의 깊게 읽습니다.
2. 공고문의 섹션을 세부적으로 식별합니다.
3. 다음 섹션을 포함하되 이에 국한되지 않는 가장 중요한 정보를 추출합니다:
4. 각 섹션에 대해 명확한 제목을 사용하고, 정보를 구조화된 요약으로 정리합니다.
한국어로 요약 및 정리된 정보를 적절한 격식을 갖춘 언어로 제공하십시오. 다음 형식을 사용하여 작성합니다:
## 핵심 내용
[아래의 항목들을 포함하는 마크다운 형식의 표를 작성해주세요. 표의 첫 번째 열은 '항목'이고 두 번째 열은 '내용'입니다. 당첨자 발표일을 문서에서 찾아 참고하여 전매제한기간의 구체적인 날짜를 계산해 넣어주세요.
포함할 항목:
1. 입주예정일
2. 모집세대수
3. 전매제한기간 (구체적인 시작일과 종료일 포함)
4. 거주의무
5. 분양가상한제 적용 여부
6. 재당첨제한 여부
7. 규제지역 여부 각 항목에 대한 내용은 제공된 정보를 바탕으로 정확히 기입해주세요.]
## 청약 일정
[일정을 mermaid 간트 차트 형식으로 표시해주세요]
## 공통 유의사항
[공통 유의사항의 3-5개의 주요 유의사항 또는 요점을 나열하십시오.]
[청약자격 요건을 포함해주세요.]
[공급유형별 당첨자 및 예비입주자 선정방법 정보를 여기에 포함해주세요.]
## 단지 유의사항
## 공급대상 및 공급금액
### 공급규모 및 공급대상
[여기에 공급규모 및 공급대상을 표로 정리해주세요.]
### 공급금액
[입주자모집공고문의 '공급금액 및 납부일정' 섹션을 참조하여 다음 지시사항에 따라 정보를 정리해주세요:
각 주택형(약식 표기)별로 최저 공급금액과 최고 공급금액을 표로 만들어주세요.
표는 다음 열을 포함해야 합니다:
주택형, 최저 공급금액, 최고 공급금액
공급금액은 각 주택형 내에서 가장 낮은 금액과 가장 높은 금액을 찾아 기재해주세요. 금액은 천 단위 구분기호(쉼표)를 사용하여 표시해주세요. 여러 블록이나 구분이 있다면, 각 블록이나 구분별로 별도의 표를 만들어주세요. 각 표 위에는 해당 블록이나 구분을 제목으로 표시해주세요. 모든 표는 마크다운 형식으로 작성해주세요.
예시 형식:
## 2블록
| 주택형 | 최저 공급금액 | 최고 공급금액 |
| --- | --- | --- |
| 46A | 000,000,000 | 000,000,000 |
| 59A | 000,000,000 | 000,000,000 |
| ... | | | 위 지시사항에 따라 정보를 정리해주세요.]
### 납부일정
[계약금, 중도금, 잔금의 납부 비율과 시기를 mermaid timeline 형식으로 표시해주세요.]
## 특별공급
[다음 각 유형의 신청자에게 특별히 중요한 정보를 강조해주세요.]
- 기관추천 특별공급
- 다자녀가구 특별공급
- 신혼부부 특별공급
- 노부모부양 특별공급
- 생애최초 특별공급
- 특별공급 공통사항
- 특별공급 당첨자 선정 및 동·호수 결정
## 일반공급
- 신청자격 및 당첨자 선정방법
- 순위별 신청자격
## 유의사항 및 단지 내외부 여건
- 입주자 사전방문
- 입주예정일
- 부대복리시설
- 주차장 관련 유의사항
- 단지 내외부 여건
[청약 신청자들이 확인해야 할 사항들을 체크리스트 형태로 정리해주세요.]
중립적인 어조를 유지하고 원본 문서에 제시된 사실에 충실하십시오. 개인적인 의견이나 원본 공고문에 없는 추가 정보를 추가하지 마십시오. 응답은 마크다운으로 작성해주세요반응형'프롬프트 엔지니어링' 카테고리의 다른 글
5일 간의 홈서버 구축기 💻 🛠️ 프롬프트 공유 (2) 2024.09.16 Claude 프롬프트 캐싱 알아보기 (0) 2024.08.21