[독서] GPT API를 이용한 인공지능 앱 개발(2판) 후기

한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.
(작년에 이어 올해도 서평단으로 선정되었습니다..!)
도서 선택 이유
회사에서 RAG(Retrieval Augmented Generation)를 밑바닥부터 개발했습니다. 약 3개월 정도의 기간동안 빠르게 기획하고 문서를 구축하고 back에서 구동시킬 RAG 파이프라인을 만들었는데요. 일단 알고 있는 RAG 지식을 총동원하여 만들어 놓긴 했지만, 더 발전시키기 위해서는 LLM을 잘 이해하고 써야겠다는 생각이 들었습니다. 한번 LLM을 활용한 서비스를 만들고 나니, 다른 활용 방안은 또 뭐가 있을지, 실무에서 생성AI가 필요한 구석이 어디가 있을지 고민하기도 했구요. 이 책이 그런 고민에 도움이 될 것으로 생각해서 올해 서평단 첫 도서로 선정했습니다.
목차와 주요 내용
CHAPTER 1. GPT 모델과 챗GPT
LLM이란 무엇인지, GPT 버전별 특징이 무엇이며 무엇을 개선했는지 등을 소개합니다. LLM을 활용한 서비스들도 소개하는데요, 제가 작년 한해동안 하루에 한번씩은 꼭 했던 영어공부 어플인 듀오링고 또한 LLM을 활용했다고 하네요. 롤플레이를 하고 내가 말한 답변을 설명해주기 위해 GPT-4를 사용했다고 합니다. GPT 덕분에 이론적인 지식과 실제 언어 사이의 간극을 메울 수 있게 된 것이죠.
CHAPTER 2. 오픈 AI API
GPT 사용을 위해 API를 발급하고 활용하는 방법들을 소개합니다. 오픈 AI 라이브러리를 사용해 클라이언트를 생성하고, 모델을 호출해 사용하는 과정으로 시작합니다. (다들 잘 알겠지만 API 키는 보안으로 지켜야 하는 값이므로 소스에 노출시키지 말고 dotenv로 관리하기를 바랍니다..) 오픈 AI는 우리가 일반적으로 생각하는 생성 모델뿐만 아니라 텍스트를 벡터로 전환하는 임베딩 모델, 이미지 모델 등 다양한 활용을 제공하고 있습니다.
2.5.5 JSON 출력은 특히 여러 요소들이 연결된 파이프라인에서 중간에 LLM을 사용하면서 구조화된 출력이 필요할 때 유용하게 사용될 것 같습니다. RAG 과정 중에는 질문을 확장하여 재작성하는 Multi-query 단계가 있는데, 이 단계에서 사용자가 일상적인 용어로 작성한 질문을 비즈니스 용어가 적용된 3개의 질문으로 확장해야 했습니다. 질문을 재작성하는 건 룰 몇 개로 해결할 수 없는 복잡한 과정이기 때문에 GPT를 활용했는데요. GPT가 다시 써준 질문들은 텍스트 전처리 함수로 분리할 수도 있지만, 이 JSON 출력 방식을 활용하면 보다 정리된 형태로 값을 얻으면서 자동화된 구조에 활용할 수 있을 것 같습니다.
CHAPTER 3. LLM 기반 애플리케이션 개발
LLM으로 애플리케이션을 개발하는 과정을 소개합니다. 보안과 개인정보 보호를 위해 API를 관리하는 방안, LLM을 활용해 만들 수 있는 프로젝트들(기사 작성, 영상 요약, 문서 정리 등)을 설명합니다. (여담이지만 이 포스트는 LLM으로 작성된 것이 아닙니다,,) 특히 3.5 비용관리는 유익했습니다. RAG를 개발하며 다양한 작업을 수행하는 각각의 프롬프트가 필요했는데, 일부는 매우 길기도 했거든요. 원하는 답변 형식을 만들어내기 위해 여러 조건들을 넣었는데, 이 프롬프트를 좀 개선할 필요가 있겠다는 확신이 들었습니다. 서비스의 발전을 위해 프롬프트를 더 고민해보는 시간을 가져야겠습니다.(시간이 허락해준다면..)
CHAPTER 4. GPT-4o 및 챗GPT 활용 고급 기법
프롬프트 엔지니어링, 파인튜닝, RAG와 같이 GPT를 활용한 고급 기법들을 소개합니다. 프롬프트는 생성 결과에 큰 영향을 미치기 때문에 실제로 개발할 때에도 프롬프트를 변경하면 그때마다 매번 테스트 하는 과정이 필요했습니다. 어느 정도 정성/정량적인 평가 작업이기에 매우 고단한데요.. 그럼에도 생성AI를 사용한 서비스를 구축한다면 빠질 수 없는 과정이라고 생각합니다. 프롬프트 엔지니어링 시 필요한 요소, 팁들에 대해서도 공유하고 있으니 도서에서 직접 확인하면 좋을 것 같네요. RAG에 대한 소개도 유익한데요, 마지막에 저자의 말에 아주 공감하였답니다. RAG를 바닥부터 만들어보니 지식 베이스가 잘 갖춰져야 이를 자유자재로 응용한 서비스를 만들 수 있고, 그 서비스의 정확도도 보장될 수 있다는 것을 배웠습니다.
에이전트 행동과 채팅 기능을 도입해 시스템을 더욱 강력하게 만들 수 있습니다. 하지만 복잡해질 위험이 있고, 유지하기 어려우며, 비용이 많이 드는 솔루션을 더하기보다 높은 품질의 지식 베이스를 만드는 데 집중하는 것이 좋습니다.
/ GPT API를 이용한 인공지능 앱 개발 227p
CHAPTER 5. 프레임워크로 LLM 기능 높이기
랭체인, 라마인덱스와 같은 프레임워크로 보다 쉽게 LLM을 활용할 수 있는 방안을 소개합니다. 저는 라마인덱스는 자세히 알아본 적이 없어서, RAG 기반 솔루션을 만들기 좋은 프레임워크라는 것을 처음 알았는데요. 미리 알았다면 랭체인 대신 라마인덱스를 활용해봤을 것 같네요..
챕터5에서는 또한 오픈AI 웹사이트 플레이그라운드에서 어시스턴트를 생성하고 사용하는 방법도 소개하고 있습니다. 저도 이전에 간단하게 사용해본 경험이 있는데요, 문서 데이터를 순식간에 처리하고 그 데이터 안에서 질문에 대응하는 답변을 찾아 제공하는 것을 확인할 수 있었습니다. 어렵게 청킹 방법을 고민하고 어쩌고 하는 과정 없이 문서만 올리면 되어서 편하더라구요.(벡터 스토어 비용은 들겠지만요)
메인 챕터 외에 비교적 최근 모델인 o1에 대한 설명도 appendix로 제공하고 있어 흥미롭게 읽었습니다. 내부적으로 추론을 수행하기 때문에 CoT 프롬프트를 사용할 필요도 없고, 전보다 복잡한 일을 잘하게 된 것은 분명해 보입니다. 인내심을 갖고 답변을 기다려야 하긴 하지만요. 회사에서 숫자를 이용해야하는 복잡한 서비스에 대한 요구사항이 있었는데요. 이 모델을 이용해서 테스트 해보아도 재밌을 것 같습니다.
도서 후기 요약
정리하자면 이 책은 GPT와 LLM의 기본 개념과 특징, 사용 방식과 LLM 관련 고급 기법에 대해 전반적으로 소개하고 있습니다. (책 소개에도 있긴하지만) GPT 관련 개념을 정리, 이해하고 실습을 진행해서 기본기를 쌓고 싶은 사람들, 파이썬 기반 앱에 AI를 넣어보고 싶은 사람들에게 도움될 것 같습니다. 다만 LLM의 원리에 대해서 파헤치는 내용은 아니기 때문에, 이미 LLM이나 관련 서비스에 대한 개념을 익힌 사람에게는 특별하게 새로운 것이 없을 수도 있을 것 같습니다. 그래도 실용적인 서비스 개발을 위해 코드를 오픈하여 제공하고 있으니 빠른 테스트를 해보고 싶은 사람들이라면 아주 유용할 것 같습니다.