안녕하세요 유저인사이트 박준호 선임입니다.
저는 이번에 많이 언급되는 ChatGPT에 대해 간략히 알아보고 실습해 보았습니다.
ChatGPT 선정 이유
이번 세미나의 주제로 ChatGPT를 선정한 데에는 단순히 신기하고 재미있겠다는 이유뿐만 아니라, ChatGPT를 잘 사용하면 도움을 받을 수도 있고 언젠가는 개발자가 인공지능에 밀리는 날이 올 수도 있겠다는 생각을 했기 때문입니다.
그리고 https://openai.com/api/ 에서 ChatGPT를 개발하는데 이용한 GPT-3, GPT-3.5를 간접적으로 이용할 수 있는 api를 제공중 이어서 개발에 이용할 수 있을 것 같습니다. 추후에는 ChatGPT의 api도 제공될 예정이라고 합니다.
추가로 현재 Github에 Copilot 이라는 자동 코드 완성 인공지능이 있는데, 해당 인공지능도 GPT-3을 이용하여 만들어졌다고 합니다. 해당 인공지능을 이용하여 코딩하는데 도움을 받을 수 있는데 아직은 많이 부족하다고 합니다.
해당 인공지능과 관련한 여러 가지 내용이 있지만, 이번 주제와는 맞지 않는 내용이니 궁금하시면 한번 찾아보시는 것도 좋다고 생각합니다.
https://github.com/features/copilot/
ChatGPT?
ChatGPT는 OpenAI가 개발한 GPT-3.5를 기반으로 한 챗봇입니다.
여기서 GPT-3.5가 무엇인지 궁금하실 텐데 저도 궁금해서 당사자에게 직접 물어봤습니다.
2021년 10월 이후의 정보는 얻어 올 수 없는데 GPT-3.5는 ChatGPT를 위한 대화형 모델로 2022년 11월에 출시되어 모르는 것 같습니다.
간략하게 설명하자면 일단 언어 모델에는 통계학적 모델과 인공신경망적 모델이 있는데 GPT-3은 인공신경망적 모델이고, 이보다 더 나아간 언어 예측 모델입니다.
GPT-3?
GPT-3의 언어 예측 모델을 간략하게 설명하고 넘어가겠습니다.
모델에 방대한 양의 텍스트를 훈련 시킵니다. 그러면 모델은 텍스트 일부의 이후를 예측하고 해당 텍스트를 이어갑니다. 만약 예측이 틀렸다면 해당 내용을 자율학습하여 정확도를 높입니다.
이러한 방식으로 만들어진 GPT-3을 대화가 가능하도록 발전시킨 모델이 GPT-3.5입니다.
ChatGPT 시작하기
https://openai.com/blog/chatgpt/ 에서 하단의 버튼을 누르고 계정생성 또는 로그인 후에 시작하면 됩니다.
ChatGPT 실습
ChatGPT를 직접 사용해 보기에 앞서 ChatGPT에는 여러 가지 특징이 있습니다.
- 대화형이기 때문에 전에 이야기했던 내용과 연관 지어 다음 대답을 한다.
- 틀린 부분은 정정할 수 있다.
- 학습시킬 수 있다.
...
다른 특징들도 있지만, 위의 3가지 특징들을 기준으로 직접 실습해봤습니다.
1. Multi Tenancy 환경에 Remember-Me를 적용하는 방법을 알려줘.
제가 작성한 글 중 Multi Tenancy 환경에 Remember-Me 적용하기 글이 있습니다.
해당 작업을 할 때 관련된 글도 거의 없고, 저와 같은 문제를 겪은 내용도 찾을 수가 없어서 Remember-Me 구조를 파악하며 직접 오버라이딩 하며 코딩을 했었습니다.
ChatGPT가 조금만 더 일찍 나왔다면 정말 많은 도움이 되었을 텐데 정말 아쉽다고 생각했습니다.
2. React에 MobX나 Redux를 사용하면 Prop Drilling이 줄어드는 이유가 뭐야?
세미나에 나왔던 주제인 부분에서 궁금했지만 해소되지 않았던 부분을 물어봤습니다.
단순히 요약해 줘라고 했지만, 위의 내용을 요약해서 잘 알려주는 모습입니다.
3. QueryDSL에서 객체를 업데이트하고 업데이트된 객체를 리턴하는 방법이 뭐야?
QueryDSL에서 update() - execute()를 하면 return 타입이 long인데, 방금 업데이트한 객체를 그대로 가져오는 방법이 궁금했었습니다. 지금은 필요 없어진 내용이지만 궁금해서 물어봤습니다.
저희는 EntityManager를 쓰지 않아서 정정 요청을 했습니다.
JPAQueryFactory도 쓰지 않아서 정정 요청을 했습니다.
해당 대답에서 저는 충분한 대답을 얻었습니다. 실제로 해당 대답을 토대로 코딩해본 결과 제가 원하는 결과를 얻을 수 있었습니다.
제가 원하는 대답이 나오지 않아 여러 번 대답 수정 요청을 했는데 잘 반응하는 모습입니다.
하지만 여기서 업데이트될 행이 하나일 때는 어떻게 해야 할지 궁금해 한 번 더 물어봤습니다.
ChatGPT가 executeWithResult()라는 메서드를 사용했는데 실제로는 존재하지 않는 메서드였습니다.
해당 내용을 고민할 때 여러 가지 존재하는 메서드들을 알아봤는데 해당 메서드가 존재하지 않다는 것을 알고 있었는데, ChatGPT가 있다고 하니 "엥? 이런 게 있었어?" 하며 다시 찾아보긴 했습니다.
ChatGPT도 거짓말을 하긴 하나 봅니다.
후기
위에 물어본 내용 말고도 ChatGPT에게 여러 가지를 많이 물어봤었습니다.
JavaScript로 canvas에 그림 그리는 방법, OpenLayers로 위경도 좌표 사이의 거리 구하는 법 등 개발과 관련된 내용을 많이 물어봤는데 구글링 할 때보다 정보를 빠르게 얻을 수 있었고 대답을 제가 원하는 방향으로 수정할 수도 있었습니다.
하지만 종종 이상한 대답을 할 때도 있었고 특히 사용되지 않고 있는 메서드를 예시로 보여줄 때도 있었습니다.
ChatGPT를 사용하는 건 굉장히 편리하고 좋지만 맹신하고 사용할 정도는 아니라고 생각했습니다.
그래도 유료화되기 전에는 자주 사용하게 될 것 같습니다.
추가로 Google에서 ChatGPT에 대항할 Bard를 출시했다고 합니다. 해당 내용도 따로 찾아보면 좋을 것 같습니다.
출처: Alammar, J의 블로그 https://jalammar.github.io/how-gpt3-works-visualizations-animations/
박준호 / 선임연구원
Junho Park / 서비스R&D팀
'세미나' 카테고리의 다른 글
GPS 데이터와 좌표계에 대한 문제 해결 과정 (0) | 2023.03.17 |
---|---|
Spring Boot 프로젝트에 Swagger 적용하기 (+인증) (1) | 2023.03.07 |
Maven 프로젝트 Gradle로 변환하기 (0) | 2023.02.14 |
Redux와 Mobx 비교 체험기 (0) | 2023.02.09 |
Python의 win32com 으로 윈도우 프로그램 제어하기 (0) | 2023.02.03 |