CountTokens API

CountTokens API는 Gemini API에 요청을 전송하기 전에 입력 토큰 수를 계산합니다. CountTokens API를 사용하면 요청이 모델 컨텍스트 윈도우를 초과하지 않도록 방지하고 청구 가능한 문자를 기준으로 잠재적 비용을 예측할 수 있습니다.

사용자는 Gemini API 추론 요청에서 사용하는 것과 동일한 contents 매개변수를 전송할 수 있습니다.

지원되는 모델:

  • Gemini 1.0 Pro
    • gemini-1.0-pro
    • gemini-1.0-pro-001
    • gemini-1.0-pro-002
  • Gemini 1.0 Pro Vision
    • gemini-1.0-pro-vision
    • gemini-1.0-pro-vision-001
  • Gemini 1.0 Ultra
    • gemini-1.0-ultra
    • gemini-1.0-ultra-001
  • Gemini 1.0 Ultra Vision
    • gemini-1.0-ultra-vision
    • gemini-1.0-ultra-vision-001
  • Gemini 1.5 Pro
    • gemini-1.5-pro-preview-0409
  • Gemini Experimental
    • gemini-experimental

제한사항:

  • gemini-1.0-pro-vision-001gemini-1.0-ultra-vision-001은 동영상 입력에 고정된 수의 토큰을 사용합니다.

구문

  • PROJECT_ID = PROJECT_ID
  • 리전 = REGION
  • MODEL_ID = MODEL_ID

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:countTokens \
  -d '{
    "contents": [{
      ...
    }]
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.count_tokens([...])

매개변수 목록

이 클래스는 roleparts라는 두 가지 기본 속성으로 구성됩니다. role 속성은 콘텐츠를 생성하는 개별 사용자를 나타내고 parts 속성은 여러 요소를 포함하며, 각 요소는 메시지 내의 데이터 세그먼트를 나타냅니다.

매개변수

role

선택사항: string

메시지를 생성하는 항목의 ID입니다. 문자열을 다음 중 하나로 설정합니다.

  • user: 실제 사람이 메시지를 보냈음을 나타냅니다. 예를 들어 사용자 생성 메시지가 있습니다.
  • model: 메시지가 모델에 의해 생성되었음을 나타냅니다.

model 값은 멀티턴 대화 중에 모델의 메시지를 대화에 삽입하는 데 사용됩니다.

멀티턴이 아닌 대화의 경우 이 입력란을 비워 두거나 설정하지 않을 수 있습니다.

parts

part

단일 메시지를 구성하는 순서가 지정된 부분의 목록입니다. 부분마다 IANA MIME 유형이 다를 수 있습니다.

일부

매개변수

text

선택사항: string

텍스트 프롬프트 또는 코드 스니펫

inline_data

선택사항: blob

원시 바이트의 인라인 데이터

file_data

선택사항: FileData

파일에 저장된 데이터

Blob

매개변수

mime_type

string

데이터의 IANA MIME 유형입니다.

data

bytes

원시 바이트

FileData

매개변수

mime_type

string

데이터의 IANA MIME 유형입니다.

file_uri

string

데이터를 저장하는 파일의 Cloud Storage URI

예시

  • PROJECT_ID = PROJECT_ID
  • 리전 = REGION
  • MODEL_ID = MODEL_ID

기본 사용 사례

이 예시에서는 단일 텍스트 프롬프트에서의 사용법을 보여줍니다.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:countTokens \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Write a story about a magic backpack."
      }]
    }]
  }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.count_tokens("Write a story about a magic backpack.")

print(model_response)

고급 사용 사례

이 예시에서는 단일 프롬프트 내에서 미디어를 사용하는 방법을 보여줍니다.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:countTokens \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [
        {
          "file_data": {
            "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4",
            "mime_type": "video/mp4"
          }
        },
        {
          "text": "Provide a description of the video."
        }
      ]
    }]
  }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel, Part

vertexai.init(project=PROJECT_ID, location=REGION)

contents = [
    Part.from_uri(
        "gs://cloud-samples-data/generative-ai/video/pixel8.mp4", mime_type="video/mp4"
    ),
    "Provide a description of the video.",
]

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.count_tokens(contents)

print(model_response)

더 살펴보기

자세한 문서는 다음을 참조하세요.