개요
회사에서 개발하고 있는 크롤러가 있다. 이 크롤러를 이용할때 이미지에 대해 음식 사진인지 아닌지 판별하는 용도(1) 음식에 대한 특정 키워드를 뽑아내는 용도(2) 로 사용하고자 한다.
해당 작업을 하기위해 프롬프트를 짜야되는데 프롬프트 짜는 법과 파이썬에서 해당 프롬프트를 이용해서 원하는 변수를 얻는 것까지 해보고자 한다.
시작하기 전에 정리해야될 게 몇개 있다.
- 토큰 수 제한
- AI를 사용할 때 사용자가 과도하게 사용하지 않게 하려고 API에서 특정 개수 만큼의 토큰에 대한 제한을 설정해 놓는다. AI에서 이미지의 경우 기본적으로 텍스트보다 토큰을 많이 사용하는 것으로 알고 있다. 이 부분을 찾아봐야한다.
- AI 모델 결정
- 무료로 사용할 수 있는 AI 모델은 제한 적일 것으로 생각이 들고, 유료의 경우 어떻게 사용하며 되는지 구독해야 하는지 여부를 확인해봐야 한다.
- 실제 코드 구현할 때 Best Practice
- 실제 이미지 분석을 시킬 때 프롬프트에 따라 결과물이 굉장히 다를 것이라 생각이 든다. 혹시 예시 프롬프트를 어떻게 날리는 지 그리고 어떻게 내 코드에서 활용할 수 있을지 알아봐야 한다.
시작 해보자.
AI 모델 찾기
일단 무료로 이용할 수 있는 모델을 찾아 보았다.
이런... 무료로 사용할 수 있는 모델이 없거나 제한적인 듯 하다.
혹시 내가 잘못 검색했나 싶어서 검색을 아주 잘해주는 perplexity를 이용해서 물어보았다.
이렇게 물어보니까 무료로 사용할 수 있는 모델은 아주 제한적이며, 월별 요청 제한이 있다고 한다. 사용할 수 있는 모델은 아래와 같다.
- Google Cloud Vision API
- Microsoft Azure Computer Vision
- Clarifai
- TensorFlow.js 또는 ONNX.js를 사용한 클라이언트 사이드 모델
혹시 나와 비슷한 사례가 없는지 하여 검색해보니 이 링크에서 Google Cloud Vision API를 이용해서 음식 사진을 판별한 예시가 있는 것을 알 수 있었다.
일단 모델은 Google Cloud Vision API를 사용하는 게 좋을 것 같다...
근데 GPT 등 보편적으로 사용하는 AI 모델들은 다 API를 사용하기 위해서는 일정 금액을 미리 충전하고 사용량에 따라 부과되는 걸 처음 알아서 그런지 매우 충격적이다... 웹에서 프롬프트를 작성해서 전송하는 경우 특정 모델은 거의 무제한으로 상호작용이 가능해 막연하게 API도 동일하지 않을까 생각하긴 했다... 하긴 땅 파서 장사하는 것이 아닌게 맞지...
그럼 이제 Google Cloud Vision API가 어떤 가격 정책과 제한을 가지고 있는지 알아보자.
Google Cloud Vision API은 각 기능 별 월 1,000 건을 무료로 제공해주고 1,001건이 되는 순간 요금이 부과된다. 여기서 좋은 포인트는 "각 기능"이다. Google Cloud Vision API은 여러 개의 기능으로 세분화 되어 있다.
기능단위 | 처음 1,000개 단위/월단위 | 1,001 ~ 5,000,000개/월단위 | 5,000,001개 이상/월 |
라벨 인식 | 무료 | $1.50 | $1.00 |
텍스트 인식 | 무료 | $1.50 | $0.60 |
문서 텍스트 인식 | 무료 | $1.50 | $0.60 |
세이프서치(유해성 콘텐츠) 감지 | 무료 | 라벨 인식 이용 시 무료 또는 $1.50 | 라벨 인식 이용 시 무료 또는 $0.60 |
얼굴 인식 | 무료 | $1.50 | $0.60 |
얼굴 인식 - 유명인 인식 | 무료 | $1.50 | $0.60 |
랜드마크 인식 | 무료 | $1.50 | $0.60 |
로고 인식 | 무료 | $1.50 | $0.60 |
이미지 속성 | 무료 | $1.50 | $0.60 |
자르기 힌트 | 무료 | 이미지 속성 이용 시 무료 또는 $1.50 | 이미지 속성 이용 시 무료 또는 $0.60 |
웹 감지 | 무료 | $3.50 | 자세한 내용은 Google에 문의 |
객체 위치 측정 | 무료 | $2.25 | $1.50 |
공식 문서에는 아래와 같은 예시로 설명이 되어 있다.
특정 달에 애플리케이션에서 다음과 같이 요청했다고 가정합니다.
라벨 인식 이용 이미지 700개
랜드마크 인식 이용 이미지 5,300개
비용은 다음과 같습니다.
라벨 인식 요청 700개 - $0
랜드마크 인식 요청 처음 1,000개 - $0
랜드마크 인식 요청 나머지 4,300개 - $7.50. 요청 1,000개로 이루어진 블록 단위로 가격이 책정됩니다. 예를 들어 4,000개의 요청은 4 * $1.50로 계산됩니다. 4,001개부터 5,000개까지는(이 예시의 요청 4,300개가 여기에 해당) 총계가 다음(5번째) 1,000개 블록으로 적용되므로 기존 비용에 $1.50가 더 추가되어 5 * $1.50, 즉 총 $7.50의 비용이 발생합니다.
총 비용은 $7.50입니다.
상세한 내용은 링크에서 확인 가능하다.
근데 월 1,000건이면 음식 사진을 분석하는 데 매우 모자랄 것이라고 생각이 든다... 크롤링을 통해 이미지를 가져와서 분석하려고 하는데, 물론 판단은 API가 잘 해주겠지만 음식 사진이 워낙 많아 1,000 건이면 모자랄 것이라 생각이 든다.
조금 더 찾아보니 Base64로 인/디코딩 하면 더 많은 이미지를 한 묶음으로 사용할 수 있다고 하는 것 같은데 그것 또한 이미지 크기 제한이 20MB로 정해져 있기 때문에 쉽지 않다...
AI를 사용하지 않는 방향을 알아봐야겠다...