[WEB] Jira Automation과 GPT를 활용한 챗봇 프로토타입 개발기

2023. 10. 24. 20:00WEB

최근 다양한 산업에서 효율성 제고를 위해 인공지능을 활용한 단순 반복 업무의 자동화에 많은 관심을 기울이고 있습니다.

본 포스팅에서는 문의에 대해 자동으로 답변을 생성하고 응답하는, 가장 단순한 챗봇 프로토 타입의 개발 과정에 대해 포스팅하도록 하겠습니다.

 

개발 환경:

  • Atlassian Jira
  • Google Cloud Function
  • GPT 3.5-turbo
  • Python 3.8

 

Jira란?

Jira

 Jira란 Atlassian이 개발한 이슈 추적 소프트웨어로 이슈의 추적과 프로젝트 관리를 위해 사용됩니다.

 다양한 업무(개발 단위, 버그 등)에 대한 이슈를 생성하고개발자를 할당, 버전 관리를 통한 통합, 배포 등의 기능을 제공하며, Github이나 IntelliJ 등의 써드파티와의 결합으로 Agile/DevOps 프로젝트를 쉽게 관리할 수 있습니다.

 

Jira Automation

 이러한 Jira의 다양한 기능 중, Automation은 프로젝트에서 발생하는 다양한 이벤트를 트리거하고, 상태에 따라 이후 동작의 실행을 제어합니다.

 Workflow의 자동화를 위한 다양한 툴 중, Jira Automation의 특징은 코드가 없기 때문에, 다양한 이해 관계자가 쉽게 업무를 자동화시켜 관리 포인트를 줄일 수 있다는 점입니다.

 Automation을 구성하는 요소로는 하위 동작의 Bootstrap 역할을 하는 트리거와 상태를 판단해 실행 여부를 결정하는 조건(if-else), 실행될 작업을 정의하는 동작이 있으며, 이러한 요소를 모두 아울러 Rule이라고 부릅니다.

 

 본 글에서는 Jira AutomationGPT API를 활용해, Service Desk 운영 과정에서 발생하는 다양한 문의에 대한 답변을 자동으로 생성하고, 댓글로 응답하는 챗봇 워크플로 구현 예시에 대해 다루겠습니다.

 

OpenAI API 등록

자연어 처리 모델인 GPT를 사용하기 위해서는 API 키를 발급받아야합니다.

https://platform.openai.com/account/api-keys

 

OpenAI Platform

Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

platform.openai.com

Organization을 등록하고, API Key를 발급받아줍니다. GPT를 사용하기 위해 필요합니다.

API 키를 발급받아도 사용하려면 결제 수단을 입력하지 않으면 인증이 되지 않더군요. 결제 정보도 등록해주세요

 

Google Cloud Function

Google Cloud Functions Logo

이전 GCP의 서버리스 컨테이너 배포 플랫폼인 Cloud Run의 글에서 잠깐 등장했던 클라우드 펑션입니다.

 

 

[GCP] 초보자를 위한 Cloud Run 설명회

Cloud Run이란 구글 클라우드 플랫폼에서 제공하는 서버리스 컴퓨팅 서비스로 AWS의 Fargate에 대응됩니다. GCE를 통해 가상 머신을 생성하고 서버를 구성 후 코드를 빌드하여 배포하는 기존 방식(IaaS

blog.ymon.io

 Cloud Run이 요청 발생 시에 컨테이너를 실행했던 것과 유사하게, Cloud Functions 역시 요청이 발생했을 때 작성해둔 함수를 실행하고 결과 값을 응답합니다.

 Cloud Run보다 더 간편하게 백엔드 엔드포인트를 구성가능하지만, Cloud Run에 비해 개발자가 제어할 수 있는 범위가 훨씬 한정적이며 플랫폼 의존성이 높습니다. 예를 들어 Cloud Run에서 동작하는 컨테이너를 AWS Fargate로 이전 할 때, 컨테이너만 새로 배포하면 동일한 동작이 보장되는 것과 달리, Cloud Function의 경우 다른 플랫폼으로 이동할 경우 코드를 새로 작성해야 하며 아예 실행이 되지 않을 수도 있습니다.

 부가적으로 실행 시간과 실행 횟수에 따른 비용이 청구되기 때문에 운영 과정에서 발생하는 비용 산정이 용이할 것이라고 생각됩니다.

 

초기화

프로젝트를 생성하고 Cloud Function으로 이동합니다

Cloud Function init
Cloud Functions 서비스 생성

함수 만들기 탭에서 리전과 함수명, 트리거, 환경 변수 등을 추가해 줍니다.

function create
함수 생성
env
사용에 필요한 환경 변수 세팅

환경 변수에 OpenAI에서 발급 받은 $조직 키와 $API 키를 입력해줍니다.

 

필요 모듈 등록

필요한 모듈로 openai를 등록해줍니다.

Python, node.js에서는 openai 모듈, 패키지를 설치해 손쉽게 사용할 수 있습니다.

Java나 다른 프레임워크에서는 직접 API Endpoint에 요청을 보내야하고, 구현하려는 기능의 특성 상 CPU보다 I/O Burst가 월등히 높기 때문에 빠르게 개발하기 위해 Python을 개발 언어로 택했는데 다른 언어가 편하다면 해당 언어를 쓰시면 됩니다.

 

함수 초기화

function init
진입점*이 요청이 들어왔을 때 실행될 함수 엔드포인트

진입점과 시작 점의 함수를 일치시켜주고, openai 모듈에 인증 정보를 담아 초기화시켜 줍니다.

    # 요청의 Body를 파이썬에서 쉽게 사용하기 위한 dict 자료구조로 변환
    question_json = json.loads(request.data.decode('utf-8'))
    # 문의에 대해 접근
    question = question_json["fields"]["description"]

 

예시로 사용된 field.description은 이슈의 설명 란의 데이터입니다.

Jira Issue
예시 이미지

파이썬에서 Issue의 Description으로 문의를 받았으니, 해당 질문을 가지고 GPT를 통해 답변을 생성해주면 됩니다.

System role에 간단한 프롬프트를 입력해 답변을 원하는 방향으로 조정할 수 있으며, 대량의 데이터 셋을 입력해 Fine-Tuning도 가능합니다.

 

데이터 셋을 통한 튜닝 방법은 

https://platform.openai.com/finetune

 

OpenAI Platform

Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

platform.openai.com

해당 링크에서 확인할 수 있습니다.

 

최적화 프롬프트
프롬프트를 통해 최적화 된 답변 생성

 답변 생성을 위한 가이드라인을 제시하고, user의 content에 질문을 입력해 답변을 생성한 후, 응답 중 GPT가 생성한 실제 답변을 반환합니다.

 

URL에 작성한 진입점 함수 이름을 붙이면 해당 함수의 End-Point가 됩니다.


Automation 설정

이제 이슈가 생성되면 문의를 전달하고, 응답을 받아 코멘트를 작성하기 위해 Automation을 설정 할 차례입니다.

Project Setting
1. 프로젝트 설정
2. 자동화(Automation)
오토메이션 설정
아까 만든 ${URL}/${FUNC_NAME} 입력

When에는 이슈 생성을 트리거 예시로 들었습니다.

 

cloud functions에서 생성된 함수의 진입점을 요청 url에 입력해주고, POST 요청으로 이슈 데이터를 전달하면 답변을 생성합니다.

이후 답변이 오면 Response로 전달된 답변을 해당 이슈의 댓글에 달아줍니다.

 

동작 확인

 

응답 결과

Automation for Jira가 이슈에 대해 자동으로 답변을 생성한 결과입니다.

 

여기까지 Jira Automation과 GPT를 활용한 챗봇 시스템 구축 방법에 대해 알아보았습니다.

반응형