4 분 소요

ChatGPT

ChatGPT 유료 플랜을 사용하면 plugin들을 사용할 수 있는데 정말 놀라운 기능들이 많다. 그리고 자신만의 plugin을 만들 수 있고 생각보다(?) 어렵지 않게 만들 수 있다는 자료들이 꽤나 보인다. 하지만 결론부터 말하자면 나는 끝까지 해내지는 못했다. 정확히 말하면 하다가 일단 중단했다. 샘플 코드에 있는 todo list 플러그인 이라던가 간단한 형식의 플러그인은 실제로 큰 노력없이 바로 생성해낼 수 있다. 하지만 조금더 생산적인 플러그인을 생성해 내기 위해서는 일이 커지는것을 느꼈고 그래서 우선 잠시 하던 일을 중단했다.

플러그인은 기본 프로그램에 추가 기능을 제공하는 소프트웨어 컴포넌트다. 기본적으로 프로그램은 특정 기능만 수행하지만, 플러그인을 통해 사용자가 필요한 추가 기능을 선택적으로 확장할 수 있다. OpenAI 플랫폼에서의 플러그인은 이와 유사한 개념을 가지고 있다. OpenAI 플랫폼은 다양한 AI 모델과 서비스를 제공하는데, 플러그인을 통해 이러한 기능을 확장하거나 사용자 정의 기능을 추가할 수 있다.

개발 과정

OpenAI 플랫폼의 주요 개념은 다음과 같다:

  1. 모델: OpenAI 플랫폼에서 제공하는 다양한 AI 모델. 각 모델은 특정 작업에 최적화되어 있으며, 사용자는 필요에 따라 적절한 모델을 선택하여 사용할 수 있다.
  2. 플러그인: 사용자가 정의한 기능을 OpenAI 플랫폼에 추가하는 방법. 플러그인을 통해 사용자는 OpenAI 플랫폼의 기능을 확장하거나 사용자 정의 기능을 구현할 수 있다.
  3. API: OpenAI 플랫폼의 기능을 외부 애플리케이션에서 사용할 수 있도록 제공하는 인터페이스. API를 통해 개발자는 OpenAI 플랫폼의 다양한 기능을 자신의 애플리케이션에 통합할 수 있다.

이제 플러그인 개발 과정을 살펴보자.

  1. 플러그인 개발 환경 설정: 먼저, 필요한 라이브러리와 도구를 설치한다. Flask와 Flask-CORS 라이브러리를 사용하여 웹 서버를 구축하고, OpenAI 플랫폼과의 통신을 위해 requests 라이브러리를 사용한다.

  2. API 및 OpenAPI 명세 작성: 플러그인의 기능을 정의하는 API를 작성한다. OpenAPI 명세를 통해 API의 엔드포인트, 요청 및 응답 형식을 정의한다.

  3. 플러그인 로직 구현: 플러그인의 주요 기능을 구현한다. 예를 들어, 나 같은 경우는 이부분에서 Swift 언어 가이드를 검색하는 기능을 구현하기 위해 BeautifulSoup 라이브러리를 사용하여 웹 스크레이핑을 수행하고 검색을 제공하는 플러그인을 구현하려 했다.

  4. 플러그인 테스트: 개발한 플러그인을 로컬 환경에서 테스트한다. 포스트맨과 같은 도구를 사용하여 API 요청을 보내고 응답을 확인할수도 있고 ChatGPT에 그 상태로 로컬 서버를 열어둔 채로 테스트할 수 있다.

  5. 플러그인 배포: 플러그인을 OpenAI 플랫폼에 배포한다. 플러그인 매니페스트 파일을 작성하여 플러그인의 메타데이터를 정의하고, OpenAI 플랫폼의 플러그인 스토어에 플러그인을 등록한다. 이 과정에서는 waitlist에 등록 해야 하고 여러 가이드라인과 포멧에 대한 심사를 받아야 한다.

이렇게 플러그인을 개발하고 배포하는 과정을 통해 OpenAI 플랫폼의 기능을 확장하거나 사용자 정의 기능을 추가할 수 있다. OpenAI 플랫폼의 플러그인 시스템은 사용자와 개발자 모두에게 유용한 기능을 제공하며, 다양한 AI 모델과 서비스를 효과적으로 활용할 수 있는 환경을 제공한다.

쉽게 정리하면 API를 생성하고 그것을 ChatGPT에 연결시키면 되는 구조이기 때문에 다양한 각자의 언어와 기술 스택을 사용하여 로직을 구현하고 연결 시킬 수 있다. 아마도 많은 사람들이 python을 이용하는 이유는 AI의 사용 방식의 흐름이 자동화에 초점이 맞춰져 있기 때문에 그런 로직을 구현하기에 손쉬운 python을 많이 이용하게 되는 부분과 아직 많은 자료가 없어 sample 자료가 될 만한 것들이 모두 python으로 작성되어있는 점 때문에 python으로 많이 작성된다.

개발 트러블 슈팅

그렇다면 내가 무었때문에 플러그인 만들기를 중단 했을까?

나는 앱개발에 관한 지식만 있기 때문에 웹 크롤링이나 파싱 그리고 자동화 관점의 로직에 대해 문외한이다. 그래서 새로운 지식을 익히기에는 지금 당장은 시간이 없어서 일단 미뤄두게 되었다. 내가 생각한 플러그인은 The Swift Programming Language 의 내용을 기반으로 검색 데이터를 제공하는 방식 이었는데 내가 생각한 것은 두가지 방식이었다.

첫번째 방식은 미리 데이터를 파싱해서 내가 DB에 저장하고 그것을 연결시키는 방식이었는데 이 방식을 이용하면 조금 더 빠른 속도를 보장하고 자료의 구조를 내 마음대로 구성 및 변경 할 수 있다는 장점이 있었지만 매번 문서가 업데이트 될 때마다 내가 DB도 업데이트 시켜줘야 하는 불편함과 DB를 유지하기 위한 비용이 든다는 문제점이 있었다.

두번째 생각한 방식은 요청이 있을때마다 해당 문서 링크에서 크롤링을 진행하고 그 결과 내에서 요청한 엔드포인트 결과와 일치하는 내용을 도출해내는 방식이었다. 이 방식은 매번 크롤링을 한다는 문제점이 있지만 데이터의 양이 엄청나게 크지 않았고 따로 DB를 구성하지 않아도 되기 때문에 사용해봄직 해서 이 방법을 선택했다.

하지만 상위 페이지 않에 수많은 링크들이 존재하고 하위 페이지로 나눠져 있기 때문에 그 구조를 고려해서 파싱을 하는 명령어를 만들어 내야하는데 나는 이 작업을 하루 이상 잡고 있지 않기로 했기 때문에 멈추고 기록으로 남겨두는 것이다.

플러그인 개발시 고려사항

이 글을 보고 플러그인을 만들어 보고자 하는 사람은 다음과 같은 사항을 먼저 고려하고 시작하길 바란다.

  1. 사용하고자 하는 자료 혹은 페이지의 저작권 일반적인 자료는 당연히 ChatGPT의 defualt 기능으로 접근하고 제공해주기 때문에 굳이 사용하지 않을 것이다. 내부 문서에 접근 하거나 특정 자료를 이용하기 위해 플러그인을 구성 하는 경우가 많을 텐데 이 경우 저작권에 대한 이용 약관이나 로봇 배제 표준(Robots Exclusion Standard)을 준수해야 한다. 내가 크롤링 하고자 한 swift.org의 경우는 다음과 같은 robots.txt 파일을 가지고 있었기 때문에 웹 크롤링을 시도한 것이다.
User-agent: *
Disallow: /builds/

builds 카테고리를 제외하고는 웹 크롤링이 가능하다는 것인데 builds는 swift를 다운로드 하는 부분이기 때문에 내가 필요한 문법에 대한 문서와는 상관 없는 부분이었다.

  1. 여러가지 비용이 발생 할 수 있음을 충분히 고려하고 제작해야 한다. 모델 사용 비용, 서버 호스팅 비용, 데이터 전송 비용, 외부 API사용 비용, 데이터 저장 비용 등등 여러가지 비용적인 측면을 고려하여 제작해야한다. 물론 그 용도와 환경 그리고 플러그인의 기능에 따라 비용이 들수도 있고 아닐수도 있다. 하지만 ChatGPT 모델을 외부에서 사용하는지 아니면 내부에서 바로 활용 하는지에 따라서도 다르고 DB를 구성하느냐 어떤 호스팅 수단을 사용하는지 아니면 로컬에서 나혼자 사용할 것인지 여러가지 경우의 수에 따라 비용이 청구 될 수 있으니 이것을 인지하는 것은 중요하다.

마무리

처음에는 단순히 검색 기능을 대체할 수 있는 ChatGPT에 대해 알게 되었을 때, 그것만으로도 충분히 흥미로웠다. 하지만 플러그인을 통한 놀라운 확장성을 직접 경험하면서, ChatGPT의 가능성과 그 뒤에 숨겨진 파워에 대해 인상 깊음을 넘어 조금 소름이 돋기까지 했다. 기존의 생각과는 다르게, 이러한 확장성을 통해 ChatGPT는 단순한 검색 도구를 넘어 다양한 분야에서의 활용성을 보여주고 있다. 수천억의 적자를 내면서도 이 서비스를 개발 하고 유지하는 것은 아마도 AI기반의 새로운 생태계를 만들어 내고자 하는 것이 아닌가라는 조심스러운 추측을 해본다. 이와같은 고도의 기술을 가진 AI는 아무나 유지하지 못하기 때문에 핸드폰 OS가 안드로이드와 iOS로 양분화 된 것 처럼 단 몇개의 AI 서비스만이 살아남을 것이다. 그 후에는 단순히 이런 플러그인 마켓이라는 플랫폼 뿐만 아니라 하나의 OS로 발전하고 그것을 기반으로 하는 앱 생태계가 새로이 탄생할수도 있지 않을까 하는 생각을 하게 하는 경험이었다. 이를 통해 우리는 AI의 미래와 그 무한한 가능성에 대해 다시 한번 깨닫게 되었다.

댓글남기기