ChatGPT API로 사진의 채점이나 인상 분석 등, 세부적인 읽기가 필요하지 않은 이미지 분석을 수행할 경우, 저는 다음 설정을 사용하고 있습니다.
사용하는 모델은 gpt-5-mini 입니다. (Chat Completions 권장) (Flex 권장. 확실하게 그것으로 처리된다고 단정할 수는 없으나 429 에러가 발생하면 Flex가 아닌 쪽을 사용합니다)
const userContent = [
{ type: "text", text: userText },
{
...
포인트는 다음 3가지입니다.
- 이미지를 WebP 형식으로 압축한다
- Data URL 전체를 최대 28,000자 정도로 만든다
detail: "low"를 지정한다
detail: "low"를 지정하면, 이미지는 저해상도 모드 (low resolution mode)로 처리되어, 세부 사항보다는 전체적인 내용 파악에 적합한 분석이 됩니다. 사용 토큰 (token)도 억제하기 쉽기 때문에, 사진의 인상 등을 분석하는 용도로는 개인적으로 충분하다고 느꼈습니다.
이미지 부분의 input은 거의 0에 가까울 것으로 생각되므로, input 2600 (일본어 3000자 정도의 문장 부분 + 이미지의 input), output 3000 (출력 1500, Reasoning 1500) 정도가 될 것이라고 생각합니다.
if (DEBUG_MODE) {
const usage = data?.usage ?? {};
const details = usage.completion_tokens_details ?? {};
...
따라서 1회 실행 시 0.6엔 정도가 될 것으로 보입니다.
다음 페이지에서는 이미지를 WebP로 압축하고, 원본 이미지와 압축 후의 이미지를 나란히 놓고 확인할 수 있습니다.
초기 설정에서는 Data URL 전체가 28,000자 이내가 되도록 단계적으로 압축합니다. 이미지는 외부로 전송되지 않으며, 압축 후의 이미지 크기나 글자 수도 확인할 수 있습니다.
단, 이 페이지에서 확인할 수 있는 것은 API로 보내기 전의 WebP 압축 후의 화질입니다. 실제로는 그 이미지를 다시 detail: "low"로 처리하는 이미지가 됩니다.
글자 읽기, 작은 물체의 판별, 미세한 상처 확인 등에는 적합하지 않지만, 이미지를 뭉뚱그려 채점하는 용도로는 화질, 통신량, 처리 비용의 균형을 맞추기 쉬운 설정이라고 생각합니다.