ベストプラクティス
本番環境の最適化
TokSpan 統合から最小のレイテンシ、最大のスループット、最小のコストを実現します。これらは弊社の本番スタックで実際に使用しているパターンです。
レイテンシの最小化
接続プーリングの使用
HTTP接続を再利用すると、リクエストごとのTLSハンドシェイクオーバーヘッドが排除されます(1回の呼び出しあたり約50~100msの節約)。OpenAI SDKは接続を自動的にプールしますが、本番環境ではプールサイズを調整してください:
import httpx
from openai import OpenAI
# Production-grade client with connection pooling
client = OpenAI(
api_key="sk-your-key",
base_url="https://api.tokspan.com/v1",
http_client=httpx.Client(
limits=httpx.Limits(
max_keepalive_connections=20,
max_connections=50,
),
timeout=60.0, # total timeout
),
)インタラクティブUXのための常時ストリーミング
ユーザー向けの全リクエストで stream: true を設定してください。ストリーミングは完全なレスポンスを5~30秒待つ代わりに、約100msで最初のトークンを配信します。実装については Chat Completions — ストリーミング を参照してください。
エッジルーティング(自動)
TokSpanのDNSは api.tokspan.com を最も近いエッジロケーションに自動解決します。設定は不要です。セルフホスト展開の場合は、5ms未満のネットワークオーバーヘッド を実現するためにアプリケーションと同じリージョンにデプロイしてください。
Prompt Caching の活用
プロンプトキャッシングにより、繰り返しのプロンプトで最初のトークンまでの時間を 最大80% 短縮できます。静的なコンテンツ(システム指示、コンテキスト)をメッセージ配列の先頭に配置してください。詳細は Prompt Caching ガイド を参照してください。
レイテンシチェックリスト
| 最適化 | レイテンシへの影響 | 必要な作業 |
|---|---|---|
| 接続プーリング | リクエストあたり −50~100ms | 低 |
| ストリーミングを有効化 | 体感: −5~30秒 | 低 |
| プロンプトキャッシング | キャッシュヒット時に −80% | 中 |
| アプリ近隣でのセルフホスティング | ネットワークRTT −30~80ms | 高 |
-fast サフィックスの使用 | 生成時間 −20~50% | 不要 |
コストの最小化
スマートなモデル選択
すべてのタスクにGPT-4oやClaude Opusが必要なわけではありません。シンプルなタスクはより安価なモデルにルーティングしましょう:
| タスクタイプ | 推奨モデル | GPT-4oとのコスト比較 |
|---|---|---|
| 分類、抽出、タグ付け | GPT-4o-mini, Claude Haiku, Gemini Flash | 10~50倍安価 |
| 下書き、要約、翻訳 | DeepSeek V3, Llama 4, Mistral Large 3 | 3~10倍安価 |
| 複雑な推論、コード生成 | GPT-4o, Claude Opus 4.8 | 基準 |
| バッチ / バックグラウンド処理 | DeepSeek V3 + -cheap サフィックス | 5~15倍安価 |
利用上限の設定
ダッシュボードでAPIキーごとの月間予算を設定します。上限に達するとキーは自動的に無効化され、予期しない課金は発生しません。開発用キーには低めの上限を、クライアントと共有するキーにはより厳しい制限を設定してください。キースコーピング を参照してください。
コスト最適化モデルサフィックスの使用
任意のモデル名に -cheap を付加すると、そのモデルの最安値プロバイダーに自動ルーティングされます。重要度の低いバッチジョブでは、コード変更なしで10~30%のコストを節約できます。
コストチェックリスト
| 最適化 | コストへの影響 | 必要な作業 |
|---|---|---|
| シンプルなタスクをミニモデルにルーティング | 対象タスクで −70~95% | 中 |
| プロンプトキャッシングを有効化 | キャッシュヒット時に −50~90% | 低 |
バッチジョブで -cheap サフィックスを使用 | −10–30% | 不要 |
| キーごとの月間予算を設定 | 最大利用額にハードキャップ | 低 |
| 使用量ダッシュボードを毎週確認 | 異常を早期に検知 | 低 |
スループットの最大化
非同期 + バッチ処理
バルク処理には、非同期クライアントと並行リクエストを使用してください。TokSpanのインフラは水平スケーリングするため、スループットの制限は通常、サーバーではなくレート制限です:
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
async def process_batch(prompts: list):
tasks = [
client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": p}],
)
for p in prompts
]
return await asyncio.gather(*tasks)並行処理ガイドライン
以下を目安としてください:
- 従量課金: 最大50件の同時リクエスト(500 RPM制限)
- エンタープライズ: カスタム同時実行数 — 制限についてはお問い合わせください
- セルフホスティング: お客様のインフラストラクチャのみに制限
レスポンスヘッダーの x-ratelimit-remaining-requests を監視して余裕を把握してください。定常的に制限の80%以上に達する場合は、引き上げをリクエストしてください。
本番環境の信頼性
指数バックオフによるリトライ
ネットワークの瞬断やプロバイダーの一時的な問題は発生するものです。API呼び出しは常にリトライロジックでラップしてください:
import time
import random
from openai import OpenAI, RateLimitError, APIError
def chat_with_retry(client, model, messages, max_retries=3):
for attempt in range(max_retries):
try:
return client.chat.completions.create(model=model, messages=messages)
except RateLimitError:
if attempt == max_retries - 1: raise
# Exponential backoff with jitter
wait = (2 ** attempt) + random.uniform(0, 1)
time.sleep(wait)
except APIError as e:
if e.status_code < 500 or attempt == max_retries - 1: raise
wait = (2 ** attempt) + random.uniform(0, 1)
time.sleep(wait)自動フェイルオーバーの設定
ダッシュボードでクロスプロバイダーフェイルオーバーチェーン(OpenAI → Anthropic → Google)を設定します。プライマリプロバイダーがダウンした場合、トラフィックは自動的にルーティングされ、リクエスト消失はゼロです。自動フェイルオーバー を参照してください。
APIキー戦略
- 開発キー: 低予算($10/月)、安価なモデルに制限、IP制限なし
- ステージングキー: 中程度の予算($50/月)、本番モデルセット、IP制限あり
- 本番キー: 高めの予算、全モデル、本番サーバーにIP制限
キーは90日ごとにローテーションしてください。複数のプロジェクトを管理する場合は、プロジェクトごとに個別のキーを使用してください。
クイックリファレンス: 本番用モデルサフィックス
| サフィックス | 最適化対象 | ユースケース |
|---|---|---|
-fast | 最小レイテンシ | リアルタイムチャット、インタラクティブアプリ |
-cheap | 最小コスト | バッチジョブ、開発/テスト、バックグラウンド |
-high | 最高品質 | 複雑な推論、コード生成、分析 |
-low | 高速 + 低コスト | シンプルなクエリ、分類 |
-thinking | 推論のデバッグ | プロンプトエンジニアリング、思考連鎖の可視化 |