制約なしモデルにおけるトークンカウントの理解
各セクションの最初の文は、見出しの質問に答えます。トークンカウントは、任意のLLMプロキシの請求の基本単位です。プロンプトで送信されるトークンごとに、応答で生成されるトークンごとに請求されます。これにはシステム指示、会話履歴、フォーマット文字が含まれます。
多くの開発者は、表示されるテキストだけがカウントされると考えています。これは誤りです。空白、改行、JSONの括弧すべてがトークンを消費します。アンセーザードモデルを使用すると、安全フィルターなしで一貫性を維持するために冗長な推論が必要になることが多いため、コンテキストウィンドウはより早く埋まります。
当社のAPIは、入力トークン100万トークンあたり$0.15、出力トークン100万トークンあたり$0.50を課金します。この料率は実際のトークン使用量に適用されます。エラーの場合、課金されません。拒否された場合は無料です。この構造により、実際の計算に対してのみ課金されます。
curl https://api.claudeapiproxy.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "get the current server time in ISO format"}]
}'- システムプロンプトのすべての文字数をカウントします。
- 入力カウントに会話履歴を含めます。
- JSONフォーマットオーバーヘッドのためのアカウント。
- 大量のペイロードを送信する前にトークン数を確認してください。
コンテキストウィンドトラップ:100k入力 vs 16k出力
当社のAPIは100,000トークンのコンテキストウィンドールを提供しますが、リクエストあたり生成できるトークンは16,000トークンに制限されます。この非対称性は、無限の出力が期待されるユーザーにとって課金トラップとなります。
プロンププトークンが90,000トークン消費した場合、出力に残っているトークンは10,000トークンだけです。最大16,000トークンをリクエストした場合、モデルは早期に停止します。実際に生成されたトークンに対しては課金されます。これはバグではありません。長いコンテキストウィンドウの機能です。
多くのユーザーは、max_tokensを過度に高く設定することでクレジットを無駄にします。モデルがコンテキストを使い果たすと、自然に停止します。あなたは生成されたものに対して支払い、生成できなかったものに対しては支払いません。
from openai import OpenAI
client = OpenAI(base_url="https://api.claudeapiproxy.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)常に残りのコンテキストを監視してください。/v1/modelsエンドポイントを使用して現在の制限を確認し、出力の余地を残すようにプロンプトの長さを調整してください。これにより、トリミングされたレスポンスによる予期せぬ課金を防げます。
ストリーミング応答と最終チャンク課金
ストリーミングは総コストを変更しません。即時に取得するか一括で取得するかにかかわらず、同じトークンに対して課金されます。異なる点は、使用方法を追跡する方法です。
ストリーミング時、複数のチャンクが返されます。各チャンクにはレスポンスの一部が含まれます。最後のチャンクにはトークン使用量のサマリーが含まれます。ここで正確なトークン数を確認します。
一部のプロキシはチャンクごとに課金します。当社はしません。当社は生成された総トークンに対して課金します。ストリーミングモードはユーザーエクスペリエンスのためであり、課金の効率化のためではありません。
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)- リアルタイムのUI更新のためにストリーミングします。
- 課金のための中間チャンクを無視。
- トークン数を確認するために最終チャンクを読む。
- 使用量があなたの期待に合致しているか確認します。
ツール使用における関数呼び出しのオーバーヘッド
関数呼び出しは、ツール定義がすべてのリクエストで繰り返されるため、大きなオーバーヘッドを追加します。関数を呼び出すたびに、モデルはツールスキーマを再読み込みする必要があります。
5つのツールがあり、それぞれに1,000トークンの定義がある場合、すべてのリクエストに5,000トークンが追加されます。これにより入力コストが大幅に増加します。長い会話では、このオーバーヘッドが累積します。
当APIは関数呼び出しとtool_choiceをサポートしています。ツールの複雑さを減らすことで最適化できます。関連するツールを単一のスキーマに結合します。これにより、1回あたりのリクエストあたりのトークン数を減らすことができます。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.claudeapiproxy.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);トークン使用量を注意深く監視してください。関数呼び出しの大量発生は入力コストを2倍にすることがあります。可能であればツール定義のキャッシュを使用してください。これにより、前払いクレジットの持続時間を延ばすのに役立ちます。
なぜ拒否は無料だが再試行は有料なのか
拒否は無料であり、トークンが生成されなかったためです。モデルがコンテンツや形式の理由でリクエストを拒否した場合、料金は発生しません。これは前払い課金の主な利点です。
リトライは無料ではありません。リクエストを送信してエラーが発生した場合、リトライが必要になる場合があります。各リトライはトークンを消費します。エラー自体は無料ですが、リトライにはコストがかかります。
当社のAPIは、実際のトークン使用量のみを課金します。トークン生成前にリクエストが失敗した場合、料金はかかりません。失敗した場合、生成された分に対してのみ課金されます。この透明性により、隠れた手数料が防止されます。
curl https://api.claudeapiproxy.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "get the current server time in ISO format"}]
}'- 拒否にはクレジットがゼロかかります。
- リトライは予算を消費します。
- トークンが生成されない場合、エラーは無料です。
- 効率化のためにリトライを監視します。
JSONモードのフォーマットコスト
JSONモードのフォーマットコストは標準テキストモードと同じです。JSON出力のトークンに対して課金されます。フォーマットにより追加料金は発生しません。
ただし、JSON出力は通常、プレーンテキストよりも多くのトークンを必要とします。モデルは有効なJSONを確保するために余分な空白やキーを追加することがあります。これにより出力コストが増加します。
当社のAPIはresponse_formatを介してJSONモードをサポートしています。厳格なJSON出力を強制できます。これにより、クライアントコードとの互換性が確保されます。コストはフォーマットではなくトークン単位で計算されます。
from openai import OpenAI
client = OpenAI(base_url="https://api.claudeapiproxy.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)トークン数を削減するためにJSONスキーマを最適化する。不要なキーを削除してください。短い変数名を使用してください。これにより、データの整合性を維持しながらコストを最小限に抑えることができます。
プロキシコストと直接ベンダー料金の比較
Proxyのコストは、トークンのみに対して課金するため、直接ベンダーの価格よりも低いことがよくあります。直接ベンダーは、稼働時間、サポート、モデルバージョンに対して課金することがあります。当社のAPIは、入力トークン100万トークンあたり$0.15、出力トークン100万トークンあたり$0.50を課金します。
AnthropicやOpenAIなどの直接ベンダーは複雑な価格体系を持っています。異なるモデルに対して異なる料金を課金する場合があります。当社のAPIは単一の無制限モデルを提供します。これにより請求が簡素化されます。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.claudeapiproxy.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);- Proxyの請求は透明で、前払い制です。
- 直接ベンダーには隠れた料金がある場合があります。
- 当社のモデルは検閲がなく、オープンウェイトです。
- 価格だけでなく、トークン数も比較してください。
会話あたりの実質コストの計算
会話あたりの効果的なコストはトークン使用量に依存します。送信および受信されたトークンの合計を計算します。100万トークンあたりのレートで乗算します。これにより、正確なコストが得られます。
例えば、会話が10,000トークンの入力と5,000トークンの出力を使用する場合、費用は$0.0015 + $0.0025 = $0.004です。これはほとんどの用途において無視できる金額です。
curl https://api.claudeapiproxy.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "get the current server time in ISO format"}]
}'平均的な会話の長さを追跡します。プロンプトを最適化して入力トークンを削減します。これにより、コストを正確に予測できます。前払いクレジットは期限切れにならないため、長期計画を立てることができます。
前払いクレジットでの二重請求ミスを避ける
二重請求は稀ですが発生する可能性があります。暗号通貨でチャージする場合は、正しい金額を送信してください。当社のAPIは実際のトークン使用量のみを課金します。誤りはサポートページを介して修正されます。
from openai import OpenAI
client = OpenAI(base_url="https://api.claudeapiproxy.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)- トランザクションハッシュを確認してから追加入金します。
- 各リクエスト後に残高を確認してください。
- エラーを直ちに表示して返金を受けましょう。
- 取引の記録を保持してください。