<p style="text-align:justify;">최근 구글의 주가를 하루 만에 5%나 올린 빅이벤트가 있었습니다. 바로 구글의 멀티모달 생성형 AI 서비스 제미나이(Gemini)가 공개됐기 때문인데요. 이번 글에서는 제미나이의 성능이나 비즈니스적 관점보다는 개발자로서 제미나이를 개발에 어떻게 활용할 수 있을지, 직접 제미나이 API를 써보고 느낀 점을 공유하고자 합니다.</p><div class="page-break" style="page-break-after:always;"><span style="display:none;"> </span></div><h3 style="text-align:justify;"><strong>제미나이 API 사용하기</strong></h3><p style="text-align:justify;">구글이 제미나이 API를 공개하기까지 채 일주일도 걸리지 않았는데요. 경쟁 모델인 ChatGPT에 비하면 매우 빠른 편입니다. (ChatGPT의 경우 AI 모델은 22년 11월에, API는 23년 3월에 공개되었습니다. 참고: <a href="https://openai.com/blog/introducing-chatgpt-and-whisper-apis"><u>OpenAI 블로그</u></a>)</p><p style="text-align:justify;"> </p><p style="text-align:justify;">이뿐만 아니라 주요 프로그래밍 언어로 파이썬(Python), 고(GO), 노드(Node.js), 자바스크립트(Web: Javascript SDK), 그리고 모바일 앱 개발자를 위한 스위프트(Swift)와 안드로이드(Android: Kotlin & Java)까지 사용 방법을 문서로 제공했습니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">아쉽게도 저는 R을 사용하고 있어서 준비된 문서는 없었지만, REST API를 제공하므로 이를 다듬어서 사용해 보았습니다.</p><p style="text-align:justify;"> </p><h4 style="text-align:justify;"><strong>API 발급</strong></h4><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_1.png"><figcaption><출처: Google AI Studio, 작가 편집></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">제미나이 API 발급은 먼저 구글 로그인 후, <a href="https://makersuite.google.com/app/apikey"><u>Google AI Studio</u></a>에서 별도 비용 없이 이용할 수 있습니다. 아직 프리뷰 단계이기 때문에 사용량이 많은 프로덕션 레벨의 사용은 어려울 수 있지만, 개인이 사용하기에는 충분합니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">발급 직후 터미널을 실행하고, API 키를 대체한 공식 문서의 예시 코드를 입력하여 작동을 확인할 수 있습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_2.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">공식 문서에 따르면 글에서 다루는 v1 beta API에서는 다양한 기능을 제공하지만, 저는 텍스트를 입력하여 글을 만들어내는 모델(gemini-pro)과 이미지와 텍스트를 같이 입력하여 글을 만들어내는 모델(gemini-pro-vison)을 사용했습니다.</p><p style="text-align:justify;"> </p><h4 style="text-align:justify;"><strong>R로 웹 애플리케이션 만들기 </strong></h4><p style="text-align:justify;">제가 사용하는 R의 경우 언어의 주 역할이 데이터를 입력받고 통계 계산한 결과를 만들어내는 것인데요. 샤이니(shiny)라는 프레임워크를 사용하면 웹 애플리케이션을 쉽게 만들어 낼 수 있습니다. 또는 이전에 글로 다뤘던<a href="https://yozm.wishket.com/magazine/detail/1827/"><u>파이썬 스트림릿</u></a>(streamlit)을 사용하는 것도 좋은 방법입니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">R로 웹 애플리케이션을 만들기 전, 간단하게 키노트로 그려본 전반적인 그림은 이렇습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:80%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_3.png"><figcaption><출처: Google AI for Developers, 작가 편집></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">그리고 실제 R을 활용해 웹 애플리케이션으로 만든 결과는 다음과 같습니다. (이미지를 올리기 전의 모습입니다)</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:80%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_4.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">이제 본격적으로 API를 위한 함수를 만들 차례입니다. 이 웹 애플리케이션에서는 한 번의 작동(Ask!)에 POST 방식의 API를 사용할 것이고, 이때 입력값으로는 모델 쿼리(URL)와 API키, 입력 콘텐츠가 필요합니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_5.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">아래 코드는 위 REST API 코드를 R로 바꾼 것입니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_6.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">이를 좀 더 다듬어서 “gemini”라는 함수로 만들고 실행한 결과는 다음과 같습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_7.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">gemini pro의 API 사용을 확인했으니, 다음으로는 본래 목적이었던 이미지와 텍스트를 같이 입력하는 gemini-pro-vision API를 사용해 보겠습니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">공식 문서에 따르면 이미지는 “inline_data”라는 이름으로 사용하며, 동시에 이미지를 전달하기 위해 Base64 인코딩 이후 사용해야 합니다. 마찬가지로 다듬어서 “gemini_image”라는 함수로 만들어 보겠습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_8.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">여기서 저는 요즘IT의 마스코트 ‘요고’ 캐릭터를 이미지로 업로드한 후, 제미나이 API를 사용했습니다. 결과는 다음과 같습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_9.png"><figcaption><출처: 요즘IT, 작가 편집></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">이제 아까 만들어 둔 웹 애플리케이션에 gemini 함수를 심고 사용한 결과를 보여드리겠습니다. (gemini와 gemini_image를 포함한 R 패키지는 제 <a href="https://github.com/jhk0530/gemini.R"><u>깃허브</u></a>에서 확인할 수 있습니다)</p><p style="text-align:justify;"> </p><p style="text-align:justify;">다음으로 최근 요즘IT에 발행된 ‘<a href="https://yozm.wishket.com/magazine/detail/2364/"><u>2023년 회고와 2024년 웹 개발 트렌드 전망’</u></a>의 그래프도 사용해 보았습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_10.png"><figcaption><출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">결과적으로 처음 구상했던 웹 애플리케이션을 몇 시간 만에 빠르게 만들 수 있었는데요. 애플리케이션에서 제미나이 API를 사용해 그래프를 해석하는 것 외에도 추가 맥락이 필요한 웹 어셈블리에 대해 설명해주는 것을 확인할 수 있었습니다. (이 웹 애플리케이션 또한 R에서 웹 어셈블리로 만들 수 있습니다)</p><p style="text-align:justify;"> </p><p style="text-align:justify;">또한 이번 글에선 다루지 않았지만, 제미나이 API에서 사용자와 AI가 대화하는 채팅(멀티턴 대화), 텍스트 임베딩 기능 또한 제공하고 있습니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><strong>바드 vs 제미나이 API</strong></h3><p style="text-align:justify;">이렇게 여러 기능을 제공하는 제미나이는 구글에서 먼저 공개한 생성형 AI ‘<a href="https://bard.google.com/chat"><u>바드</u></a>’에도 적용되었는데요. 제미나이 API를 쓰거나, 바드를 사용하는 두 가지 방법 모두 거의 동일한 수준의 결과를 만들어낼 수 있습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/2379/Fig_11.png"><figcaption><출처: 구글 바드, 작가 편집></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">그렇다면 제미나이 API와 제미나이가 업데이트된 바드 사용에는 어떤 차이점이 있을까요? 두 서비스를 비교해 보니 다음 4가지 정도로 추려졌습니다.</p><p style="text-align:justify;"> </p><ul><li style="text-align:justify;"><strong>접근 방법:</strong> 바드를 사용하면 bard.google.com에 접속해야 하지만, API를 이용해 별도의 프로덕트나 서비스에 심어 둔다면, 꼭 바드에 접속하지 않아도 제미나이를 사용할 수 있습니다. 이와 비슷한 예시로는 ChatGPT-4의 기능을 사용할 수 있는 서비스를 제공하는 뤼튼을 생각해볼 수 있습니다.<br> </li><li style="text-align:justify;"><strong>커스텀:</strong> 커스텀은 위 접근방법과 이어지는 내용인데요. API에서 나오는 결과값을 다르게 보여주거나, 필요한 모델만 사용할 수 있다는 점은 장점인 동시에, 추가 개발 작업이 필요하다는 단점이 되기도 합니다. (개발에 아직 익숙하지 않다면 바드를 사용) 또한 단순히 프롬프트를 올리고 결과를 받는 UI/UX 커스텀 외, LLM의 파라미터를 튜닝하지 않았다면, 바드와는 다른 결과 값을 보여주기에 이러한 파라미터 튜닝 또한 필요합니다. 그리고 바드에서는 제미나이의 여러 기능들을 일괄적으로 제공하지만, API를 사용한다면 모델에서 제공하는 기능만 사용할 수 있습니다.<br> </li><li style="text-align:justify;"><strong>사용량:</strong> 제미나이 API 공식 문서에 따르면 API 요청은 분당 60개를 사용할 수 있는데요. 바드에서는 사람이 직접 사용하는 만큼 60개보다 더 적은 요청만 할 수 있습니다.<br> </li><li style="text-align:justify;"><strong>비용:</strong> 아직까지는 바드와 제미나이 API가 둘다 비용 없이 무료로 사용할 수 있습니다. 그러나 ChatGPT 경우 월 20달러지만, API를 사용할 경우 모델과 사용량(토큰)에 따라 별도로 요금이 부과됩니다. 즉, 사용량이 많은 프로덕션 레벨에서 사용한다면 제미나이 API 또한 바드에 비해 높은 비용을 지출해야 할 수도 있습니다.<br> </li></ul><p style="text-align:justify;">위 내용을 정리해 보면 ‘사용 대상’에 따라 차이점이 생기는데요. 개인이 사용하기엔 바드로도 충분하지만, AI 스타트업처럼 서비스를 만들어 제공하기 위한 목적으로는 제미나이 API를 사용하는 것이 좋습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:60%;"><img src="https://yozm.wishket.com/media/news/2379/fig_12.png"><figcaption><출처: 레딧, <a href="https://www.reddit.com/r/ProgrammerHumor/comments/18i2n41/wontwork/"><u>r/programmerhumor</u></a>></figcaption></figure><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><strong>마치며</strong></h3><p style="text-align:justify;">지금까지 R에서 간단하게 제미나이 API를 활용해 보았는데요. 실제로 웹 애플리케이션을 만들어본 결과 개인이 작업하기엔 무리가 없었습니다. 다만 아직 초창기 서비스인만큼 규모가 큰 제품에서는 어떻게 활용할 수 있을지 좀 더 고민이 필요할 것 같습니다. 이미 구글은 제미나이가 성능 면에서 경쟁 LLM보다 우위에 있다고 발표하기도 했는데요. 사실 모델 자체의 퍼포먼스만큼이나 사용자의 프롬프트가 큰 영향을 줄 것이라 생각합니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">제미나이로 시작된 멀티모달 생성형 AI가 앞으로 어떤 혁신적인 서비스로 등장하게 될지 기대해 봐도 좋겠습니다.</p><p style="text-align:justify;"> </p><p style="text-align:center;"><span style="color:#999999;">요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.</span></p>