검색
검색
회원가입로그인

ChatGPT 프롬프트 가이드 - 지시+문맥+(출력)

프롬프트는 하나의 프로그램과 같습니다. 프롬프트 엔지니어링이란 용어가 생길 정도로 프롬프트가 많은 역할을 할 수 있다는 사실이 알려지고 있습니다. 잘 만든 프롬프트가 프로그램과 비슷한 일들을 수행할 수 있습니다.

그렇다면 프롬프트를 어떻게 하면 잘 쓸 수 있을까요? 물론 ChatGPT를 쓰는데 옳은 방법이나 틀린 방법은 없습니다. 각자의 상황에 맞게 사용하는게 가장 좋습니다. 그럼에도 불구하고 다음과 같은 형식을 사용하면 효과적으로 사용할 수 있습니다. 저는 이 형식을 프롬프트의 80% 이상에 사용합니다.

지시 + 문맥

  1. 지시 (Instruction)

  2. 문맥 (Context)

먼저 지시 부분은 ChatGPT에게 무언가를 해달라고 '요청'하는 부분입니다. 지시를 맨 앞에 놓은 이유는 LLM이 추론 범위를 초기부터 좁혀서 더 정확한 결과를 도출할 수 있게 하기 위해서입니다.

문맥 부분은 내가 ChatGPT에게 제공하기를 원하는 '데이터'입니다. ChatGPT의 기본 원리는 이어 말하기 입니다. 그렇기 때문에 나의 상황에 적합한 데이터를 제공하면 임베딩 공간에서 적절한 위치를 찾아가 대답을 더 잘할 수 있습니다.

문맥에 관련 정보나 코드 등을 맥락으로 제공하면 좋습니다. 관련 데이터가 없다면 지금 내가 처해있는 상황을 설명하는 것도 좋습니다. (예: "지금 javascript 코딩을 하고 있어" 또는 "카피라이팅 문구를 쓰고 있어" 등)

이 "지시 + 문맥"의 형태는 가장 많이 쓰이는 형태 중 하나일 것입니다.

번역을 예로 들어 지시 + 문맥의 간단한 프롬프트를 만들어 보겠습니다.

Prompt

다음 텍스트를 번역해줘.

"""
An economy is an area of the production, distribution and trade, as well as consumption of goods and services. In general, it is defined as a social domain that emphasize the practices, discourses, and material expressions associated with the production, use, and management of scarce resources.
"""

ChatGPT

경제는 생산, 분배, 거래 그리고 상품과 서비스의 소비 영역입니다. 일반적으로, 이는 희소한 자원의 생산, 사용, 관리와 관련된 실천, 담론, 물질적 표현을 강조하는 사회적 영역으로 정의됩니다.

"다음 텍스트를 번역해줘." 라는 간단한 지시문과 번역할 텍스트를 문맥으로 제공했습니다.

구분자

""" 표시가 보이시나요? 이 표시는 제공된 문맥을 잘 구분하기 위한 구분자 표시입니다.

그 밖에 문맥을 잘 구분할 수 있으면 다양한 구분자(delimiter)를 사용할 수 있습니다.

예를 들어 ```(delimited by triple backticks, ` 는 bactick으로 esc 키 밑에 있는 키), """ (delimited by triple quotes), < >, <tag> </tag> 와 같은 기호를 사용할 수 있습니다.

예시

다음 텍스트를 번역해줘

"""
내 텍스트
"""

또는

Translate the text delimited by triple quotes.

"""text
내 텍스트
"""

이렇게 구분자로 문맥 부분을 구분하면 ChatGPT가 더 잘 인식할 수 있습니다.

delimited by triple backticks 나 delimited by triple quotes 와 같은 영어 표현은 OpenAI의 cookbook의 예시에서도 많이 사용하는 문구이므로 외워두시면 좋습니다.

만약 문맥 (context)을 앞부분에 제공하는 경우에는 마지막 줄에 질문을 구분해서 표시하면 됩니다. 저는 Q : 의 형태를 많이 사용합니다.

"""
< 텍스트>
"""
Q: 위의 텍스트를 번역해줘.

이렇게 지시문과 데이터의 결합으로 원하는 결과를 좀 더 효과적으로 얻을 수 있습니다.

실습

다음 텍스트를 ChatGPT에 붙여 넣어서 번역 기능을 사용해 보세요.

다음 텍스트를 번역해줘.

"""
ChatGPT (Chat Generative Pre-Trained Transformer) is an artificial intelligence chatbot developed by OpenAI and launched on November 30, 2022. It is notable for enabling users to refine and steer a conversation towards a desired length, format, style, level of detail, and language used. Successive prompts and replies are taken into account at each stage of the conversation as a context. While its content spans various domains of knowledge, ChatGPT has displayed a tendency to confidently provide inaccurate information.
"""

출력 양식 지정 (Output)

지시 + 문맥 다음에 하나를 더 지정할 수 있다면 무엇일까요? 바로 출력 양식(Output format)입니다. instruction + context + output 양식 지정의 형태로 사용하면 좀 더 일관성 있는 방법으로 결과를 얻고 활용할 수 있습니다. 다음과 같은 형태들이 자주 사용되는 표현입니다.

  • 글머리 기호로 표시 (in bullet points) : 제가 자주 사용하는 양식입니다. 불렛포인트로 표시하면 내용을 간결하게 숫자가 없는 리스트로 표시해 줍니다. 이렇게 하면 내용을 나눠서 보기 쉽게 정리할 수 있습니다.

    예) 다음 내용을 글머리 기호(불렛 포인트/불릿포인트)로 요약해줘.

  • 간결하게 또는 짧게 알려줘. (be concise / concise + 명사) : ChatGPT는 처음 훈련될 때 길게 말한 대답에 좋은 평점을 받은 경향이 있기 때문에 길게 말하려는 경향이 있습니다. 그래서 concise 를 사용하면 간결한 대답을 빠르게 받을 수 있습니다. (API의 경우 토큰 절약) 다음과 같은 예시가 있습니다.

    예) 돈 버는 방법을 간결하게 알려줘. (Tell me how to make money. Be concise.)
    짧게 요약해줘. (write a concise summary.)

  • 커스텀 출력 양식 지정. 내가 원하는 양식을 만들어서 지정해 주는 경우입니다. 예를 들어 상품 설명에서 상품명, 가격, 간단한 한줄 소개의 형식으로 만들려면 다음과 같이 하면 됩니다.

프롬프트

다음 텍스트를 아래와 출력 양식으로 정리해줘.

"""
LEN 렌
침대캐노피, 화이트

₩14,900기존가 ₩ 14900
₩9,900가격 ₩ 9900
2023.06.01 - 2023.07.04 재고 소진 시까지

안전한 높이의 침대 캐노피는 아기 침대를 아늑한 공간으로 바꾸어줍니다. 조립이 쉽고 패브릭이 걸려 있지 않으며 재활용된 폴리에스테르로 제작되어 환경에도 좋습니다.
"""

출력 양식
상품명 :
가격 :
간단한 한줄 소개 :

출력 양식 부분이 보이시죠? 이렇게 하면 ChatGPT가 내가 지정한 양식대로 텍스트를 발췌해서 작성합니다.

ChatGPT

여기 요청하신 텍스트를 출력 양식에 맞게 정리한 결과입니다:

상품명: LEN 렌 침대캐노피, 화이트

가격: ₩9,900 (기존가 ₩14,900)

한줄 소개: 안전한 높이의 침대 캐노피는 아기 침대를 아늑한 공간으로 바꾸어줍니다. 조립이 쉽고 패브릭이 걸려 있지 않으며 재활용된 폴리에스테르로 제작되어 환경에도 좋습니다.

요청하신 텍스트의 상품명과 가격 정보를 올바른 출력 양식에 맞게 정리했습니다. 또한 한 줄 소개에는 해당 상품의 특징을 간략하게 설명하였습니다.
  • 테이블 : ChatGPT는 마크다운을 사용하기 때문에 표를 그릴 수 있습니다. 다음 예시를 살펴보세요.

    • 이름, 설명, 사진을 열로 가지는 테이블을 만들어줘. 이름은 과일로 채워주고 그에 맞는 설명과 사진을 채워줘.

    • Make me a table for columns name, description, picture. Fill out with fruits, explanation, and photo.

    • 2차 세계 대전의 주요사건을 테이블 형식으로 알려줘.

    • Present the main events of World War II in a table format.

  • JSON : JSON 형태로 출력한 후 이를 활용할 수 있습니다. JSON 형태로 출력한 후 후속 작업에서 해당 데이터를 사용하기도 합니다.

    • List of top cars in JSON format.

    • 최고의 차를 JSON 형식으로 알려줘

  • 리스트 : 리스트도 정말 많이 사용되는 형태입니다.

    • AI 도메인 이름 아이디어를 리스트로 알려줘.

    • Give me a list of AI domain name ideas.

  • CSV

    • write a customer list for cafe with csv form.

    • csv 형식으로 cafe의 고객 목록을 작성.

  • SVG

    • Draw a star in SVG

    • 별모양 SVG 그리기

  • 코드

    • write a python code for simple crawler.

    • 간단한 크롤러를 위한 파이썬 코드를 작성해줘.

이렇게 출력을 추가적으로 지정하면 얻은 결과를 효과적으로 사용할 수 있습니다.

이번 장에서는 지시 + 문맥 + 출력의 형식을 사용함으로써 ChatGPT의 성능을 극대화하는 방법을 알아봤습니다.

다음 장에서는 LLM에서 가장 많이 쓰이면서 유용한 기능인 요약에 대해 알아보겠습니다.

조회수 : 2092
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기