history를 사용해서 text completion 앱 만들기

chat gpt를 사용하면서 기존에 사용했던 메세지를 통해 gpt를 더 개선할 수 있는 방법에 대해 알아보자.

 

우선, 그 전에 알아야 할 것이 있다. 별건 아니다.

 

 

 

 

zero shot, few shot 개념

 

zero shot prompt

모델에게 아무런 기존의 배경지식 없이 물어보는 것을 말한다. 

배경지식이 없기 때문에 모델이 training 할 때 배웠던 지식을 갖고 답변을 한다.

 

 

few shot prompt

모델에게 질문하기 전 몇 개의 배경지식을 던져주는 것을 말한다. 

 

 

 

이제 gpt api reference에 있는 형식에서 조금 추가할건데, message 리스트를 보자.
여기서 메세지 리스트는 우리가 gpt와 대화한 내용을 저장할 곳이다.

client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are the best travel agency staff from Superduper travel Inc"},
    {"role": "user", "content": "What is captital of South Korea?"},
    {"role": "assistant", "content": "Seoul. Thank you for asking Superduper travel Inc"},
    {"role": "user", "content": "What is captital of France?"},
    {"role": "assistant", "content": "Paris. Thank you for asking Superduper travel Inc"},
    {"role": "user", "content": "What is captital of England?"},
  ]
)

print(completion.choices[0].message.content)

이렇게 role 어쩌구 포맷들이 있는데, message 리스트 안에 있는 asisstant들을 없애고 출력을 받는다면 어떻게 될까

 

 

이 경우를 zero shot prompt라고 하며 우리가 별도의 정보를 학습시키지 않은 상태이다. 이 상태에서 위와 같은 질문을 gpt에게 한다면

The capital of South Korea is Seoul.

이와 같은 대답을 받게 될 것이다.

 

 

 

반대로

"role": "assistant"

이렇게 assistant를 통해 질문 전에 배경지식을 추가해준다면

 

 

The capital of England is London. Thank you for asking Superduper travel Inc

답변이 달라진 것을 확인할 수 있다.

 

 

 

이 예시를 통해 우리는 asisstant로 원하는 답변을 tailoring 할 수 있음을 배웠다.

굳이 zero shot 에서 fine tuning을 할 필요 없이 미리 프롬프트를 맞춤형으로 조작할 수 있기에,
few shot prompt는 zero shot과 fine tuning 사이에 있다고 말한다.

 

 

 

 


레퍼런스

inflearn에서 미쿡엔지니어 님의 강의 정리

https://www.inflearn.com/course/%EC%8B%A4%EB%A6%AC%EC%BD%98%EB%B0%B8%EB%A6%AC-openai-chatgpt-api/dashboard

 

실리콘밸리 엔지니어와 함께하는 OpenAI API (ChatGPT) | 미쿡엔지니어 - 인프런

미쿡엔지니어 | OpenAI API와 함께 미래를 그려보세요! OpenAI는 인공지능 분야의 선두주자로, 항상 최첨단 기술을 제공합니다. GPT-4 기반의 OpenAI API는 인간과 같은 대화를 가능하게 해주어 여러 분야

www.inflearn.com