ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 최고의 프롬프트 엔지니어링 강의를 내 프롬프트에 적용하기
    프롬프트 엔지니어링 2024. 8. 14. 23:51
    반응형

    골빈해커님의 책 <최고의 프롬프트 엔지니어링 강의>를 읽고 '청약 입주자모집공고문 분석' 프롬프트를 개선했습니다.

     

    어떻게 더 나은 프롬프트를 만들었는지 딱 4가지로 정리합니다.

     

    들어가기에 앞서, 골빈해커님 책에 나온 기본적인 프롬프트 구성을 짚고 가겠습니다.

    1. 컨텍스트 제공
    2. 원하는 결과를 요청(프롬프트 작성)
    3. 결과물의 형식을 지정

     

    이미 흔하고 당연한 구성이긴 한데 ㅎㅎ 그래도 이 책을 통해 더 자세하게 배울 수 있었습니다.

     

    저는 '청약 입주자모집공고문 해석기' 서비스에 사용할 프롬프트를 작성하려고 합니다.

    위의 프롬프트 구성에 대입해보면,

     

    1. 아파트 청약 입주자모집공고문 PDF 파일을 컨텍스트로 제공합니다.
    2. 청약 입주자모집공고문에서 핵심을 요약해주고 정리해달라고 요청합니다.
    3. 마크다운, 표, 차트 등으로 표시해달라고 응답 형식을 지정합니다.

     

     

    제가 쓴 최초의 프롬프트는 이겁니다:

    청약 모집공고문을 정확히 분석하고 쉽게 설명해줘.

     

    단 한 줄 😂😂😂 어림도 없죠

     

     

    응답은 이렇게 왔습니다. 중요하지 않으니까 접을게요:

    (접은글, 더보기를 클릭하면 볼 수 있습니다)

    더보기

    네, 요약하면 다음과 같습니다:

    1. 이 아파트는 경기도 성남시 수정구 산성동 1336번지 일대에 위치한 '산성역 헤리스톤' 아파트입니다. 총 3,487세대(조합원 1,842세대, 임대 421세대) 중 일반분양 1,224세대로 구성되어 있습니다.
    2. 분양 일정은 다음과 같습니다:
    • 특별공급: 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년
    • 일반공급: 당첨자 발표일로부터 1년
    1. 비확장형 선택 시 추가선택품목을 선택할 수 없으며, 발코니 확장 및 추가선택품목 계약은 별도로 진행됩니다.
    2. 청약 전에 단지 및 세대 여건, 주변 환경 등을 충분히 확인해야 하며, 미확인에 따른 책임은 청약자 본인에게 있습니다.

    이상으로 청약 모집공고문의 주요 내용을 요약하였습니다. 궁금한 점이 더 있으시면 추가로 설명드리겠습니다.

     

     

     

    아래는 프롬프트 개선 방법 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>


    중립적인 어조를 유지하고 원본 문서에 제시된 사실에 충실하십시오. 개인적인 의견이나 원본 공고문에 없는 추가 정보를 추가하지 마십시오.

    Claude는 프롬프트를 영어로 작성해줍니다

     

     

    클로드가 작성해준 프롬프트 초안은 많이 부족했습니다.

    그래도 단 한 줄이었던 프롬프트가 저렇게 변신했으니, 출발점이 달라지긴 했습니다.

     

    이 초안에다가 책에 나온 프롬프트 디자인 방법을 적용했습니다.

    이어서 이야기하는 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 형식으로 표시해주세요.]

    ## 특별공급
    [다음 각 유형의 신청자에게 특별히 중요한 정보를 강조해주세요.]
    - 기관추천 특별공급
    - 다자녀가구 특별공급
    - 신혼부부 특별공급
    - 노부모부양 특별공급
    - 생애최초 특별공급
    - 특별공급 공통사항
    - 특별공급 당첨자 선정 및 동·호수 결정

    ## 일반공급
    - 신청자격 및 당첨자 선정방법
    - 순위별 신청자격

    ## 유의사항 및 단지 내외부 여건
    - 입주자 사전방문
    - 입주예정일
    - 부대복리시설
    - 주차장 관련 유의사항
    - 단지 내외부 여건

    [청약 신청자들이 확인해야 할 사항들을 체크리스트 형태로 정리해주세요.]

    중립적인 어조를 유지하고 원본 문서에 제시된 사실에 충실하십시오. 개인적인 의견이나 원본 공고문에 없는 추가 정보를 추가하지 마십시오. 응답은 마크다운으로 작성해주세요

     

     

    반응형
You can do everything.