OpenAI API로 사내 문서 요약 봇 만들기

배경

작년 11월 ChatGPT가 공개된 후 사내에서도 관심이 뜨거웠다. 특히 기술 문서가 길어서 읽기 부담스러운 경우가 많았는데, 이를 자동으로 요약해주면 좋겠다는 의견이 나왔다.

OpenAI API를 사용해 간단한 문서 요약 봇을 만들어봤다.

구현

API 키 발급

OpenAI 플랫폼에서 API 키를 발급받았다. 조직용 계정으로 발급받아 팀원들과 공유했다.

gpt-3.5-turbo 사용

import { Configuration, OpenAIApi } from 'openai';

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

async function summarizeDocument(text) {
  const response = await openai.createChatCompletion({
    model: 'gpt-3.5-turbo',
    messages: [
      {
        role: 'system',
        content: '당신은 기술 문서를 요약하는 전문가입니다. 핵심 내용을 3-5개 bullet point로 정리해주세요.'
      },
      {
        role: 'user',
        content: `다음 문서를 요약해주세요:\n\n${text}`
      }
    ],
    max_tokens: 500,
    temperature: 0.3,
  });

  return response.data.choices[0].message.content;
}

토큰 제한 처리

gpt-3.5-turbo는 4096 토큰 제한이 있다. 긴 문서는 청크로 나눠서 처리했다.

function chunkText(text, maxLength = 3000) {
  const chunks = [];
  let start = 0;
  
  while (start < text.length) {
    chunks.push(text.slice(start, start + maxLength));
    start += maxLength;
  }
  
  return chunks;
}

슬랙 봇 연동

Bolt 프레임워크로 슬랙 봇을 만들고, 문서 링크를 보내면 요약해주도록 구성했다.

결과

  • 평균 5초 내로 요약 완료
  • 비용은 문서당 0.01~0.05달러 수준
  • 팀원들 반응이 좋아서 정식 도입 검토 중

개선 필요 사항

  • 토큰 계산 로직 개선 (tiktoken 라이브러리 고려)
  • 캐싱으로 중복 요청 방지
  • 에러 처리 강화

API 호출이 간단해서 빠르게 프로토타입을 만들 수 있었다. 앞으로 더 다양한 활용 방법을 찾아볼 예정이다.