LLM에 도구를 노출할 때 드는 입력 토큰과 비용을 추정합니다. 도구 정의(이름, 설명, 매개변수 스키마)는 도구의 실제 사용 여부와 관계없이 모든 호출에 함께 전송됩니다.
입력
도구
모델에 노출하는 도구 또는 함수의 개수입니다. 각 도구의 전체 정의가 모든 호출에 전송됩니다.
도구 정의 하나의 평균 토큰 수로, 이름과 설명, 매개변수에 대한 JSON 스키마를 포함합니다. 단순한 도구는 약 80개 정도이며, 설명이 많은 매개변수를 가진 도구는 수백 개에 이를 수 있습니다.
호출량과 단가
추정 대상 기간 동안 이 도구 정의를 함께 싣는 요청의 횟수입니다.
$
제공자가 입력 토큰 100만 개당 부과하는 금액입니다. 도구 정의는 입력 요율로 청구됩니다.
래퍼 토큰
결과
값을 입력하면 계산 결과가 표시됩니다.
도구 정의가 한 요청에 더하는 입력 토큰입니다. 도구 5개를 각 80 토큰으로 계산한 값에 래퍼 토큰 16개를 더합니다.
$
오버헤드 토큰 ...개를 100만 개당 3 $ 단가로 청구한 비용으로, 대화가 아니라 도구 정의를 싣는 데 쓰인 청구액의 몫입니다.
세부 정보
전체 1,000회 호출에 걸친 도구 오버헤드로, 호출당 ... 토큰에 호출 수를 곱한 값입니다.
함수 호출 토큰 오버헤드
함수 호출 토큰 오버헤드는 대규모 언어 모델에 도구를 사용할 수 있게 만드는 데 드는
입력 측 비용입니다. 모델이 도구를 호출할지, 어떻게 호출할지 판단하게 하려면 제공자는
각 도구의 정의 — 이름, 자연어 설명, 매개변수에 대한 JSON 스키마 — 를 모델이 읽는
프롬프트에 직렬화해 넣습니다. 이 정의는 토큰으로 이루어져 있고, 도구가 실제로
사용되는지와 관계없이 모든 요청에 전송됩니다. 이 계산기는 호출마다 고정으로 드는
이 오버헤드와 호출량 전반에 걸쳐 누적되는 반복 비용을 따로 떼어 보여 줍니다.
도구가 모든 호출에 청구되는 이유
모델은 요청 사이에 상태를 유지하지 않습니다. 한 호출의 내용을 다음 호출에서 기억하지
못하므로, 사용할 수 있는 도구는 매번 새로 설명되어야 합니다. 도구를 한 번 등록해
두었다가 나중에 저렴하게 참조하는 방법은 없으며, 전체 정의가 모든 호출의 입력에
실려 옵니다. 모델이 어떤 도구도 호출하지 않고 곧바로 답하는 요청이라도, 선택지를
제공하기 위해 정의가 전달되었으므로 그 비용을 지불합니다. 따라서 비용은 노출한 도구의
수와 스키마의 장황함에, 모델을 호출하는 빈도를 곱한 만큼 늘어납니다.
공식
도구 개가 각각 토큰이고 도구 블록을 감싸는 래퍼 토큰이 일 때,
호출당 오버헤드는 다음과 같습니다.
tcall=m⋅ttool+tw
회 호출 전반에서 총 오버헤드와, 백만 토큰당 입력 단가 로 환산한 비용은
다음과 같습니다.
TC=tcall⋅n=106Tp
으로 나누는 것은 100만 개당 단가를 토큰당 요율로 환산하기 위함입니다. 도구
정의는 모델이 읽으므로 입력 요율로 청구되며, 이는 보통 공개된 두 단가 중 낮은 쪽입니다.
계산 예시
도구 14개를 노출하고 그 정의가 평균 120 토큰이며, 블록을 감싸는 래퍼 토큰이 18개인
에이전트를 가정해 보겠습니다. 호출당 오버헤드는 다음과 같습니다.
tcall=14×120+18=1,698토큰
100만 토큰당 입력 단가 $3로 25,000회 호출에 걸쳐 실행하면 오버헤드 비용은
다음과 같습니다.
이 $127.35는 사용자 메시지나 모델 답변이 한 토큰도 계산되기 전에 쓰이는 비용으로,
오직 매 요청에서 도구를 설명하는 데에만 들어갑니다. 에이전트가 14개 전부 대신 각
작업에 관련된 소수의 도구만 노출하도록 라우팅하면 이 수치는 몇 배로 줄어듭니다.
참고와 변형
도구당 토큰 수는 각 도구를 얼마나 상세히 설명하는지에 크게 좌우됩니다. 자세한
매개변수 설명과 다수의 선택적 필드는 스키마를 부풀리고, 간결한 정의는 작게 유지됩니다.
여기서 측정하는 오버헤드는 순전히 도구 블록만을 가리키며, 대화 토큰과 모델이 내보내는
도구 호출 인자는 별개입니다. 도구 블록이 호출 전반에 걸쳐 안정적일 때는 프롬프트
캐싱으로 반복 비용을 줄일 수 있는데, 캐시된 읽기는 낮은 요율로 청구되기 때문입니다.
활용
함수 호출 오버헤드는 청구의 입력 측에 자리합니다. 그 출력 측 대응물 — 모델이 스키마에
맞춰 답할 때 되돌려 쓰는 JSON 골격 — 은 구조화된 출력 오버헤드 계산기에서
다룹니다. 이 오버헤드가 도출되는 바탕인 호출당 토큰 사용량의 단가를 매기려면
토큰 비용 계산기를 참고하시기 바랍니다.
자주 묻는 질문 (FAQ)
도구는 왜 토큰을 소비합니까?
모델이 도구를 호출하려면 그 도구가 존재한다는 사실과 사용 방법을 알아야 합니다. 제공자는 각 도구의 이름, 자연어 설명, JSON 매개변수 스키마를 모델이 읽는 프롬프트에 직렬화해 넣습니다. 직렬화된 이 블록은 토큰으로 이루어져 있고 모든 요청의 입력 측에서 처리되므로, 노출한 도구는 모델이 답변을 한 글자도 쓰기 전에 입력 토큰 수에 더해집니다.
도구 오버헤드를 어떻게 줄일 수 있습니까?
매 호출에 전체 목록을 싣는 대신 현재 작업과 관련된 도구만 노출하는 것이 가장 큰 지렛대이며, 도구 집합을 라우팅하거나 필터링하는 방식이 여기에 해당합니다. 장황한 매개변수 설명을 다듬고 거의 쓰이지 않는 선택적 매개변수를 제거하면 정의 하나의 크기가 줄어듭니다. 오버헤드는 호출마다 지불되므로 절감 효과는 호출량이 많은 작업에서 누적되며, 더 간결한 도구 집합은 모델의 도구 선택 정확도도 높이는 경향이 있습니다.
도구 정의는 모든 호출에 전송됩니까?
그렇습니다. 모델은 요청 사이에 상태를 유지하지 않으므로, 도구 정의는 한 번 등록되는 것이 아니라 각 호출의 입력에 포함됩니다. 모델이 어떤 도구도 호출하지 않고 곧바로 답하는 요청이라도, 선택지를 제공하기 위해 정의가 전송되었으므로 그 비용을 지불합니다. 도구 블록이 호출 전반에 걸쳐 안정적일 때는 프롬프트 캐싱으로 반복 비용을 줄일 수 있는데, 캐시된 읽기는 낮은 요율로 청구되기 때문입니다.
면책조항
토큰 수치는 모델의 토크나이저와 제공자가 도구 정의를 직렬화하는 방식에 따라 달라지는 추정치입니다. 공개 단가는 시간이 지나면 변하며 캐싱이나 배치 할인은 제외될 수 있습니다. 청구를 위해 수치에 의존하기 전에 현재 요율과 정확한 토큰 수를 제공자에게 확인하시기 바랍니다.