Chat Gpt 프롬프트로 작성된 내용은 2023년 07월 24일 Chat GPT3.5를 통해 작성하였습니다.
GPT의 놀라움
대형 언어 모델(LLM)은 컴퓨터가 할 수 있는 일을 놀라울 정도로 변화시키고 있다.
나는 올해 많은 시간을 GREG 및 다른 사람들과 함께 가장 강력한 LLM 중 하나인 GPT를 기반으로 세계 최초의 AI 언어 파트너인 MemBot을 만드는 데 보냈다.
MemBot은 수십 개의 언어로 모든 주제에 대해 완전히 인간과 같은 대화를 실시간으로 나눌 수 있다.
심지어 문법을 개선하는 방법에 대한 조언도 제공할 수 있다.
이처럼 인간과 같은 대화는 여러 분야에서 판도를 바꿀 수 있다.
LLM을 프로그래밍하는 분야는 매우 새롭고 아직 잘 이해되지 않은 분야이다.
모델이 인간의 뇌처럼 작동하고 기존의 컴퓨터처럼 작동하지 않기 때문에 "일반적인" 프로그래밍과는 매우 다르다.
이 글에서는 그동안 많은 시행착오를 겪으면서 얻은 몇 가지 교훈을 공유하고자 하며, LLM을 기반으로 구축하고자 하는 다른 사람들에게 도움이 될 수 있는 몇 가지 팁을 공유하고자 한다.
먼저, GPT가 무엇인지에 대한 정신적 모델을 갖는 것이 좋다.
간단히 설명하자면, 대규모 예측 엔진이다.
인터넷에 있는 거의 모든 텍스트, 즉 수조 페이지에 달하는 텍스트를 학습했다.
"이 텍스트가 먼저 나오면 다음에 어떤 단어가 나올까?"를 예측하도록 훈련되어 있다.
GPT에 코드가 아닌 일반 영어로 작성된 프롬프트를 입력하면 프롬프트 다음에 쓰여져야 할 단어에 대한 예측을 출력한다.
프롬프트는 말 그대로 일반 자연어로 작성된 요청으로, 원하는 작업을 요청하는 것이다.
예를 들어 "이야기 써줘"라고 프롬프트하면 이야기를 쓰며, 매번 스토리가 다르다.
원칙 1: 지침을 매우 구체적으로 작성하라
다음은 내 질문에 대한 대답이다.
그다지 흥미진진한 이야기는 아니지만... 사에게 "이야기를 써보라"라고 하면 반드시 좋은 결과가 나올 것이라고 기대할 수는 없다.
그렇다면 흥미로운 스토리를 작성하도록 요청하면 좀 더 나은 결과를 얻을 수 있는지 살펴보겠다:
적어도 주제에 있어서는 조금 더 흥미진진하다.
구체적이면 GPT의 성능이 조금 더 좋아지기는 하지만, 이 특별한 경우에는 여전히 만족스러운 내용을 쓰지 못했다.
이 문제를 개선하기 위해 학생에게 이야기를 쓰도록 가르치는 방법을 생각해 보자.
아마도 학생들에게 시작, 중간, 끝으로 나누어 글을 쓰도록 요청할 것이다.
원칙 2: GPT에게 작업을 작은 덩어리로 나누라고 요청한다.
그런 다음 이 모든 것을 프롬프트로 사용하여 스토리의 핵심을 작성하도록 요청한다
(프롬프트는 흰색으로, GPT의 응답은 녹색으로 표시됨):
보시다시피, 주제를 계속 이어가면서 자세히 설명한다.
여기서는 언어가 약간 투박하지만 나중에 다른 방법으로 수정할 수 있다.
그런 다음 이 모든 것을 바탕으로 설득력 있는 클라이맥스를 작성하도록 요청할 수 있다:
이 이야기의 끝을 보지 못했지만... 이 모든 이야기가 컴퓨터로 몇 초 만에 생성되었다는 것은 정말 놀랍다.
몇 년 전만 해도 상상도 못 했을 일이다.
그리고 이 두 번째 초안은 작업을 세분화하고 단계별로 해결하도록 하는 것만으로도 이미 첫 번째 스토리보다 훨씬 더 나아졌다.
이렇게 하면 인간과 마찬가지로 더 나은 결과를 얻을 수 있다.
이 두 가지 교훈을 모두 적용하면 훨씬 더 스토리에 가까운 결과물을 얻을 수 있지만, 아직 출판 가능한 소설에는 훨씬 못 미친다.
그렇다면 이제 어떻게 해야 할까?
인간 학생에게 시험지를 제출하기 전에 확인하라고 조언하는 것처럼, GPT에게도 자신의 작업을 확인하도록 요청하면 훨씬 더 나은 결과를 얻을 수 있다.
예를 들어, 나는 GPT가 단편 소설을 쓰도록 하는 작업을 해왔다.
이를 위해 2번 원칙에 따라 먼저 이야기 속 등장인물을 정의하도록 요청했다.
먼저 캐릭터에 대한 설명을 작성하도록 요청했다:
꽤 인상적이다.
하지만 실제로는 GPT에게 스토리를 작성하도록 요청하는 입력으로 그다지 유용하지 않다.
실제로 구체적인 입력으로 유용하지 않은 정보가 너무 많다.
이런 종류의 설명을 스토리 작성의 프롬프트로 사용했을 때 "매우 체계적이고 효율적"이라는 부분이 우선순위가 되어 기괴할 정도로 흥미롭지 않은 플롯으로 이어지는 등 흥미로운 스토리로 이어지지 않았다.
GPT가 원칙 1을 따르도록 하고 좀 더 구체화할 필요가 있다.
이 스토리에서는 캐릭터가 약간 엉뚱해야 한다고 가정해 보자. 이것도 프롬프트에 넣을 수 있다:
시끄럽고 뻔뻔한 성격은 좋은 플롯으로 이어지지 않는 것 같았어요. 그럼 GPT가 이를 확인하고 개선하도록 할 수 있는지 살펴보자.
GPT가 자신의 출력을 확인하고 개선하도록 요청하라
이를 위해 "좋은" 프롬프트가 무엇인지 정의하고 이전 출력을 확인하여 "좋은" 프롬프트인지 확인하도록 요청하는 새 프롬프트를 설정할 수 있다.
GPT가 판단을 단계별로 세분화하여 판단을 내리기 전에 양쪽 모두에 대해 논증하도록 하는 구조를 사용했음을 알 수 있다.
이렇게 하면 훨씬 더 정확하고 일관된 판단을 내릴 수 있다.
그런 다음 위의 캐릭터 설명을 입력하고 좋은지 판단하고 그렇지 않은 경우 개선하도록 요청했다:
보시다시피, 설명을 조정하여 그의 성격을 "거칠고 엉뚱한"으로 변경했다.
이것이 실제로 더 나은 스토리로 이어지든 아니든, GPT가 우리가 준 규칙에 따라 판단하고 개선하고 있다는 것을 알 수 있다.
이 기술은 올바른 명령을 입력하여 진정으로 좋은 결과물이 나올 수 있도록 하는 것이 핵심이다.
중요한 점은 우리가 정의한 규칙에 따라 GPT가 스스로 반복하여 더 나은 결과물을 만들 수 있다는 것이다.
GPT를 프로그래밍하는 데는 인간 학생들을 가르치는 방식에서 '많은 부분'을 차용해야 한다.
여러 가지 면에서 기존 프로그래밍보다 훨씬 더 가르치는 것과 비슷하다.
기타
https://www.linkedin.com/pulse/3-principles-prompt-engineering-gpt-3-ben-whately/
'Technology > AI' 카테고리의 다른 글
EA 와 E/ACC의 네러티브 줄다리기 게임 (1) | 2023.11.29 |
---|---|
AI가 어떤 비즈니스도 힘을 실어줄 수 있다. - Andrew Ng (0) | 2023.08.08 |
AI 혁명 - 초인공지능(ASI)로 가는길 (1) (0) | 2023.07.30 |
LLM을 위한 프롬프트 엔지니어링 소개 (A Complete Introduction to Prompt Engineering For Large Language Models) (0) | 2023.07.26 |
2023 AI 인덱스 보고서 - Stanford University (0) | 2023.07.24 |