레플리
글 수 282

ChatGPT 플러그인 구현 방법 - manifest와 OpenAPI Spec

조회 수 648 추천 수 0 2023.03.28 19:05:52


지난 번에는 ChatGPT plugins을 어떻게 사용하는지 설명을 드렸습니다. 먼저 각 서비스 회사들이 자신의 플러그인을 구현하고 스토어에 등록을 합니다. 사용자가 원하는 플러그인을 설치하면 ChatGPT와 해당 플러그인이 연동됩니다. 그리고 대화를 통해 플러그인 서버와 정보를 주고받을 수 있습니다.

 

http://aidev.co.kr/chatbotdeeplearning/12520

 

 

 

보통 카카오i 오픈빌더나 Dialogflow 등의 챗봇 빌더는 스킬이라는 형식으로 외부 서비스와 연동이 됩니다. 이때 Restful API로 정보를 요청하고 그 결과를 받아 챗봇의 대답으로 사용합니다.

 

예를 들어, 카카오톡 챗봇에서 날씨를 물어보면 날씨 API 서버에 현재 날씨를 요청합니다. 날씨 정보를 다시 보내주면 이를 사용해서 '오늘 기온은 10도입니다'처럼 대답을 합니다. 이때 API 형식은 json과 같은 구조를 미리 사전에 정의해 둡니다. API 개발자는 이 형식에 맞게 API을 요청하거나 처리하면 됩니다. 대략 다음과 같은 json 구조입니다.

 

{ "bot": { "id": "<봇 id>", "name": "<봇 이름>" }, "intent": { "id": "<블록 id>", "name": "지식+", ... }

 

 

 

ChatGPT 역시 플러그인 서버와 통신을 하려면 이와 같은 규약이 필요합니다. 플러그인을 만들기 위해서는 manifest와 OpenAPI Spec 2가지만 작성하면 됩니다.

 

manifest는 플러그인의 전체 정보를 담고 있습니다. 플러그인 이름, 설명, 인증방법, OpenAPI Spec 파일 URL 등이 있습니다. 여기서 설명을 자세히 써야 ChatGPT가 어떤 동작을 하는 플러그인인지 이해할 수 있습니다. 만약 TODO 기능이라면 이렇게 작성합니다. 'Plugin for managing a TODO list. You can add, remove and view your TODOs.'

 

K-002.png

 

K-003.png

 

 

 

가장 핵심은 OpenAPI Spec입니다. ChatGPT가 이 명세를 보고 Restful API에 쓰기 위한 json 형식으로 변환합니다. 예를 들어, '저녁에 친구와 약속있다고 TODO에 추가해줘'라고 하면, ChatGPT가 자동으로 이를 json 데이터로 바꿔줍니다. 이때 ChatGPT는 어떤 json 형식으로 작성해야 하는지 정확하게 알지 못합니다. 그래서 OpenAPI Spec에서 각 항목과 설명을 자세하게 기입해줘야 합니다. 물론 말로만 풀어쓰면 ChatGPT가 알아서 이해하고 json 데이터로 변환해주기 때문에 상당히 편리하게 구현할 수 있습니다.

 

K-001.png

 

 

 

챗봇빌더는 개체명인식을 사용해서 개체를 추출하고 이를 json에 채워넣습니다. 만약 '난 짜짱면 말고 짬뽕 시킬래'라고 했다면 어떻게 할까요. 우리가 원하는 것은 '짬뽕'을 주문하는 것입니다. 하지만 대부분의 챗봇빌더들은 '짜장면'과 '짬뽕' 2개의 개체를 동시에 json으로 변환합니다. 문장의 뜻을 정확하게 이해하지 못하기 때문입니다.

 

ChatGPT는 이런 면에서 매우 탁월합니다. 복잡하게 명령을 내려도 그 의미를 이해하고 API에 사용할 json을 정확하게 생성할 수 있습니다. 그래서 기존의 챗봇이나 개인비서보다 훨씬 유연하고 범용적으로 스킬을 구현할 수 있습니다. 아마 조만간 이렇게 주문하는게 곧 가능해질 거라고 봅니다.

 

(쿠팡 ChatGPT 플러그인 설치)

나 : 쿠팡에서 노트북 좀 검색해줘. 삼성거 중에서 가성비 좋은 걸로.

AI : 이 모델이 가장 가성비가 좋습니다.

나 : 음.. 더 싼거는 없어?

AI : 삼성 노트북 중 가장 싼 모델은 이것입니다.

나 : 메모리가 좀 부족하네. 두배로 추가해줘.

AI : 노트북 메모리를 두배로 추가했습니다. 가격은 얼마입니다.

나 : 지금 바로 주문해줘

AI : 노트북을 주문 완료했습니다.

나 : 언제 도착해?

AI : 로켓배송으로 내일 새벽 6시에 도착 예정입니다.

 

 

 

https://platform.openai.com/docs/plugins/examples

 

List of Articles
제목 글쓴이 날짜sort 조회 수
사진을 인식할 수 있는 ChatGPT 멀티모달 버전 공개 file 깊은바다 2023-09-26 279
Poe에 추가된 업스테이지의 LLM, Solar-70b file 깊은바다 2023-09-18 438
RAG 아키텍처를 위한 임베딩 모델의 선택에 대해 깊은바다 2023-09-14 519
LLM의 미래는 자율행동과 멀티 에이전트 깊은바다 2023-08-30 300
LLM이 서로 협력하여 프로그램을 개발 - ChatDev file 깊은바다 2023-08-16 751
GPT-4에 CoT 프롬프를 적용하여 2023 수능 국어 1등급 달성 file 깊은바다 2023-08-08 621
LLM의 창발적인 현상인 CoT(Chain of Thouht) 소개 file 깊은바다 2023-07-27 705
RAG 아키텍처의 이해 깊은바다 2023-07-23 1328
GPT-4 세부구조에 대한 정보 유출 깊은바다 2023-07-20 457
Llama 2의 RLHF 구현 방법 깊은바다 2023-07-19 723
한국어 LLM 민주화의 시작 KoAlpaca file 깊은바다 2023-07-17 1059
레포트를 써주는 LLM - GPT Researcher file 깊은바다 2023-07-13 407
LLM 챗봇의 특징 2가지 - RAG와 Function 깊은바다 2023-07-06 1195
RAG(Retrieval-Augmented Generation) - LLM의 환각을 줄이는 방법 file 깊은바다 2023-07-04 9664
Generative AI — 시장 구조, 기회, moat에 대한 몇 가지 생각 깊은바다 2023-06-27 302