AWS 기술 블로그

해피캠퍼스의 Easy AI: Amazon Bedrock을 활용한 레포트 생성

에이전트소프트

에이전트소프트는 “가장 가치 있는 자산은 지식이며, 우리는 그 지식에 가치를 창출할 수 있는 대리자가 되자”라는 신념으로 2000년에 설립된 IT 서비스 기업입니다. 대한민국의 대표적인 지식거래 플랫폼인 해피캠퍼스를 운영하며, 20년 이상 지식 콘텐츠 거래 서비스 분야에서 선도적인 위치를 지켜왔습니다. 해피캠퍼스는 누구나 쉽고 편리하게 지식을 공유하고 거래할 수 있는 플랫폼으로, 개인 간의 지식 교류와 활용을 촉진하는 새로운 생태계를 만들어가고 있습니다. 에이전트소프트는 지속적인 혁신을 통해 업계 최고의 지식 거래 서비스를 제공하기 위해 끊임없이 노력하고 있습니다.

EasyAI 서비스 소개

EasyAI 서비스는 사용자가 주제를 입력하면 해피캠퍼스의 방대한 데이터베이스에서 관련 자료를 선별하고, Amazon Bedrock에서 제공되는 Claude 3.5 모델을 활용하여 분석된 맞춤형 초안을 제공합니다. 이는 과제 시작 단계에서 방향 설정과 자료 수집에 어려움을 겪는 사용자들에게 실질적인 도움이 되며, 글쓰기의 진입 장벽을 낮추는 역할을 합니다.

이 서비스는 해피캠퍼스가 회원들의 학습 효율성 향상과 시간의 가치를 극대화하기 위해 개발한 혁신적인 기능입니다. 해피캠퍼스에 축적된 수백만 건의 자료를 기반으로 신속하고 정확한 문서 초안을 제공하여, 사용자들이 과제 시작 단계에서 겪는 불필요한 고민과 시간 낭비를 최소화합니다. 특히 주제와 관련된 해피캠퍼스의 검증된 자료들을 AI가 자동으로 선별하고 분석하여 초안을 작성해주므로, 사용자는 이를 토대로 자신만의 독창적인 관점을 추가하고 과제의 핵심 내용 작성에 더욱 집중할 수 있습니다.

EasyAI의 도입으로 사용자들은 해피캠퍼스 내 방대한 자료를 검색하고 개요를 작성하는 시간을 대폭 절감할 수 있게 되어 고품질의 자료를 작성할 수 있게 시간적인 여유를 주게 됩니다. 결과적으로 전체 과제 작성 과정이 더욱 체계적이고 효율적으로 진행되며, 최종 결과물의 품질도 한층 향상됩니다. 이러한 혁신적인 AI 기반 지원 시스템은 해피캠퍼스만의 차별화된 데이터베이스를 활용하여 학습자들이 더 나은 자료를 작성할 수 있도록 돕는 든든한 조력자 역할을 수행합니다.

서비스 기능 소개

1단계. 주제 입력

초안 작성이 필요한 주제를 명료하게 정리하여 입력합니다.

2단계. 자료 선택 및 내용 생성

해피캠퍼스에서 판매 중인 자료 중, 1차적으로 검색을 통해 입력한 주제에 부합하는 대표 자료를 선택하고 AI 가 그 중 주제에 부합된 자료를 이용하여 자료 내용을 기준으로 새로운 초안을 생성합니다.

3단계. 결과

초안 생성이 완료되면 서비스 특성 상 모든 내용을 바로 제공하지 않고, 전체 목차와 함께 전체 내용 중 약 25%의 정보만을 미리 확인할 수 있도록 합니다. 이를 토대로 회원은 생성된 결과물이 회원이 원하는 주제가 포함되었는지, 필요한 내용이 충실히 담겼는지, 문장의 품질이나 오타가 없는지 등을 사전에 검토한 후 실제로 사용할지 여부를 결정하게 됩니다.

솔루션 개요

에이전트소프트는 Amazon Bedrock에서 제공하는 Claude3.5 모델을 활용하여 사용자가 입력한 주제에 적합한 자료를 선별하고, 선별된 자료를 바탕으로 새로운 문서의 초안을 작성하며, 프론트엔드와 백엔드(Amazon EC2)는 FastAPI를 통해 통신합니다. 아래 그림은 서비스의 전반적인 아키텍처를 보여줍니다.

아키텍처 오버뷰

레포트당 평균 15,000 token 정도의 길이를 지닌 자료의 특성과 한번에 출력 가능한 Claude모델의 max_token limit으로 인해 생성 할 초안의 목차별로 Bedrock API를 호출, 레포트를 프롬프트로 재 전달 해야 했고 이로 인한 높은 토큰 사용량과 많은 API 호출 횟수가 예상 되었습니다. 또한, 수용해야 하는 예상 동시 접속자 수와 초안 생성 소요 시간을 줄이기 위해 Amazon Bedrock을 멀티 리전으로 호출하는 방안을 검토하게 되었습니다. 사용량에 따라 Provisioned Throughput을 고려할 수도 있으나 서비스 초기에는 사용량 예측이 어려워 유연하게 확장이 가능한 멀티 리전 호출을 선택하게 되었습니다. 따라서 Amazon Bedrock을 이용 가능한 버지니아북부(us-east-1) 리전과 오레곤(us-west-2) 리전을 포함하여 총 9개의 VPC Endpoint를 이용하도록 구성하였습니다. 이와 같은 확장을 위한 멀티 리전 구축은 올해 8월 Bedrock의 신규 기능으로 추가된 cross-region inference를 통해 쉽게 구현 및 운영할 수 있기 때문에 추후 적용을 고려하고 있습니다.

구현 상세

1단계. 해피캠퍼스 내부에서 판매중인 자료 중, 사용자가 입력한 주제에 부합한 자료들을 text/lexical search를 기반으로 1차적으로 검색합니다.

2단계. 1차로 검색된 자료들과 사용자가 입력한 주제를 Amazon Bedrock의 Claude3.5 모델로 전달하고 사용자 주제에 가장 적합한 자료를 다시 한번 선정한 뒤 초안 생성을 시작합니다.

3단계. Amazon Bedrock을 통해 최종 선정된 자료를 바탕으로 초안 문서의 목차 및 목차별 본문 생성을 시작합니다. 생성 된 결과는 프론트엔드와 협의 된 방식으로 재가공 후 API를 통해 전달 됩니다.

후처리 코드 예시: 불필요한 기호 및 태그 출력, 반복되는 목차 출력 등 삭제

#문단별 제목 포함된 것 삭제(패턴편집)
def remove_leading_numbers(text):
    return re.sub(r'^\d+(\.\d+)*\.\s*', '', text).strip()
def remove_if_contains(cot_text):
    cot_text_cleaned = [remove_leading_numbers(item) for item in cot_text]
    return cot_text_cleaned
removed_cot = remove_if_contains(index_list)

def remove_elements(contents, elements_to_remove):
    updated_contents = []
    for content in contents:
        # updated_content = content
        updated_content = re.sub(r'^\d+(\.\d+)*\.\s*', '', content[:6]) + content[6:]
        for element_to_remove in elements_to_remove:
            pattern = re.compile(rf'.*{element_to_remove}\n')
            updated_content = re.sub(pattern, '', updated_content)
        updated_contents.append(updated_content)
    return updated_contents

프롬프트 엔지니어링

원본 레포트의 주제, 목차구조, 어미, 형식에 영향을 크게 받는 결과물의 품질과 형식을 일정수준 이상으로 유지하고 보다 풍부한 내용을 담을 수 있도록 케이스별로 나누어 프롬프트 테스트를 진행하였고, 버전관리를 통해 가장 최적의 프롬프트를 작성 하였습니다. 추후 프롬프트 변경이 필요한 경우에는 변경된 프롬프트 파일을 Amazon S3에 업로드 하면, Lambda trigger를 통해 자동으로 API server에 반영 되도록 구성 하였습니다. 아래는 개발 중 사용된 프롬프트의 일부이며 프롬프트는 지속적으로 최적화되었습니다.

다음은 작업에 사용할 전체 목차입니다: 
<content> 
{content_result} 
</content> 
 
다음은 당신에게 제공된 문서들입니다: 
<documents> 
{document_entries} 
</documents> 
 
제공된 {content}에 대한 내용만 작성합니다. 
하위목차가 존재한다면, 하위 목차를 언급하지 말고 대략적인 개요만 작성 합니다. 
레포트 제출용이므로 말투는 "~이다."로 끝냅니다. 
내용 작성 후 마지막에 '출처=>[참조한 문서 번호들]' 형식으로 출처를 기재합니다. 예시: '출처=>[1,2]' 
응답은 가능한 한 길고 풍부한 내용을 포함해야 하며, 최소 1000단어의 길이를 가져야 합니다. 
제공받은 문서의 길이와 동일하게 작성합니다. 
또한, 현재 레포트에서 다루지 않았지만 관련된 최신 연구나 데이터를 추가로 조사하여 리포트에 포함합니다. 
현재 레포트에서 다루지 않은 내용을 작성하는 경우 마지막에 출처를 기재하지 마세요. 
...

Amazon Bedrock 을 선택한 이유

다양한 Foundation Model들의 혁신이 매우 빠르게 일어나고 있는 변화의 시대에서 AI서비스을 지속적으로 고도화하기 위해선 여러 최신 Foundation Model들을 신속하게 실험하고 전환할 수 있어야 합니다. Amazon Bedrock에서는 다양한 AI기업들의 고성능 모델들이 제공되며 특히 본 서비스에 사용된 Anthropic의 Claude3.5 모델은 최신 버전 출시와 동시에 Bedrock에서도 사용이 가능했습니다. 따라서 서비스 구축 중, Claude3에서 3.5 최신버전으로 빠른 테스트 및 전환이 가능하였기에 성능을 더욱 향상시킬 수 있었습니다.

또한 Bedrock은 별도의 인프라 관리가 필요없는 서버리스 형태로, API를 통해 간편히 애플리케이션에 통합이 가능합니다. 즉, 인프라 구축과 관리에 들이는 노력을 생성형AI 애플리케이션의 개발을 가속화하는데 사용할 수 있어 더욱 효율적인 개발이 가능했습니다.
뿐만 아니라 Bedrock은 퍼블릭 인터넷을 경유하지 않도록 VPC 엔드포인트를 사용하여 API 서버가 존재하는 VPC와 프라이빗한 네트워크 구성이 가능하기 때문에 보다 보안적으로 안전한 네트워크 구성이 가능했습니다.

마지막으로, 현재 단계에서는 적합한 문서검색 성능을 향상시키기 위하여 검색증강생성 (RAG, Retrieval-Augmented Generation) 기술을 도입하진 않았지만 추후 서비스 고도화를 위한 도입 시, Bedrock에서 제공되는 임베딩 모델인 Amazon Titan embedding model벡터 데이터베이스로 사용할 수 있는 Amazon Opensearch 등 지속적으로 AWS의 다양한 서비스를 사용하여 원활한 통합이 가능하다는 점이 Bedrock 선택의 장점이었습니다.

솔루션 도입 효과 및 향후 계획

도입효과

EasyAI 서비스는 해피캠퍼스가 AWS의 인프라와 Amazon Bedrock(Claude 3.5)을 활용하여 개발한 혁신적인 서비스입니다. 현재 Daily Active User 약 470명정도가 EasyAI 서비스를 사용중이며 일 평균 약 700건의 데이터를 건 당 30초 미만으로 제공하고 있습니다. 따라서 서비스 출시 이후, 사용자들은 빠른 시간 내에 제공되는 고품질 초안을 바탕으로 더욱 완성도 높은 과제물을 작성할 수 있게 되었으며, 이는 아래 실사용자 평가와 같이 높은 사용자 만족도로 이어지고 있습니다.

  • *태* : 글을 쓸 줄도 모르는 제가 과제를 몇 시간 동안 끙끙대면서 개발새발 써내려갔었는데, 이런 좋은 사이트와 프로그램이 있었네요!! 처음에는 쓸만한가 의심이 들었는데 EasyAI를 이용하여 만든 과제의 초안을 보고 바로 결제했습니다. 과제하는데 많은 도움이 되었어요. 추천합니다.
  • *소* : 과제 하는데 도움이 많이 됐어요 ㅎㅎ 앞으로도 자주 이용하게 될 것 같아요 !
  • *영* : 매우 유익하고 도움이 되는군요 시간과 노력을 줄이고 대신 내용에 충실할 수 있어 많이 도움이 됩니다
  • *경 * : EasyAI를 처음 써봤는데, 정말 놀라웠어요. 주제만 입력하니 순식간에 글이 완성되더라고요. 문장도 자연스럽고 내용도 풍부해서 제가 직접 쓴 것 같은 느낌이 들었어요. 시간도 절약되고 아이디어 구상에도 도움이 돼서 앞으로 자주 사용할 것 같아요.

향후 계획

향후 서비스를 더욱 활성화하기 위하여 사용자 중심의 직관적인 UI/UX로 전면 개편하고 서비스 이용 프로세스를 개선할 예정입니다. 또한 더욱 다양한 AI 모델 도입과 아래와 세 가지 포인트와 같은 아키텍처 개선을 통해 서비스를 고도화할 계획을 수립하고 있습니다.

  • Cross region inference : cross region inference를 적용하여 급격한 수요 증가에도 대응 할 수 있도록 탄력성을 확보하고, 높은 처리량을 확보하여 보다 안정적인 서비스 제공이 가능하도록 합니다.
  • Prompt caching : 매번 레포트 본문을 프롬프트에 담아 전달하는 비효율, 고비용 적인 방법에서 세션 내 전달 된 레포트 본문을 캐쉬로 보관할 수 있는 방향으로 수정하여 보다 비용 효율적인 서비스가 될 수 있도록 개선합니다.
  • 검색증강생성 구성: 현재는 1차적으로 입력한 주제에 적합한 문서를 검색할 때 text/lexical search기반으로 검색을 하지만, 추후 주제별/문서파트별 레포트를 청킹하고 Amazon Titan embedding model을 통해 벡터 인덱스를 생성한 뒤 텍스트 기반 검색 및 시맨틱 검색을 결합한 Hybrid Search를 통하여 사용자 입력 주제에 대한 검색 혹은 초안이나 편집이 필요한 파트 생성 시 보다 폭 넓은 자료 검색이 가능하도록 합니다.

따라서 앞으로도 지속적인 모니터링과 사용자 피드백을 바탕으로 서비스를 개선해 나가고 AWS의 다양한 서비스를 활용하여 더욱 안정적이고 효율적인 서비스를 제공할 예정입니다. 이러한 노력을 통해 EasyAI는 사용자들에게 더욱 가치 있는 서비스로 자리매김할 수 있을 것으로 기대합니다.

한종욱 / 에이전트소프트

에이전트소프트에서 해피캠퍼스 사업부를 총괄하고 있는 한종욱입니다. 사용자들의 편의성과 가치를 최우선으로 생각하며 항상 발전하기 위해 노력하고 있으며, 최신 기술을 도입해 더 나은 사용자 경험을 제공하고자 합니다.

서영민 / 에이전트소프트

에이전트소프트 개발팀에서 검색엔진, AI, 아키텍처 리더를 맞고 있습니다. 다양한 검색어를 처리를 해주기 위해 항상 연구하고 AI 와 결합하여 더 나은 결과물을 제공해주기 위해서 노력하고 있습니다.

이구미 / 메가존클라우드

메가존클라우드 AI & Data Analytics Center에서 AI/ML 엔지니어로 근무 하며, ML pipeline 개발과 GenAI 프로젝트 위주로 담당하고 있습니다.

Kyoungeun Kim

Kyoungeun Kim

김경은 Solutions Architect는 다양한 비즈니스에서 고객이 AWS 솔루션을 통해 요구사항을 충족하고 비즈니스 성과를 달성할 수 있도록 최적의 아키텍처를 설계하기 위한 도움을 드리고 있습니다.