ChatGPT 플러그인에 대해서

huurray·2023년 4월 5일
1
post-thumbnail

들어가기

요새 개발할 때 ChatGPT를 많이 활용하고 있는데 스택오버플로우, 구글의 도움보다 더 빠르고 쉽게 원하는 것을 찾을 수 있어서 신세계를 맛보고 있습니다. 그런 ChatGPT가 플러그인을 서비스하겠다고 발표했어요. 이 기능은 현재는 Limited Alpha 단계이기 때문에 ChatGPT Plus 구독자만 사용할 수 있고, 서드파티 플러그인의 개발도 waitlist에 신청을 하고 등록해야만 개발이 가능합니다. 개인적으로는 이 플러그인을 통해 거대한 플랫폼 영역이 새롭게 하나 더 생길 거라고 생각하는데 이것에 대해 한 번 알아보겠습니다.

플러그인(Plugin)

플러그인이란 주로 기존 프로그램 즉, 서비스하는 제품에 추가 기능을 넣어 확장할 때 사용 되는 기능을 말합니다. 크롬 Extention을 한 번쯤 사용해보셨을 것 같은데, 플러그인과 같은 개념입니다. 이 Extention도 기존의 크롬 브라우저에서 다른 기능을 추가하여 사용할 수 있죠.

ChatGPT 플러그인도 이것 처럼 기존의 서비스에 추가적인 프로그램을 탑재하여 기존에는 접근 할 수 없었던 개인데이터를 접근하게하고 활용할 수 있게 해주는 역할을 해요.

OpenAI사는 플러그인 소개 페이지에서 대표적으로 크게 4가지를 설명하고 있는데요. 다음과 같습니다.

  1. Browsing
  2. Code interpreter
  3. Retrieval(검색)
  4. Third-party plugins*

기본적으로 chatGPT에서 제공하는 플러그인(1~2번)과 서드파티 플러그인(3~4번)에 대해 알아봅시다.

1. Browsing

ChatGPT가 실시간으로 브라우저에서 검색하고 학습해서 더 적절한 대답을 해주는 플러그인이라고 합니다. 현재는 거대 언어 모델로 학습된 데이터를 기반으로만 대답을 해주고 있는데 예시 영상을 보시면 "recently"라는 단어를 섞어 최신의 데이터를 요구하는 경우에는 직접 웹브라우저에 검색을 해서 학습한 후에 찾아준는 것을 볼 수 있습니다. Bing API를 이용한다고 하네요.

2. Code interpreter

인터프리터는 런타임에서 코드를 실행하는 도구죠. 이제 ChatGPT는 임시 디스크 공간에 샌드박스, 방화벽 실행 환경에서 작동하는 파이썬 인터프리터를 제공한다고 합니다. 이 플러그인을 통해 파이썬 코드를 주고 이 코드를 실행하면 어떤 결과를 가져오는지 알려달라고 할 수 있습니다.

또한, 파이썬 답게 예시 영상에서처럼 데이터 분석 및 시각화 수행까지 가능하다고 합니다. 아직 파이썬 언어의 인터프리터 밖에 없는 것은 좀 아쉽지만 이걸 통해 더 편한 질문이 가능할 것 같네요.

3. Retrieval(검색)

이 기능은 오픈소스화 되어있는 개인, 기업, 정부의 데이터베이스에 접근해서 관련성이 높은 내용을 검색하는데 사용됩니다. 예시 영상에서 보면 기후 변화에 대한 연도별 해석을 알려달라고 했더니, 미국 정부의 annual 리포트를 받아오는 오픈 API를 사용해서 답을 하는 것을 알 수 있습니다. 다음에 설명할 4번의 서드파티 플러그인 형태로 기업이 제공하면 ChatGPT에서 사용하는 형태로 볼 수 있습니다.

4. Third-Party Plugin*

앞서 플러그인이란 탑재 할 수 있는 추가적인 프로그램이라고 했습니다. 여기서 추가적인 프로그램이란 작게보면 개인 프로젝트가 될 수도 있고 크게보면 기업의 킬러 서비스가 될 수도 있어요. 플러그인을 통해 개인이나 기업은 ChatGPT의 인터페이스를 활용하여 서비스할 수 있고 ChatGPT는 더 확장된 서비스를 사용자에게 제공해줄 수 있습니다.

OpenAI사에서 소개하는 예시 영상을 보면 좋은 레스토랑을 추천해 달라고 했더니 OpenTable 앱의 ChatGPT 플러그인을 실행해서 레스토랑을 찾아주고 칼로리 계산 플러그인으로 칼로리도 계산해줍니다. 그리고 Instacart라는 농작물 배송 서비스 회사의 웹사이트에 장바구니도 담아주는 걸 볼 수 있습니다.

이제 우리는 웹사이트나 앱을 실행해서 원하는 행위를 직접 할 필요없이 ChatGPT에 나는 무엇을 하길 원한다라고 한문장만 입력하면 모든게 해결되는 세상이 된 것입니다. 아이폰이 발표되고 앱스토어를 기반으로 수많은 회사가 탄생하고 그 위에 많은 것들이 구축되었던 것처럼 하나의 거대한 플랫폼이 추가된 것일 수 있어요.

하지만 프론트엔드 개발자인 저한테는 마냥 좋은 소식만은 아니네요. 새로운 플랫폼은 ChatGPT 인터페이스에서 돌아가는 만큼 각 서비스의 UI는 필요없게 되지 않을까 싶습니다. 그래도 텍스트나 말로만으로 할 수 없는 것들이 있을 거라고 생각하고.. 프롬프트만으로는 대체할 수 없는 영역이 있을거라고 생각합니다ㅠ UI가 필요한 앱을 ChatGPT에서 실행하여 보여줄수는 있어도 앱 자체를 대체할 수는 없겠죠.

어쨌든! ChatGPT 플러그인 출시 소식을 듣고 제 개인 프로젝트나 회사의 서비스를 연결시켜 보고 싶어서 waitlist 신청을 했지만 아직 등록되었다는 연락은 없어서 아쉽습니다. 아쉬운대로 예제 코드를 작성해보면서 플러그인을 만드는 방법을 공부해봅시다.

저는 중고 거래 플랫폼을 운영하고 있다고 가정하고 제 플랫폼에 있는 중고 상품을 검색할 수 있는 플러그인을 만드려합니다. ChatGPT 플러그인 공식문서의 내용을 참조하여 작성하였습니다.

플러그인을 만드려면 먼저 ChatGPT에게 플러그인에 대한 정보를 알려줄 ai-plugin.json 파일을 만들어야 합니다. 이 파일은 .well-known이라는 이름의 폴더에 안에 있어야하며 공개적으로 액세스할 수 있어야하고, 내 API 도메인에서 호스팅 되어야 한다고 합니다(Same-origin policy). 또한 Prod 모드에서는 https 호스팅을 해야만 한다고 해요. 즉, 파일 위치는 https://{나의 도메인}/.well-known/ai-plugin.json 에 위치해야 합니다.

ai-plugin.json 파일에는 ChatGPT가 적재적소에 번개장터 플러그인을 사용하도록 이 플러그인이 어떤 역할을 하는지, 이름은 뭔지, API정보나 Authentication 방법은 뭔지 등 여러가지 정보를 알려주는 역할을 합니다.

프로퍼티 중 description_for_human은 이 플러그인을 사람에게 설명할 때, description_for_model은 이 플러그인을 모델, 즉 GPT에 알려주기 위해서 작성합니다. 문서에는 description_for_model와 관련하여 Best Practice들도 알려주고 있는데, 일반적으로는 자세하게 적으면 적을 수록 모델이 알아 듣기 좋을 것이라고 생각하지만 오히려 주관적으로 구체적이게 설명하지 말고 트리거 조건 등은 작성하지 말라고 설명합니다. ChatGPT가 알아서 하게 놔두라는 것이죠.

API Response에 대해서도 ChatGPT에 표현되야하는 문구를 적는게 아니고 원시 데이터를 응답해줘야합니다. 데이터를 가져와 사용자에게 채팅으로 알려주는 문구를 작성하는 것은 ChatGPT의 일입니다.

api 프로퍼티에는 내가 제공할 OpenAPI의 URL이 포함되는데 이 주소를 통해 yaml이나 json으로 문서화된 파일을 제공해야 합니다.

그럼 yaml 파일을 작성해보죠.

사양 버전, 제목, 설명 및 버전 번호를 정의하고 paths를 작성해서 어떤 API가 있는지, schemas를 작성해서 응답데이터는 어떤 형식인지 알려주면 됩니다. 이렇게 API가 명세되어 있는 문서를 작성해주면 ChatGPT가 알아서 읽어보고 맞는 API만 골라 사용합니다. 예를들어 어떤 상품에 대한 CRUD API가 있고 사용자가 특정 상품을 검색하길 원했다면 GET API의 엔드포인트만 골라 호출해서 정보를 제공한다는 것입니다.

Request나 Response 데이터의 타입과 설명을 정의해줄때 조금 노가다 작업이 필요해 보입니다. 참고로 모든 설명은 200자 내로 작성되어야한다는 조건이 있습니다.

이렇게만 호출하면 모든 상품이 검색될테니 필수 쿼리 파라미터 값과 검색 키워드를 넣어주어야 합니다. 쿼리 파라미터도 API 명세에 적어 줍시다.

이렇게 되면 완성입니다. 이제는 만약 ChatGPT에 사용자가 "갤럭시폰을 중고로 구매하고 싶은데 번개장터에 물품이 있나 찾아줘"라고 질문한다면 ChatGPT가 알아서 GET /products?page=0&keyword=갤럭시폰 API를 호출해서 사용자에게 알려줄 것입니다.

마무리

아직 실제로 개발해보지 않아서 이게 맞는지 테스트 할 수 없어 잘못된 내용이 많이 있을 겁니다. 이런 것이 있구나 개발은 이런식으로 하는구나 인지만 해주시기 바랍니다.

개인적으로는 기존에 사용하고 있는 API를 데이터 정제없이 그대로 사용해도 되니 플러그인을 만드는 것 자체는 간단해보입니다. 핵심은 API 명세서 작성입니다. 노가다 작업도 노가다지만 ChatGPT가 써먹을 수 있게 어떤 단어로 설명하고 핵심만 잘 설명할 것인지가 관건일 것 같네요.

요새 AI의 발전 속도가 굉장히 무섭고 저에게서 프론트엔드 개발 직군을 앗아갈 수도 있겠지만.. 두려워하기보다는 개발자로서 이런 툴들을 사용하고 활용해서 생산성을 높이는 사람이 먼저 되야겠다고 생각하게 됩니다.

참고

ChatGPT Plugin 소개
ChatGPT Plugin 공식문서

profile
Frontend Developer.

0개의 댓글