김플닷넷

파이썬, 챗GPT, 프로그래밍 팁, 인공지능

인공지능파이썬

GPT-4o, GPT-4o mini 비전(Vision) 사용 토큰 계산

OpenAI의 인공지능 모델 GPT-4o와 GPT-4o mini에는 비전(Vision) 기능이 있어 모델이 이미지를 입력받아 이미지에 대한 질문에 답할 수 있습니다.
그런데 비전을 사용할 때 GPT-4o mini는 GPT-4o와 비교해서 엄청난 양의 토큰을 사용합니다. 왜 그럴까요?

두 모델의 가격은 100만 토큰당 gpt-4o 입력(input) 5달러, 출력(output) 15달러, gpt-4o-mini 입력(input) 0.15달러, 출력(output) 0.6달러로 인풋 약 33배, 아웃풋 약 25배의 차이를 보입니다.
그러나 비전(Vision) 가격은 150px by 150px = 0.001275달러로 동일합니다. 그렇다면 토큰은 어떻게 사용될까요?

파이썬으로 OpenAI API를 사용한 GPT-4o 및 GPT-4o-mini Vision 모델 활용 코드

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
                    },
                },
            ],
        }
    ],
)

print(response.choices[0].message.content)
print(response.usage)

같은 이미지로 모델만 바꿔가며 테스트를 진행했습니다. 이미지만 입력하기 위해 messages의 content에서 text는 생략했습니다.
아래 이미지는 image_url의 이미지입니다.

gpt-4o와 gpt-4o-mini에 전송하는 image_url 이미지
print(response.choices[0].message.content)
print(response.usage)

응답받은 내용에서 메세지와 사용한 토큰만 출력하기 위한 코드입니다.

먼저, model을 gpt-4o로 지정하여 실행을 했습니다.

gpt-4o 응답 메세지와 토큰 사용량

입력받은 이미지에 대한 내용과 토큰 사용량입니다.
completion_tokens=73, prompt_tokens=1112, total_tokens=1185

completion_tokens: 응답받은 메세지에 사용된 토큰
prompt_tokens: 프롬프트로 사용한 토큰. 여기에서는 입력한 이미지가 사용한 토큰
total_tokens: 총 합

다음은 gpt-4o-mini로 실행한 결과입니다.

gpt-4o-mini 응답 메세지와 토큰 사용량

completion_tokens=52, prompt_tokens=36842, total_tokens=36894
두 번의 실행 모두 응답받은 메세지의 길이가 짧기 때문에 사용된 토큰도 적습니다. 하지만 prompt_tokens이 각각 1112개와 36842개로 엄청난 차이를 보입니다.
계산을 해보면 인풋 가격차이와 동일한 약 33배의 프롬프트 토큰을 사용하였습니다.

gpt-4o, gpt-4o-mini 두 모델의 비전 사용 가격은 같은데 gpt-4o-mini의 토큰 가격이 훨씬 저렴하기 때문에 토큰을 더 많이 사용한 것입니다.

관련 글: OpenAI GPT-4o mini 모델 발표 – 가장 비용 효율적인 소형 모델