G대넓얕 - GPT와 대화하기 위한 넓고 얕은 지식

안녕하세요! 지피터스 여러분, 곽은철입니다.

스터디 시작 전 GPT 활용에 관한 기본 지식 몇 가지를 공유하고자 합니다. 아래 내용들은 간략한 키워드 위주로 작성되어 있기 때문에 궁금한 부분이나 더 자세한 설명이 필요한 경우 언제든지 댓글 남겨 주세요.


ChatGPT, 바드, 빙챗 등 생성형 AI에 대해서 앞으로 우리가 이야기하기 위해 알고 있으면 좋은 키워드를 짧게 설명하겠습니다.

  • 프롬프트: AI에게 특정 작업을 지시하기 위한 문장입니다. 예컨대 "오늘의 날씨는?" 같은 질문을 통해 AI에게 오늘의 날씨 정보를 요청하는 것입니다.

  • 토큰: 토큰은 텍스트 데이터를 분석하고 처리하기 위해 나누어진 최소 단위입니다. 예를 들어 문장을 단어나 기호로 분리하는 과정에서 각 단어와 기호를 토큰이라고 부릅니다.

  • 할루시네이션: 할루시네이션은 생성형 AI가 현실과 다르거나 데이터에 기반하지 않은 정보를 생성하는 현상입니다. 이는 모델이 훈련 데이터에 없는 상황을 추론하려 할 때 발생할 수 있으며 오해나 잘못된 정보를 일으킬 수 있습니다.

  • 프롬프트 엔지니어링: 프롬프트 엔지니어링은 생성형 AI 모델과 상호 작용하는 방법을 최적화하는 과정입니다. 이는 특정 질문이나 명령을 모델에 제시하여 원하는 응답이나 결과를 얻기 위한 방법을 개발하고 조정하는 것을 포함합니다. 프롬프트의 설계, 선택, 순서 및 정밀화를 통해 모델의 성능을 향상시키고 특정 작업이나 목적에 맞게 응답을 정제할 수 있습니다. 프롬프트 엔지니어링은 모델을 더 효과적이고 유용하게 만드는 데 중요한 역할을 합니다.


우리가 이야기할 주제중에서 프롬프트 엔지니어링은 빠질 수 없는 주제입니다. 그렇다면 좋은 프롬프트란 무엇일까요?

ChatGPT는 6가지 요소로 좋은 프롬프트를 정의했습니다.

생성형 AI의 프롬프트 엔지니어링에서 좋은 프롬프트란 다음과 같은 특징을 가집니다:

1. 명확성: 프롬프트는 명확하고 구체적이어야 하며, 모델이 원하는 응답을 생성할 수 있도록 충분한 지침을 제공해야 합니다.
2. 일관성: 좋은 프롬프트는 일관된 형식과 구조를 가져야 하며, 다양한 입력에 대해 일관된 출력을 생성해야 합니다.
3. 적절한 복잡성: 너무 간단하거나 복잡하지 않아야 하며, 특정 작업이나 목적에 맞게 설계되어야 합니다.
4. 편향 최소화: 프롬프트는 편향을 최소화하며, 모델이 중립적이고 공정한 응답을 생성하도록 도와야 합니다.
5. 가독성: 사용자가 이해하기 쉽고 자연스러운 언어로 작성되어야 합니다.
6. 유연성: 좋은 프롬프트는 다양한 상황과 문맥에서도 작동할 수 있어야 하며, 필요에 따라 쉽게 수정하거나 확장할 수 있어야 합니다.

좋은 프롬프트의 설계는 모델의 성능을 크게 향상시킬 수 있으며, 특정 작업에 맞게 응답을 더 정확하고 유용하게 만드는 데 중요한 역할을 합니다.

좋은 프롬프트에 대해서는 알겠는데 그렇다면 어떻게 해야 좋은 프롬프트를 작성할 수 있을까요?

같은 질문에 답하기 위해 여러 논문이 나왔고 그 중 효과적이고 대표적인 몇 가지 작성법을 소개하겠습니다.

  • Role Prompting

    언어 모델에게 특정한 역할을 부여하며 질의하는 방식입니다. 이렇게 특정 역할을 부여하면 언어 모델은 해당 역할에 맞는 답변을 제공하는 데 더욱 효과적입니다. 예를 들면, 사용자가 모델에게 "당신은 셰익스피어의 고문학자다. 그의 작품에 대해 설명해 주세요."라고 요청하면, 언어 모델은 셰익스피어의 작품에 대해 전문가처럼 상세하게 설명하려고 노력합니다.

  • Few-Shot Prompting

    언어 모델에게 몇 가지 예시(샘플)를 제공하여 원하는 태스크를 수행하도록 유도하는 방식입니다. 이 방식은 특히 언어 모델이 처음 본 태스크나 어려운 태스크에 대해 직관적인 이해를 도와줍니다. 예를 들어, 번역 작업을 요청할 때 "영어: cat, 한국어: 고양이"와 같은 몇 가지 예시를 제공하면 모델은 해당 패턴을 이해하고 비슷한 방식으로 번역을 시도합니다.

  • Chain of Thought Prompting(CoT)

    CoT는 언어 모델에게 생각의 단계를 제공하여 복잡한 추론 능력을 향상시키려는 접근법입니다. 특히 학습 데이터가 큰 모델에서 더욱 높은 성능 향상을 보인다고 합니다.
    일반적으로 질문했을때 잘못된 결과가 나오는 예시 :

    CoT를 간단하게 활용해본 예시:

  • Zero-Shot Chain of Thought Prompting(ZoT)

    CoT의 파생 형태로 “Let's think step by step” 질문의 마지막에 넣게 되면 언어 모델은 질문에 대한 사고 사슬을 생성하게 되고 이 사고 사슬을 이용해 더 정확한 답변을 추출해낼 수 있게 됩니다.

    예시 :

  • Tree of Thoughts Prompting(ToT)

    Tree-of-Thought Prompting (ToT)는 복잡한 문제를 해결하는 데에 도움을 주기 위해 언어 모델에게 여러 단계의 대화를 거치는 방식입니다. 이 방식은 인간이 복잡한 추론 작업을 시행착오를 통해 해결하는 방식과 유사합니다. 복잡하고 해결하기 어려운 문제는 한 가지 해답으로는 해결하기 어려우므로 문제를 해결할 다양한 시각을 요청하고 그 과정에서 가장 만족스러운 답변을 트리 형태로 따라가며 최선의 답을 찾아가는 방식입니다.

    예시 그림 :

이 방식의 예시는 방대하기 때문에 이전 5기 스터디에서 lemy0715님께서 발표한 gpt로 사천성 게임 만들기를 소개해 드리겠습니다.


프롬프트를 잘 쓰는것 만으로도 좋은 결과를 얻을수 있지만 ChatGPT의 추가 기능을 사용하시면 좀더 쉽고 편하게 좋은 결과를 얻으실수 있습니다.

  • Custom instructions (무료/유료)

    Custom instructions은 ChatGPT를 사용할 때 모델에 특정 방식으로 행동하도록 지시할 수 있는 기능을 말합니다. 예를 들어, 사용자가 일반적인 질문을 했을 때 일반적인 답변을 하지만, 특정한 지침을 제공하면 모델은 그 지침에 따라 다른 방식으로 응답할 수 있습니다.

    일반적인 예시 :

    Custom instructions 예시 :

    지피터스 스터디에 Custom instructions을 잘 활용하신 사례가 매우 많으니 찾아보시는것을 추천드립니다.
    예시 : 나춘배님의 Custom instruction로 ChatGPT를 GPT-5로 만들기

  • Code Interpreter(유료)

    Code Interpreter는 유료버전의 4.0에서만 동작하며 파이썬 코드만 실행시킬 수 있습니다.

    하나의 프롬프트로 한개의 파일만 입력받을수있고 입력받은 파일을 이용해 분석하거나, 특정 내용을 추출한다거나, 혹은 입력파일없이 코드를 실행시켜 결과물을 얻을수 있습니다.

    너무 잘 활용하신 예시가 있어 링크로 예시를 대신합니다.

  • Plugins(유료)

    플러그인(Plugin)은 ChatGPT의 확장 도구로, 언어 모델에 다양한 기능을 추가할 수 있게 해줍니다. 예를 들어, 사용자가 최신 정보나 계산을 요청했을 때 기본 모델만으로는 제한된 답변을 할 수 있지만, 플러그인을 통해 외부 서비스와 연동하거나 실시간 데이터를 검색하는 등의 다양한 작업을 수행하여 사용자에게 더욱 풍부한 정보를 제공할 수 있습니다.

    플러그인은 수많은 플러그인이 이미 있으니 지피터스 내부에 좋은 사례들을 바탕으로 실험해 보시는것을 적극 추천드립니다.


지금까지 간단한 키워드 위주로 넓고 얕게 알아봤습니다. 어쩌면 이런 지식이 없어도 이미 잘 활용하고 계신 분들도 많을 것이라 생각합니다. 하지만 아는만큼 더 잘쓸수 있는게 도구라고 생각합니다. 만약 모르는게 있으셨다면 도움이 되어 다행이고 모두 알고 계셨다면 한번더 정리하는 시간이셨길 바랍니다. 감사합니다!

19
6개의 답글


👀 지피터스 AI스터디 13기 둘러보기