본문 바로가기

GPT 활용법

ChatGPT 사용할 때 꼭 알아야하는 배경지식!

DallE로 만든 GPT 로고

 

ChatGPT를 사용하기 전에 알아두면 좋은 것들은 무엇이 있을까?

 

예전에는 잘 모르는 지식, 원인 모를 에러를 구글링과 StackOverFlow를 통해 비슷한 문제점을 찾고 해결했었습니다. 요즘은 비슷한 문제에 대한 해결법을 바탕으로 문제를 해결하기 보다는 Chat GPT에 아예 직접 자신의 문제 코드를 입력하지 않나요? GPT는 질문들의 맥락에 따라 각자에게 적합한 대답을 해줍니다. 이것은 개발자 영역 뿐만 아니라 전혀 다른 질문의 패러다임을 제공해줍니다. 하지만 전제 조건이 있습니다. 질문을 꼭 잘해야 좋은 답이 나옵니다. 그러면 좋은 질문을 하기 위해 갖춰야할 기본적인 배경지식에 대해 설명하겠습니다.

 

 

What is LLM?

 

 

LLM이라는 언어와 Chat GPT의 의미에 대해서 먼저 알아보겠습니다. LLM (Large Language Model)은 방대한 양의 텍스트 데이터에 대해 훈련된 기계 학습 모델입니다. 이제 하나씩 알아보겠습니다. ‘방대한 양의 텍스트 데이터’ 는 인터넷에 있는 모든 텍스트를 뜻합니다. 이것을 훈련한 모델이라는 뜻이죠. 그러면 ‘훈련’이라는 단어를 해석해봅시다. 훈련의 정의는 ‘특정 목적을 달성하기 위해 어떤 활동을 반복하여 익히는 것’ 입니다. 특정 목적은 ‘우리의 질문에 적합한 대답’일 것이고 ‘어떤 활동을 반복하는 것’은 인간의 영역에서는 반복 행동을 통해 익숙하게 만드는 활동이지만 컴퓨터에게는 방대한 데이터를 수집한 후 데이터에 포함된 오류를 수정하고, 데이터를 특정 목적에 맞게 조정합니다. 이런 정제 과정 후 그것을 기계 학습 알고리즘에 입력합니다. 여기서 데이터에서 패턴을 찾고, 이 패턴을 사용하여 새로운 데이터를 생성하는 방법을 배웁니다.

 

 

What is Chat GPT?

그러면 Chat GPT는 무엇일까요? Chat + GPT의 합성어입니다. Chat은 채팅할 때 Chat이고 GPT는 Genertative pre - trained transformer의 줄임말로 미리 훈련된 생성 모델을 통해 답을 생성해주는 시스템입니다. 즉 사용자와 ‘Chat’을 위해 미리 방대한 데이터를 학습한 모델이라는 뜻입니다. 따라서 Chat GPT 3.5 를 사용하다가 가끔 2021년 9월까지 학습된 모델이라고 나오는 이유입니다. 21년 9월까지 인터넷에 있었던 방대한 데이터를 학습했다는 의미입니다. 만약 최신의 데이터까지 학습된 GPT를 사용하려면 유료버전인 GPT4를 구독하는 것도 하나의 방법입니다. OpenAI는 뭘까요? 이것은 챗 GPT를 제작한 회사의 이름입니다. 한마디로 ‘OpenAI라는 회사가 21년 9월까지 방대한 데이터를 정제하여 딥러닝을 통해 학습한 모델(LLM)을 Chat GPT라고 명칭하여 사용자에게 제공하고 있다. ‘ 라고 말할 수 있습니다.

 

마지막으로 프롬프트가 무엇일까요? 프롬프트는 ‘GPT에게 명령이나 지시를 내리는 명령값’ 입니다. 쉽게 말하면 Chat을 입력하는 부분이죠.

 

Garbage In, Garbage Out 

 

 

공학에는 매우 자주 쓰이는 말이 있습니다. ‘Garbage in, garbage out.’ 프롬프트에 엉뚱한 명령값을 내리면 당연히 결론도 내가 예상한 것과 다릅니다. Chat GPT를 사용하는 많은 사람들은 여기에 약간의 인간성을 투영하여 질문할 때가 있습니다. 인간은 서로 대화를 할때 많은 함축과 비유, 은유를 사용하지만 기계는 이것을 제대로 인식하지 못합니다.(Chat GPT는 맥락을 이해하지만 인간에 비해 많이 떨어집니다.) 따라서 저는 프롬프트에 입력을 할 때 최대한 육하원칙에 맞춰 질문하고 조건도 함수에 넣듯이 매우 명확하게 Chat GPT에 제공합니다. 그리고 기대하는 값도 명확한 변수명, 원칙을 요구하죠. 그래야 Chat GPT도 자신의 의도와 매우 비슷한 값을 제공합니다. 따라서 항상 ‘Garbage in, garbage out.’을 머리에 넣고 LLM 시스템을 하나의 코드로 이루어진 시스템이자 나의 코딩에 보조적 도구로 인식했으면 좋겠습니다.

 

 

브라우저 선택하기

 

일단 브라우저부터 선택해봅시다. Edge, Firefox, Safari등 모든 브라우저에서 Chat GPT를 사용할 수 있습니다. 하지만 영어를 모국어로 사용하지 않은 사람들에게는 ‘자동 번역’ 기능을 사용하면 해석하는 시간을 아낄 수 있습니다. 이때 구글의 크롬 브라우저를 사용하는 것을 추천드립니다. 자동 번역해 주는 확장 프로그램을 사용이 가능하기 때문에 더욱 쉽게 GPT를 사용할 수 있습니다.


GPT 사이트(https://chat.openai.com/ 혹은https://openai.com/gpt-4)에 접근합니다. 로그인은 구글 로그인만 가능하고 회원가입을 진행합니다.  계정이 GPT4 유료 구독이 안 되어있으면 자동으로 GPT3.5 모델을 사용하는 화면으로 이동합니다.

 

 

프롬프트 스크린

 

 

이 페이지에서 크게 3가지 부분을 볼 수 있습니다. 가장 왼쪽은 이전에 제가 GPT와 소통했던 것이 저장된 부분입니다. 그 위에서는 새로운 채팅이 있네요. 저는 개인적으로 각 토픽마다 하나의 채팅창을 만드는 것을 추천합니다. GPT는 맥락을 해석할 수 있기 때문에 질문하다가 색다른 주제로 질문을 던지면 원하는 대답을 얻지 못할 수도 있습니다. 예를들어 Swift 문법에 대해 질문하다가 Flutter 에러 코드 질문하면 GPT는 Swift로 대답할 확률이 높습니다. 따라서 하나의 토픽에는 거기에 연관된 질문을 만들고 다른 질문이면 New Chat 기능을 사용하실 바랍니다. 30일까지 저장되는점 알아두세요! 그리고 입력란을 프롬프트라고 불립니다. 이제부터 프롬프트라는 단어를 계속 사용할 예정이니 미리 숙지하실 바랍니다. 마지막으로 GPT 4는 잠겨있습니다. 24년 2월 기준으로 GPT 4는 유료 버전입니다. 매달 20달러 정도하니 필요하신 분들은 유료 버전 사용하시는 것도 추천드립니다.

 

자동 번역기 - 프롬프트 지니

Chat GPT를 사용할 때 도움이되는 보조 도구 프롬프트 지니를 소개하겠습니다. 프롬프트 지니는 프롬프트에 영어가 아닌 다양한 언어로 질문을하면 자동으로 영어로 번역합니다. 또한 GPT의 영어 답도 자동으로 외국어로 번역하여 사용자에게 알려줍니다. 그러면 프롬프트 지니를 어떻게 다운 받는지 알아보겠습니다. 크롬에 프롬프트 지니를 입력합니다. 여기서 두 번째 항목인 ‘프롬프트 지니:Chat GPT 자동 번역기’를 클릭합니다. 오른쪽 상단에 ‘Chrome에 추가’를 누릅니다. 네. 위쪽 상단에 프롬프트 지니가 확장 프로그램에 추가되었다고 보여집니다. GPT에 다시 들어가 새로 고침을 누릅니다.

 

 

Chat GPT에 돌아오셨나요? 프롬프트 아래 유령 아이콘을 클릭하면 왼쪽 사진과 같은 메뉴가 나옵니다. 여기서 ‘자동 번역' 토글을 켭니다. 그리고 언어 선택을 클릭하여 사용자가 사용할 언어가 선택되었는지 확인합니다. 그러면 일단 기초 세팅은 끝났습니다.

 

토큰에 대한 이해

Open AI의 수익 모델이 무엇일까요? 갑자기 뜬근없는 질문이긴 하지만 이것을 이해하면 토큰에 대한 개념, 추후 Chat GPT가 나갈 방향과 영어로 질문하는 것의 중요성을 알 수 있습니다. LLM 시스템을 사용하기 위해서는 엄청난 연산이 필요합니다. 방대한 데이터를 기반으로 질문과 연관된 단어를 찾고 문장을 만들기 위해서는 물리적으로 많은 GPU와 계산량을 기반으로하죠. 하지만 많은 비용이 들지만 GPT를 무료로 사용자들에게 제공합니다. 하지만 무료이고 엄청나게 많은 유저가 Chat GPT를 사용하게 되면 연산에 과부화가 걸리고 서버가 다운되는 현상이 생길 수 있습니다. 가끔 무료 버전을 사용하다보면 GPT가 느려지는 이유이기도 하죠. 따라서 Chat GPT는 각 계정마다 할당된 토큰을 제공합니다. 이 토큰은 발언권을 양으로 측정한 것입니다. 예를 들어 ‘4000토큰을 주면 4000자까지 질문을 받을거고 답도 4000토큰 안에서 할거야.’ 라는 뜻입니다. 그래야 한정된 서버 용량 안에서 많은 유저가 사용할 수 있기 때문이죠. 그러면 왜 영어로 질문해야할까요? 영어는 1글자당 1토큰을 제공한다면 다른 언어는 1글자당 4토큰을 소비합니다. 즉 영어가 아닌 다른 언어로 질문하면 짧은 질문이지만 많은 토큰을 사용하게 됩니다. 따라서 자동 번역 시스템을 사용하여 영어로 번역하여 질문하는 것이 중요합니다.

 

 

 

이제 토큰에 대한 개념을 알았으면 Open AI가 나가는 방향을 알 수 있습니다. GPT를 무료로 제공하는 대신 다른 서드파티에게는 토큰 당 값을 지불 받는 것을 목표로 하고 있습니다. API 사용 댓가를 토큰 량으로 측정한다는 의미이죠. 따라서 LLM 시스템을 이용한 서비스를 제공하려는 개발자들은 꼭 영어 및 다른 외국어의 토큰 비중을 알고 있는 것을 추천드립니다.

 

그러면 아까전에 왜 크롬 브라우저와 프롬프트 지니를 사용해야하는지 이해가 되셨나요? Chat GPT가 느려지는 현상, 토큰 제한이 불편한 사용자는 유료 구독 버전을 사용해보는 것을 추천드립니다. 무료 버전이 느끼는 불편함을 모두 해소할 수 있는 방법입니다.(저도 23년부터 GPT4를 구독중입니다.)

 

간단한 GPT 문법

 

 

 

Chat GPT 프롬프트에 필요한 간단한 문법을 알아보겠습니다. 개발 언어의 문법이 아니라 질문을 할 때 어떤 부분을 강조할 지, 코드 스니펫은 어떻게 입력할지에 대한 문법입니다. 크게 5가지가 있습니다. 왼쪽부터 살펴보겠습니다. 코드 스니펫은 말대로 프롬프트에 코드를 감싸는 표현법입니다. 코드와 질문을 Chat GPT는 잘 구분할 수 없습니다. 따라서 이 표현법을 통해서 ‘이 부분이 코드이다.’를 알려주는 것이죠. 바로 옆에는 에러 메세지를 감싸는 부분입니다. 주의할 점은 코드 스니펫과 모양이 다르다는 점입니다. 에러 메세지는 작은 따옴표이고 코드 스니펫은 맥북 기준으로 1 왼쪽에 있는 Shift 키와 돈 표시를 같이 누른 키입니다. 꼭 구별해서 사용하시길 바랍니다. 줄 바꿈은 Chat GPT보다 사용자가 프롬프트에 입력할 때 더 깔끔히 입력하기 위해 자주 사용합니다. 모든 질문을 작성하면 엔터키를 누르시면 되고 강조 표시는 질문에서 강조되는 부분에 사용합니다. 개인적으로는 잘 사용하지는 않지만 알아두면 좋은 문법입니다. 그럼 예시 코드를 보겠습니다.

 

GPT 문법을 활용한 간단한 예시

 

 

코드를 해석할 필요는 없습니다. 프롬프트에 입력할 때 Chat GPT가 인식할 코드를 코드 스니펫을 써서 입력하고 질문과 간격을 두기 위해 ‘shift+enter’를 통해 줄바꿈을 했습니다. 그리고 에러 코드 부분은 큰 따옴표 혹은 작은 따옴표로 구성하였습니다. 크게 ‘코드’, ‘에러’, ‘질문’ 이렇게 3개를 구별해서 Chat GPT에게 알려주고 있습니다.

 

 

다음 예시입니다. 여러가지 코드, 예를 들어 2개의 클래스를 GPT에 입력할 때 각 클래스 마다 코드 스니펫을 각각 묶어줘야합니다. 그래야 다른 코드라는 것을 GPT가 잘 인식합니다. 하나의 스니펫 안에 여러가지 다른 목적의 코드를 넣지 말아야하는 점 꼭 명심하시길 바랍니다.

 

 

 

정리

1. 2개의 클래스를 GPT에 입력할 때 각 클래스 마다 코드 스니펫을 각각 묶어주기.
2. 코드는 코드 스니펫 사용하고 에러 코드 부분은 큰 따옴표 혹은 작은 따옴표로 감싸기.
3. ChatGPT 문법: 코드 스니펫, 에러, 줄바꿈, 엔터(명령), 강조
4. 프롬프트 지니를 사용하여 영어로 질문하기.
5. 브라우저는 크롬 브라우저 추천!