기술 스터디 & 뉴스 스크랩

[기술 스터디] 우아한 형제들_Slack에 ChatGPT를 연결하여 업무에 활용해 보기

suuuullloc 2023. 4. 17. 16:04
 

Slack에 ChatGPT를 연결하여 업무에 활용해 보기 | 우아한형제들 기술블로그

{{item.name}} 2022년 11월 ChatGPT가 세상에 등장하고 벌써 몇 달이 지났습니다. 새로운 AI 모델의 등장에 환영하는 사람도 있었고, 신기술의 잘못된 사용을 우려하는 목소리도 있었습니다. 하지만 지금

techblog.woowahan.com


진짜 쓸만한 거 맞아?

 

# 그동안의 챗봇은 우리의 요청을 이해한 후 논리적인 추리와 함께 가이드를 제시하기보다는, 미리 정의된 정보를 단순히 나열하여 제공해 주는 사전과도 비슷한 역할을 해왔다.

- 만족도가 높지 않았다.

 

 

진짜 쓸만한 거 맞아!

 

# 로직은 어렵지 않지만 자주 다루는 라이브러리나 언어가 아닌 경우 구글링을 하게 되고 구글링을 해도 명확한 답이 나오지 않을 때가 있다. 이때 필자는 chatGPT를 활용했고 만족스러운 답을 얻을 수 있었다.

 

 

그럼 이제 이걸 어디에 쓰나...

 

# chatGPT에게 중간중간 도움을 받는 것도 좋지만 하나로 통합된 무언가가 필요했기 때문에 사내 통합 메신저인 Slack에 결합해 보기로 했다.

 

# Slack을 타깃으로 한 이유

- 직군에 상관없이 모두가 사용 중

- 사내 업무 시스템 중 사용량이 가장 많음

- 모바일, PC 등 접근성이 좋음

 

# 필자는 Support-IT 채널을 운영하며 구성원들에게 도움을 주고 있는데, 사용자의 문의 대부분(체감상 7~80%)이 거의 동일한 것이었다. 따라서 필자는 그 7~80% 질문의 패턴(키워드)를 찾아내어 자동으로 답변 및 담당자를 찾아주는 Slack Bot을 기획하였고 최근 적용하여 활용하고 있었다.

 

 

사례 1: Support 채널 적용

 

# 오는 요청을 우선 분류하여 각각의 키워드를 정리하였다. 여기까지는 인공지능이 아닌 인간이 진행하였고, 요청의 키워드를 분석하여 실제로 이것이 어떤 요청인지를 파악하는 것은 인공지능 chatGPT의 힘을 빌려 진행하였다.

간단한 시스템 개요도

 

 # 운영비용을 최소화하고 검증된 안정적인 서버 사용을 위해 모든 인프라는 SaaS로 구성하였다.

 

# 과정

1. Support 채널 요청 : Slack의 메시지를 받아서 처리하는 봇을 생성하였다. 발생하는 메시지를 AWS Lambda로 전달할 수 있도록 적절한 권한을 부여하였고 Lambda 함수를 호출할 수 있는 URL로 연결하였다.

Lambda와 연결 부분

2. ChatGPT로 키워드 추출 요청 : 아래 예시 코드처럼 "user"의 요청에 "requestText" 한 줄을 더 추가해서 전달한다. 다양한 변수를 추가하는 것도 가능하다.

예시 코드

: 위 코드의 각 파라미터에 대한 설명
- model : API 호출 시 사용하는 ChatGPT의 모델. gpt-3.5-turbo는 현재(23년 3월 29일) OpenAI에서 가장 추천하는 모델
- messages : ChatGPT에게 전달할 내용이 담긴 메시지
- temperature : 0-2 사이에서 설정 가능하며 숫자가 커질수록 Randome 한 답변이 옴. 값이 낮을수록 정형화된 답변만 옴
- max_tokens : 답변에 대한 길이 설정

 

3~6. 추출된 키워드를 스프레드시트에서 받아오고 다시 Slack으로 답변 전달 : 모든 구성원이 Database를 함께 참조하여 필요한 데이터를 직접 추가, 삭제하는 것이 목표였고 사용자 친화성을 위해 Google 스프레드시트를 사용했다.

 

 

적용한 이후

 

# 사용자 요청을 읽은 후 chatGPT가 키워드를 추출하고 해당 키워드에 맞는 담당자를 호출한다. chatGPT만큼 명확하게 키워드를 분석해 주는 케이스는 없었다. 적용 이후 요청에 대한 운영 리소스가 줄어드는 효과도 가질 수 있었다. 물론 아직은 확실한 답변이 있는 명확한 요청에만 답을 하도록 세팅해 두었다.

 

 

사례 2: chatGPT in Slack

 

# ChatGPT를 Slack 안에서 효율적으로 활용하기 위한 필수 기능

- 단순히 하나의 질문에 답변하는 것이 아닌 대화의 맥락 유지 필요

- 채널의 모든 메시지를 가져갈 필요는 없음

- 필요한 경우에만 간편하게 호출

- ChatGPT의 답변과 사용자의 메시지 등이 혼재되어 혼란스럽지 않도록 기능 구현

 

# ChatGPT in Slack의 기본 흐름

Zapier를 통한 Slack과 ChatGPT 연동

 

# 메시지에 특정 이모티콘이 부착되었을 때 "안녕하세요. WoowahanGPT입니다. 무엇이든 물어보세요."라는 메시지를 쓰레드로 남기며 사용자에게 ChatGPT와의 대화가 시작되었음을 알린다.

 

#  아래 사진이 API의 주요 파라미터이며 이전과 다르게 prompt가 아닌 messages라는 리스트 형태의 값을 받는 것을 확인할 수 있다. messages 리스트 안의 각각의 인자는 role과 content라는 키를 갖는 딕셔너리 형태인 것을 확인할 수 있고 이 값을 계속 추가하여 기존의 맥락을 유지한 채 API를 호출할 수 있었다.

API의 주요 파라미터

 

# Python으로 제작된 messagess 리스트를 생성하는 함수

 

# GPT Bot이 남긴 메시지라면 role을 assistant로 설정하고 메시지를 content에 추가한 후 messages 리스트에 추가한다. 반대로 사용자가 남긴 메시지라면 role을 user로 설정하고 마찬가지로 메시지 내용을 content에 추가다. 이렇게 구성한 messages 리스트를 파라미터로 추가하 Create chat completion API를 호출하면 맥락에 맞는 답변을 제공한다.

맥락을 유지한 채 쓰레드 안에서 이루어지는 대화

 

 

문제점과 한계

 

첫째, 아직은 영문 정보가 훨씬 많다. 한국어 지원이 비교적 미흡한 것은 상당히 아쉬운 부분 중 하나이다.

둘째, 보안적으로 얼마나 안전한지, 그리고 국내의 법/제도 아래 어느 정도까지 활용 가능할지 아직 미지수이다.

셋째, API의 토큰 제한이 있다. gpt-3.5-turbo의 경우 현재 4,096 토큰(약 3,000자) 제한을 두고 있다. 대화가 계속 길어지고 고차원적인(소스코드 작성 같은) 질문을 하는 경우 중간에 답변이 종종 잘린 채 오는 경우가 있었다.

 

 

마치며

 

지금까지 적용한 ChatGPT 기술은 우리 회사의 업무 프로세스에 도움이 되었고, 앞으로 다양한 방면에서 활용 가능성이 열려 있다. 아직 완벽하지는 않지만 지속적인 개선을 통해 업무 환경에 더욱 맞춤화된 인공지능을 구축할 것이다.


느낀점

: 어디를 둘러봐도 chatGPT가 언급이 안되는 곳이 없는 것 같다. 나도 챗봇을 사용할 때 불편했던 적이 있었는데 챗봇과 비슷하지만 훨씬 명확한 답을 얻을 수 있도록 chatGPT를 활용해 채팅 시스템에 도입한 부분이 흥미롭다. 단순히 개발을 잘하는 것도 중요하지만 이처럼 여러가지 아이디어를 내고 이를 적용시킬 수 있는 능력도 상당히 중요한 것 같다.