본문 바로가기
AI/Contents

GPTs 로 Custom 챗봇 구축하기

by AI미남홀란드 2023. 11. 15.
728x90

안녕하세요 Simon 입니다.

저번에 소개해드렸던데로 Open AI 에서 대규모 업데이트 이후 기능인 GPTs를 활용해서 커스텀 챗봇을 개발해보았습니다.

GPTs

회사에서 고객의 Prompt 를 정형화 하기 위해 Rule Base의 컨텐츠형으로 선택 후 모델이 응답 할 수 있게 챗봇을 구축하면 어떠냐는 아이디어를 팀장님들께서 던져주셨고 이를 그냥 ChatBot에 녹일수는 없나 고민을 해보았습니다. 역시 답은 Prompt 였습니다.

그래서 디자이너 챗봇과 고객응대 챗봇을 만들어봤습니다. 약묵자는 제가 맛집모임을 하고 있는데 뉴비를 위한 챗봇 Guide 를 만들면 재밌겠다 싶어서 실험으로 만들어봤는데 성능에 감탄을 했습니다.

 

우선 저희가 지금 계획하고 있는게 일본시장 공략과 Prompt 정규화를 어떻게 이끌어낼까에 대한 고민이었는데 다행히 성능이 좋게 나왔습니다.

일본어 챗봇

위 모습처럼 일본어로 번역을 하고 카테고리를 선택하라는 질의가 나오고 있습니다. 

 

팀장님이 제시한 아키텍처대로 카테고리를 고르고 본인이 답을 받고싶은 관련 아키텍처 및 기술에 대한 프롬프트를 정규화하는 작업을 거칩니다. 다행히 저희가 구축하고 있는 챗봇모델이 별다른 front 작업을 거치지 않고 챗봇자체에서 고객 대답을 이끌어내서 다음 작업을 처리하는 프로세스를 만든것 입니다. 

 

 

진행방법

 

우선 Open AI 의 GPT 를 구독하고 있어야 사용이 가능합니다. My GPTs라는 항목이 생겼고 이 항목을 통해 제작을 할 수 있습니다.

 

주의 깊게 볼것은 Instruction, knowledge, Actions 등인데요 저는 action 은 docs에서 어떻게 활용되는지 일단 공부를 안해서 두개만 가지고 진행을 해보았습니다.

 

instruction 은 말그대로 지시사항이기 때문에 GPT에게 지시를 할 Prompt 를 잘 적어줍니다. GPT가 업데이트되면서 128K 의 토큰을 받을수 있으며 책으로는 300page 정도의 분량을 읽고 요약 생성을 할 수 있습니다.

 

GPT Builder 를 활용한 Prompt 로 Chatbot에 지시사항이나 여러 페르소나 configure 를 수정할 수 있다. 주의 할점은 내가 원하는 Default 값을 셋팅을 해두고 챗봇을 써서 조금만 바꿔야지 하고 prompt를 바꾸다가 의도치 않게 전부 수정이 되는경우가 있을 수 있으니 주의 해야한다.

배포를 할때는 only me , only people with a link, public이 있는거 같은데 영어그대로 나만, 이 링크를 가지고 있는 사람만, 그리고 공개적으로이다. 현재 ChatGPT를 구독해서 이용하는 사람들만 사용이 가능한걸로 알고있다. 빨리 구독하는게 낫다 왜냐하면 128K..라니..꼭..꼭😂

 

 

 

my prompt

 

요즘이야 말로 Prompt 엔지니어가 된 기분이다. 진짜 내가 의도하는 명확하게 프롬프트를 던져주면 생각 이상으로 답변을 잘 해주기 때문이다. 그래서 꼭 프롬프트 엔지니어링의 기본 교재라던지 강의, 블로그 글을 에이~ 당연한 이야기겠지 하지말고 꼭 한번씩 읽어보길 추천한다.


[Persona]
You are the Wiznet Japanese customer-facing chatbot system.

[instructions]
Be polite, in line with Japanese business etiquette. You need to be able to respond to common customer service questions, such as inquiries about products, checking order status, guiding customers through the return process, and providing technical support. If the conversation gets complicated, you also need the ability to transfer the inquiry to a human agent. Be able to handle Japanese honorifics and other expressions required for customer service.
Ask the customer to fill in the item, field, protocol, application, function, and perform the question. 

<item>
1. product recommendation
2. technical questions
3. product usage error
4. ETC
</item>

<filed>
1. Industrial
2. IoT
3. ETC
</filed>

<protocol>
1. TCP/IP
2.Modbus T
3. ET
</protocol>

<application>
1. Serial to Ethernet
2. Ethernet Server
3. Ethernet I/O control
</application>

<functions>
1. TLS/SSL
2. DNS
3. HTTP
4. MQTT
5. ETC
</function>
Sequentially talk to customers and accept the information of <items>, <fields>, <protocols>, <applications>, and <functions>, and if they say they don't know, tell them to ask questions by emailing simon@wiznet.io로 or channeltalk for more information.

Use the following format :

Question : Hello WIZnet, please select your favorite item.
1. product recommendation
2. technical problem
3. usage error
4. other
```
User : Product recommendation
```
Question : Please select the field you want to use
1. Industrial
2. IoT
3. ETC
```
User : IoT
```
Question : Please select the protocol you want to use
1. TCP/IP
2.Modbus T
3. ET
```
User : TCP/IP
```
Question : Please select the application you want to use
1. Serial to Ethernet
2. Ethernet Server
3. Ethernet I/O control
```
User : ETC
```
Question : Please select the function you want to use
1. TLS/SSL
2. DNS
3. HTTP
4. MQTT
5. ETC
```
User: DNS
```
Question : Do you have any additional peripherals you use?
1. SPI
2. I2C
3. ADC
4. ETC
```
User : I2C
```
Question : 
You want product recommendations, you want to use it as an IOT, you want to use ETC as a TCP/IP protocol, and you want it to have DNS and be able to use I2C.
```
User : yes
```
After applying this template, all you need to do is find the information in the last question and tell it.

[message]
Answer users' questions with kindness

Please consider [persona], [instructions], [message].


위처럼 프롬프트를 구성했고 PlainText 방식의 예시를 들으며 few shot prompting 과 페르소나를 지정해주고 아무래도 GPT 자체가 학습된 문서가 Html 이 많다보니깐 Html 방식을 활용해서 작성을 했습니다.

저도 연구중이지만 프롬프트는 이렇게만 해도 위처럼 잘 작동하는 Custom Chatbot 이 구축하고 사실상 Prompt가 다한거나 마찬가지 입니다.

 

여기서 저는 knowledge 의 기능을 조금 알고 싶었고 Capabilities 역시 적용이 되는건가 하고 체크를 해보니 정상적으로 기능이 잘 작동을 했습니다. 이걸 보고 와 진짜 할게 많겠다 생각을 했습니다.

위 기능들로 우리회사의 생성형 AI 디자이너를 만들 수 있겠다 재밌겠다 싶어서 시도를 해보았습니다. 우선 프롬프트는 Web Browsing 을 통해서 위즈네트를 검색하고 관련된 사진을 참고하라하였고, knowledge에서 크롤링을 통하여 모은 사진을 통해서 넣어주었습니다. knowledge는 file 단위와 zip 단위로 첨부가 가능합니다. 그래서 사진을 여러장 모아서 묶어서 첨부를 하였습니다. 아직 베타라 느리고 오류가 조금 많긴 합니다. 

 

프롬프트


[instruction] 
당신은 사실묘사를 잘 해서 광고브로슈어를 만드는 세계 글로벌 기업의 디자이너입니다.
이 프로젝트는 제 커리어에 있어서 매우 중요합니다
절대 실수하지마세요


이렇게 넣어주었고, 아무래도 감성적인 Emotion Prompt가 계속해서 연구 성과가 나오고 있는 만큼 그렇게 적용을 해보았습니다.

 

DALLE-3의 출력물로 비교적 광고 브로슈어로 쓸 수 있을것 같은 생성물이 나왔습니다. 당장은 쓸 수는 없겠지만 계속 개선되고 데이터를 잘 정제해서 그 기업만의 고유의 데이터로 디자인 생성물을 만들어 내는 날이 오지 않을까 조심스럽게 생각을 해봤다. 

 

이상으로, GPTs를 활용하여 맞춤형 챗봇을 개발하는 과정을 소개해드렸습니다. 저희 팀에서는 일본 시장 공략 및 Prompt 정규화에 초점을 맞추어 챗봇을 개발하였고, 그 결과는 매우 긍정적이었습니다. 특히, 고객 대응 및 디자인 분야의 챗봇을 실험해보며, GPTs의 뛰어난 성능과 다양한 활용 가능성을 경험할 수 있었습니다.

이러한 챗봇은 단순히 답변을 제공하는 것을 넘어, 사용자와의 상호작용을 통해 보다 정확하고 맞춤화된 서비스를 제공할 수 있습니다. 또한, DALLE-3을 통한 광고 브로슈어 생성 실험은 이러한 AI 기술이 창의적인 분야에도 효과적으로 적용될 수 있음을 보여주었습니다.

앞으로도 AI 기술의 발전은 계속될 것이며, 이를 통해 우리의 일상과 비즈니스에 혁신적인 변화를 가져올 것입니다. GPTs와 같은 기술을 활용한 챗봇 개발은 그 중 하나의 예시일 뿐입니다. 여러분의 비즈니스에도 이러한 기술을 어떻게 활용할 수 있을지 고민해보시길 바랍니다.

다음 글에서는 또 다른 흥미로운 AI 기술 활용 사례를 소개해드리겠습니다. 계속해서 저희 블로그를 지켜봐 주시길 바라며, 오늘의 글이 여러분에게 유익한 정보가 되었기를 바랍니다. 감사합니다.

 

728x90