주식투자. 거북이도 하늘을 날 수 있습니다.

주식투자는 기업의 미래에 투자하는 것입니다. 느리지만 꾸준히 원칙을 지키는 투자로 미래를 바꿀 수 있습니다.

꿈을 그리는 A.I

초보자를 위한 ChatGPT의 한계를 뛰어넘는 Prompt만들기

HandlerOne 2024. 11. 23. 23:29

 

ChatGPT는 인간의 창의성을 대체하는 것이 아니라, 그것을 증폭시키는 도구이다.
~미래학자 알렉산드라 벨~

 

Chat GPT의 한계를 뛰어넘는 방법, XML또는 Jason을 이용한 Prompt의 구조화

  #ChatGPT와 같은 언어 모델을 최대한 활용하고 싶다면, 프롬프트 작성법에 대해 알아야 합니다. 프롬프트는 AI에게 주어진 "지시문"으로, 이를 얼마나 명확히 작성하느냐에 따라 결과의 질이 크게 달라집니다. 특히, 정보를 구조적으로 정리하여 AI에게 전달하는 방법으로 XML과 JSON이 있습니다. 이 글에서는 프롬프트를 처음 사용하는 분들도 쉽게 따라할 수 있도록 XML과 JSON의 차이점, 작성법, 그리고 활용 사례를 통해 보다 쉽게 좀더 깊은 Prompt영역으로 안내해 드리겠습니다. 


프롬프트(Prompt)는 도데체 뭘까요?
  프롬프트는 간단히 정의한다면, GPT가 "어떤 역할을 수행해야 하는지", "무엇을 해야 하는지"를 알려주는 일종의 '지시문(#Prompt)' 입니다. 잘 작성된 프롬프트는 GPT가 당신의 요구를 정확히 이해하고 원하는 답변을 줄 수 있도록 도와주며 GPT가 나에 지시에 대해 어떤 대답을 하는지를 유도 할 수도 있습니다. 


- 초간단 단순 Prompt -

Example Prompt
User가 입력한 Prompt :  "유럽여행지를 추천해줘"

GPT짱의 답변 : 

   1. 역사와 문화 탐방
이탈리아 로마: 고대 로마의 유적지(콜로세움, 포럼)와 바티칸 시티.
프랑스 파리: 에펠탑, 루브르 박물관, 세느강 크루즈로 낭만과 예술을 만끽.
그리스 아테네: 아크로폴리스와 고대 유적지에서 고대 문명을 탐험.

    2. 자연과 풍경을 즐기고 싶다면
스위스 인터라켄: 융프라우 등 알프스 산맥에서 하이킹과 눈 덮인 풍경 감상.
노르웨이 피오르드: 게이랑에르 피오르드에서 절경의 협곡을 크루즈로 탐험.
아이슬란드 레이캬비크: 오로라 관찰과 블루 라군 온천 체험.

  위와 같이 초간단 Prompt는 흔히 GPT 처음 사용자가 가장 많이 쓰는 질문 또는 명령 형태의 Prompt 일겁니다. 간단한게 GPT에게 명령내리는것이 꼭 나쁜것만은 아닙니다. 하지만, 보다 나에게 맞는 그리고 좀더 깊이 있는 나에게 맞는 그런 대답을 원한다면 이런 '초간단 Prompt'는 지향하는 것이 좋습니다. 
  그리고 잊지 마세요! 우리들의 GPT짱은 당신의 모든것을 학습하고 있다는 것을.. 당신이 단순하게 작업하면 우리들의 GPT짱은 아주 단순한 머리를 갖고 있는 AI갖지 않은 AI가 된다는 것을요, (^_^;) 

- #ChatGPT가 보다 더 정확하게 답변할 수 있는 Prompt -

Example Prompt
User가 입력한 Prompt : "유럽의 여행지를 추천해줘, 내가 원하는 여행지는 유럽이고, 예산이 적으며, 예술과 역사를 즐길 수 있는 곳이에요"

GPT짱의 답변 : 

1. 체코 - 프라하 (Prague)
이유:  "백탑의 도시"로 불리는 프라하는 고딕 양식의 건축물과 아름다운 카를교, 프라하 성 등이 유명합니다. 도시 전체가 마치 박물관처럼 느껴지며, 물가도 서유럽보다 저렴합니다.
추천 명소: 
  - 프라하 성 (세계 최대의 고성) 
  - 구시가 광장과 천문시계
  - 유대인 지구와 유대인 박물관
예산 팁: 현지 식당에서 체코 전통 요리(굴라시, 트델니크)를 저렴하게 즐길 수 있음.

2. 헝가리 - 부다페스트 (Budapest)
이유: "동유럽의 파리"라 불리며, 두 도시(부다와 페스트)가 다뉴브 강으로 나뉘어 있어 풍경이 아름답습니다. 저렴한 숙소와 음식 가격이 매력적이며, 화려한 온천 문화도 경험할 수 있습니다.
추천 명소:
  - 부다 성 (유네스코 세계문화유산)
  - 국회의사당 (다뉴브 강변의 랜드마크)
  - 세체니 온천에서 휴식
예산 팁: 대중교통이 저렴하며, 도보로도 많은 명소를 둘러볼 수 있음.

  Prompt를 조금 더 상세하게 작성해보니 답변 수준이 크게 달라진 걸 느끼셨죠? ChatGPT는 훌륭한 AI로, 사용자의 입력에 따라 학습하고 반응합니다. 그래서 마치 친구나 동료처럼 사용자에게 맞춤형 대응을 할 수 있는 장점이 있지만, 반대로 사용자가 제대로 활용하지 않으면 그만큼 결과도 평범해질 수 있습니다.
  그렇다면 어떻게 Prompt를 작성해야 GPT가 더 영리하고 똑똑하게 반응할까요? 먼저 ChatGPT가 AI이지만, 한꺼번에 모든 걸 처리할 수 없다는 사실을 이해해야 합니다. 이 부분이 어려울 수 있는데, 왜냐하면 처음 사용할 때 GPT가 모든 질문에 즉각적으로 답해주는 것처럼 보이기 때문이죠. 그래서 처음엔 짧고 간단한 질문만 하게 되지만, 더 깊이 있는 답변을 원한다면 질문도 구체적이고 명확하게 작성하는 것이 중요합니다.
  ChatGPT는 OpenAI라는 회사에서 막대한 자본을 투자해 운영하는 시스템입니다. 수천 개의 GPU와 수백 대 이상의 AI 서버가 24시간 가동되며, 전력 소모도 엄청납니다. 아무리 초저전력 서버로 설계해도 자원은 한정적이고, 냉각만으로도 소도시 수준의 전력이 필요합니다. 이 때문에 OpenAI가 아무리 많은 자본을 투자받고 있어도 자원은 무한하지 않기에 여러 제한이 존재합니다.
  예를 들어, 학습을 위해 파일을 업로드할 때 최대 크기는 30MB로 제한됩니다. 또한, 너무 많은 요청을 한 번에 시도하면 정확한 답변을 못 하거나 엉뚱한 답변이 나올 수 있습니다. 이는 자원의 한계를 고려해 효율적으로 사용해야 하기 때문에 자연스럽게 생겨난 Prompt 법칙입니다. 
 
그래서 GPT짱에게 입력할 Prompt에 자연스럽게 문법이 생겨나게 된 것이구요, 이 문법에 가장 기초가 한 문장에 여러가지 일과 역할을 부여하지 말고 끊어서 작성한다.'Prompt를 구조화' 하는 것 입니다. 


내가 원하는 내용을 그냥 쓴다? 아니면 구조화 한다? 
  Prompt는 GPT에게 원하는 답을 유도하는 지시문입니다. 하지만 처음에는 간단히 시작했던 Prompt가 점점 길어지기 쉽습니다. 이렇게 Prompt가 길어질수록 GPT의 반응도 이상해질 수 있습니다. 이는 복잡한 문장이 GPT를 혼란스럽게 만들기 때문이죠. 사용자가 이 습관을 고치지 않으면, GPT는 점점 더 엉뚱하거나 원치 않는 답을 하게 됩니다.
결국, 사용자는 GPT에 능력에 불신과 불만을 가지게 됩니다.
  "뭐야.. GPT니 인공지능이니 대단한줄 알았는데, 막상 써보니 뭐가 꼭 그렇지만도 않네... 바보같아.. "  라고 하면서 말이죠, 그러나 이건 GPT에게 지시하는 지시문, 즉 Prompt를 잘못 작성하면서 발생하는 문제입니다. 
  GPT짱은 기본적으로 사용자가 입력한 Prompt 패턴을 학습한다는 것을 잊지마세요, 그래서 GPT짱을 더 똑똑하게 만들려면 구사하는 Prompt도 잘 만들어야 합니다.  Prompt 초심자가 가장 쉽게 사용할 수 있는 좋은 Prompt 작성법은 다음과 같습니다. 

 Chat GPT를 더 똑똑하게 일하게 하는 Prompt를 작성하는 Tip
하나.

'페르소나'를
부여 합니다.
GPT짱에게 본격적으로 무엇인가를 입력해서 작업을 시키기 전에
반드시! 그 시키려는 일과 관련된 역할을 부여해주세요.
이건 마치 드라마나 영화에서 배우들이 실제 그 역할의 삶을 살았던것은 아니지만, 감독과 각본가가 만들어준 대본(Prompt)에 따라 잠시 진짜로 그 삶의 주인공이 되게 하는것과 비슷한 것 입니다.
이 과정을 전문적인 Prompt 엔지니어들은 "GPT에게 페르소나를 지정해 준다"라고 표현합니다. 
두울.

'지침'을
만들어줍니다.
내가 원하는 작업을 GPT짱에게 Prompt를 통해 입력할때 먼저 원하는 일을 하기 위한 기준이 되는 내용을 '지침'으로 작성해 주세요 

[ '지침' 작성 Example ] 
앞으로 나는 너를 "순이야"라고 부를께, 그리고 너는 앞으로 내가 업로드 하는 PDF 파일의 내용을 분석해서 학습한 다음, 내가 필요한 결과물을 지시하면, 그 결과물을 만들어서 화면에 보여주면되. 그리고 이 일을 할 때, 아래의 '지침'을 준수해서 작업해줘 
   a. 모든 결과물은 '한글'로 작성해서 화면에 보고서 형태로 보여줘
   b. 내가 "docx파일로 추출해줘" 라고 너에게 지시 했을때만 최종 결과물을 docx 파일로 추출해줘
   c. 내가 지시한 작업을 진행하면서 학습한 데이터가 부족해서 결과물을 만들 수 없을땐,  학습하지도 않은 내용을 멋대로 상상해서 결과물을 만들지 말고, 반드시 나에게 필요한 데이터 또는 자료를 요청해줘

이 지침에 따라 앞으로 내가 너에게 지시한 결과물을 만들어줘 
세엣.

여러번에 나눠서
작업을 시킵니다.
  GPT짱은 때때로 인간보다 신뢰할 수 있지만, 한 번에 여러 가지를 처리하는 데는 한계가 있습니다. GPT에 익숙해질수록 Prompt가 점점 길어지기 쉬운데, 이럴수록 답변 시간이 길어지고 결과가 엉뚱해질 때가 있습니다. 이로 인해 사용자는 "왜 이렇게 답이 이상하지?"라는 생각을 할 수 있습니다.
  이 문제가 발생하는 이유는 Prompt 한 문장안에 너무 여러가지를 한꺼번에 지시해서 벌어지는 문제 입니다. GPT짱은 Prompt로 무언가가 자신에게 입력되면 "데이터화 하고 ▶ 분석하고 학습하고 작업한다"의 순서를 기억하시고 이 과정에 맞게 일을 분할해서 지시하세요.  

[Prompt Example]
첫번째 프롬프트: " 순이야, 내가 PDF 파일을 업로드 할껀데, 그 내용을 분석해서 데이터화한 다음 학습해"

   ~ GPT의 답변을 확인하고 데이터화 한다음 분석과 학습이 끝난 상태를 확인~

두번째 프롬프트: " 잘 학습했니? 그럼 이번에는 그 학습한 데이터를 토대로 해서, 순이가 PDF 파일 문서 내용중에 고객 요건을 추출해서 표로 만들고 그걸 화면에 리포트로 보여줘,그럼 내가 순이가 작업한 결과가 재대로 된건지 확인할께"

   ~ GPT의 답변을 확인하고 학습이 끝난 지식을 바탕으로 작업을 시작 ~

세번째 프롬프트: "순이가 아주 잘 만들어 줬어, 만들어준 내용에 문제가 없네, 그럼 내가 파일로 받아서 쓸수 있게 docx 파일로 추출해줘"

   ~ GPT가 다운받을 수 있는 MS 워드 파일로 만들어주고, 다운로드 경로를 제공 ~

이런방식입니다. 

  자 이제 위에서 보여드린 방식보다 GPT가 더 정확하게 내 의도대로 작동하게 하는 방법을 알려드리죠, 여기서 부터는 약간 프로그래밍 같은 느낌이 나서 갑자기 이해하기 힘들수도 있지만, 나를 위해서 잘 작동하는 GPT짱을 얻기 위한 과정이니 끝까지 잘 읽어보시고 적용해 보세요~

[ #XML로 프롬프트 작성하기 ]

**#XML (Extensible Markup Language)**는 "사용자 정의 태그" 라고 해서 데이터를 '태그(tag = "< tag >사용자 정의</tag>")'로 감싸서 구조적으로 정리하는 Html의 하나의 부류 입니다. 이 형식을 이용해서  요청이 복잡하거나 단계별로 나눠 GPT에게 작업을 시킬 경우에 매우 유용합니다. 
  이 방법은 위에서 이야기한 일반적인 Prompt로 한번에 여러가지 일을 시켰을 때 일어날 수 있는 '주제의 혼돈''작업병행에 따른 결과의 불명확성"을 해결할 수 있는 방법입니다. 
예시:
XML방식으로 "유럽에서 예산이 적고 예술과 역사를 즐길 수 있는 여행지를 추천해줘"라고 Prompt를 만들고 싶다면 아래와 같이 만들 수 있습니다. 

Example XML Prompt
<프롬프트>
    <역할>여행 전문가</역할> 
    <목적>여행지 추천</목적> 
    <사용자_선호> 
        <위치>유럽</위치>
        <관심사>예술, 역사</관심사> 
        <예산>낮음</예산> 
    </사용자_선호> 
</프롬프트>

설명:

  1. <역할> 역할 </역할>: AI가 수행해야 할 역할을 정의합니다. (여기서는 "여행 전문가")
  2. <목적> 목표 </목적>: 작업의 목표를 설정합니다. (예: "여행지 추천")
  3. <사용자_선호> 사용자 세부조건 </사용자_선호>: 사용자의 조건을 세부적으로 정리합니다.

장점:
  'XML(사용자 정의 태그)'를 사용하면, 내가 원하는 의도를 분명하게 GPT에게 전달할 수 있습니다. GPT짱이 어떤 작업을 해야 하는지 더 쉽게 파악할 수 있게 하고, 구조화된 형태로 지시를 분리하여, 복잡한 요청에서도 혼동 없이 명확한 수행을 하게 합니다.  그리고 각각의 역할과 의미를 명확히 구분해서 전달하므로, GPT짱이 요청을 더 정확히 이해하고 원하는 답을 줄 수 있도록 만들어 줍니다. 
  내가 원하는 결과를 확실하게 얻고자 할 때, 이런 XML태그 방식을 활용하면 Prompt를 작성한 사용자의 의도와 세부사항을 명확하게 나눠서 표현할 수 있습니다. 하지만 Prompt에 적용하는 XML은 어디까지나 작성한 Prompt 문장의 명확한 내용과 GPT짱이 단계적으로 수행해야 할 과정을 명확하게 전달하는 도구일 뿐이지 GPT짱에게 실제 XML 프로그래밍 소스코드를 컴파일러 해서 웹에서 무엇인가 작동하게 하는 프로그램적 기능은 없습니다.
XML방식은 GPT가 사용자의 Prompt를 더 잘 이해하도록 돕는 '문서화된 구조화 도구' 일 뿐입니다. 


[ #JSON로 프롬프트 작성하기 ]

**JSON(JavaScript Object Notation)**은 간단하게 데이터를 정리할 수 있는 형식으로, 웹 환경이나 간단한 요청에 적합합니다.
예시:
JSON으 "유럽에서 예산이 적고 예술과 역사를 즐길 수 있는 여행지를 추천해줘"라고 Prompt를 만들고 싶다면 아래와 같이 만들 수 있습니다. 

 Example JSON Prompt
{
  "action": "recommend",
  "region": "Europe",
  "criteria": {
    "budget": "low",
    "interests": ["art", "history"]
  },
  "response_type": "travel_destinations"
}
 

설명:

  1. "action": "recommend": 이 필드는 무엇을 해야 하는지를 명확히 나타냅니다. 여기서는 여행지를 추천하는 작업을 요청하는 부분입니다.
  2. "region": "Europe": 요청의 대상 지역이 "유럽"임을 명시하고 있습니다.
  3. "criteria": 여행지 추천의 기준들을 모아둔 객체(class)입니다.
  4. "budget": "low": 예산이 적다는 기준을 정해주는 부분입니다.
  5. "interests": ["art", "history"]: 사용자가 관심 있는 주제는 예술과 역사라고 했기 때문에 '배열 형태'로 여러가지 관심사를 GPT짱에게 전달하는 역할을 하는 부분입니다.
  6. "response_type": "travel_destinations": 답변의 유형이 여행지 추천임을 명시해서 내가 어떻게 응답할지 방향을 정할 수 있습니다. 

장점:
  XML과 동일하게 Prompt를 구조화 할 수 있기 때문에 아주 분명하고 정확한 결과를 GPT짱에게 기대할 수 있습니다. 그러나 이건 어디까지나 프로그래밍을 해봤던 사람들에게나 통용되는 이야기이지, 처음 Prompt를 접하는 분들에겐 이건 거의 아프리카 사람이 영어를 배워야 하는 것과 비슷한 정도의 난이도 가 있는 부분입니다.


[ XML과 JSON의 차이점, 쉽게 이해하기 ]

XML 방식과 JSON 방식이란?
  XML과 JSON은 정보를 나누어 전달하는 형식일 뿐 입니다. 둘 다 "정보를 어떻게 포장해서 상대방에게 줄 것인가"에 대한 이야기이며, 마치 서로 다른 종류의 상자에 물건을 담아주는 것처럼 생각하면 됩니다. 
    XML: 마치 정교하게 포장된 화려한 선물 상자 같은 느끼이라면, 
    JSON: 깔끔하고 심플한 택배 상자라고 생각하면 됩니다. 

XML 방식 장.단점

XML은 데이터를 태그로 Prompt안에 있는 지시내용 내용을 "< > 실제내용 </>" 로 감싸서 표현하는 방식입니다. 마치 우리가 글을 쓸 때 강조하고 싶은 부분을 따로 표시하는 것과도 같습니다. 모든 정보를 태그로 감싸서 그 의미를 더 명확하게 해주는 방식입니다. 
장점:
구조적으로 명확하고 태그가 각각의 정보를 구분하고 있어서 정보를 찾기 쉽고, 잘 정리된 느낌입니다. 복잡한 정보 표현에 잘 맞으며, 마치 여러 층으로 쌓인 선물 상자처럼, 안에 또 다른 상자(테그)를 넣을 수 있습니다. 이런이유로 하나의 문장으로 된 Prompt보다 복잡한 정보를 다루기에 적합니다. 
단점:
Prompt가 길어지면, XML방식도 복잡하고 길어지기 시작합니다. 태그로 감싸는 부분이 많기 때문에 표현이 아래로 길어질 수 밖에 없는 문장구조를 갖고 있습니다. 그러니 당연히  전체 문장이 복잡해질 수 밖에 없습니다.
Prompt 내용이 너무 많으면 당연히 XML도 무겁워지고 태그가 많으니 단순한 정보를 표현할 때는 너무 과하게 느껴질 수 도 있습니다.

JSON 방식 장.단점

JSON은 정보를 '키''값'의 쌍으로 표현해. 마치 주소가 적힌 택배 상자처럼 깔끔하고 필요한 내용만 적어두는 방식입니다.
장점:
Prompt가 간결하고 직관적으로 구성됩니다. 정보를 깔끔하게 나열하니까 짧고 빠르게 GPT짱이 이해할 수 있습니다. 마치 간단한 택배 포장처럼, Prompt 문장안에서 쓸떼없는 군더더기는 빼고 GPT한테 지시할 필요한 내용 만 딱 정리하는 느낌입니다. 
단점:
  구조적으로 복잡한 정보의 표현이 어렵습니다. 너무 복잡한 구조를 다루려면 오히려 불편해질 수 있도 있습니다. JSON이란 언어 구조가 계속 중괄호안에 또 괄호안에 이런식으로 쌓아가면서 밑으로 계속 내려가기 때문에 간단한 Prompt도 굉장히 아래로 길어지는 문장이 되며, 너무 긴 문장은 계획 화면을 오르락 내리락 스크롤 하면서 작업해야 되서 오히려 단점으로 지적하는 분들도 많이 있습니다. 
  이렇니 당연히 Prompt의 명확성이 떨어질 수 있습니다. 태그대신 키와 값만 나열하니까, 뭔가 더 명확하게 구분하고 싶을 때는 XML보다는 덜 직관적으로 보여집니다. 


[음 하하핫! 드뎌 궁국의 Tip등장!]


 자... 여기까지 오니까 솔직히 더 답답해 지시죠? 프롬프트 조차 아직 개념을 못잡겠는데 "구조화? XML? 심지어 JSON?? 이게 뭔 쌈싸먹을 소리야!" 라고 충~분히 이야기 하고도 남을 수 있습니다. 
내...당연히 Prompt는 고사하고 이제 막 AI 시작한 분들에게 어려울 수 밖에 없습니다. 근데 이런 어려운 Prompt를 JSON이나 XML로 쉽게 만들 수 있는 방법이 있습니다!
 흔히 중은 재머리를 못깍는다고 하죠? 근데 GPT 짱은 자기머리 깍을 수 있습니다.
정말 간단한.방법입니다. Copy & Paste만 할 줄 알면 누구나 할 수 있습니다!
우선, 윈도우 노트나 MS워드등 간단히 문장을 작성하고 북붙할 수 있는 도구를 하나 엽니다. 그리고 그 안에다 GPT한테 시켜야 할 일을 쫘~악 쓰세요, 그다음 그 문장을 전체를 복사해서 GPT로 가져다 복붙합니다. 그리고 원하는 형태 XML이던 JSON이던 하나 선택해서 그 언어로 복붙한 문장을 바꿔달라고 하면 GPT짱이 완벽하게 만들어 줍니다. 그리곤 그 만들어준 Prompt를 다시 GPT에게 입력하고 이번엔 실행시키면 끝!!! 간단하죠?
긴글 얽어주셔서 감사합니다만, 핵심 해결책은 바로 요기에 있었습니다 ㅎㅎㅎㅎ 그럼 즐거운 GPT생활 만끽하시길....


[참조 자료 출처]

  1. Prompt Engineering Guide (promptingguide.ai)
  2. 블로그: "프롬프트 엔지니어링의 모든 것" (m.blog.naver.com/gptfrontier)
  3. XML 및 JSON 데이터 구조 공식 문서 (w3.org/XMLjson.org)


모두가 즐겁게 사용하는 인공지능 세상을 기원합니다.

※ 본 아티클 주의사항
  본 아티클은 제작자의 창작물이며, 지적재산권에 의해 보호됩니다. 저작자의 허락 없이 다른 저작물에 도용하거나, 저작자 허락 없이 상업적인 목적에 이용하거나 유출하는 경우, 민형사상의 불이익과 처벌을 받게 되니 주의하시기 바랍니다.  만약, 다른 아티클에 일부 사용하고 싶으시면 출처를 밝히고 사용하시면 됩니다.