ARouter は API リクエストに user フィールドを渡すことで、ユーザーごとの使用状況追跡をサポートします。これにより、アプリケーション内の個々のユーザーに API コストを帰属させ、ユーザーレベルで使用パターンを監視できます。
ユーザー ID の渡し方
任意のチャット補完リクエストに user フィールドを含めます:
{
"model": "openai/gpt-5.4",
"messages": [{"role": "user", "content": "Hello!"}],
"user": "user_12345"
}
user 値は、システム内のエンドユーザーを識別する任意の文字列にできます — データベース ID、ハッシュされたメールアドレス、またはセッション ID などです。ARouter はこの値を検証または解釈しません。
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.arouter.ai/v1",
apiKey: "lr_live_xxxx",
});
async function chatWithUser(userId: string, message: string) {
const response = await client.chat.completions.create({
model: "openai/gpt-5.4",
messages: [{ role: "user", content: message }],
user: userId,
});
return response.choices[0].message.content;
}
from openai import OpenAI
client = OpenAI(
base_url="https://api.arouter.ai/v1",
api_key="lr_live_xxxx",
)
def chat_with_user(user_id: str, message: str) -> str:
response = client.chat.completions.create(
model="openai/gpt-5.4",
messages=[{"role": "user", "content": message}],
user=user_id,
)
return response.choices[0].message.content
curl https://api.arouter.ai/v1/chat/completions \
-H "Authorization: Bearer lr_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.4",
"messages": [{"role": "user", "content": "Hello!"}],
"user": "user_12345"
}'
プライバシーに関する考慮事項
個人識別情報(PII)を user 値として渡さないでください。ハッシュ化された ID やデータベースの主キーなど、不透明な識別子を使用してください。
推奨されるアプローチ:
import hashlib
# 渡す前にユーザーのメールアドレスをハッシュ化
user_id = hashlib.sha256(user_email.encode()).hexdigest()[:16]
# または不透明なデータベース ID を使用
user_id = str(user.id) # 例:「usr_abc123」
ユーザー別の使用状況を確認する
ユーザーレベルの使用データは アクティビティエクスポート で確認できます。各レコードには渡した user フィールドが含まれており、以下のことができます:
- ユーザーごとの Token 消費とコストを計算
- 高使用量ユーザーを特定してキャパシティプランニング
- 異常な使用パターンや不正利用を検出
- エンドユーザー向けの使用量ベースの課金を構築
アクティビティエクスポート API
ユーザーでフィルタリングして使用記録を照会:
curl "https://api.arouter.ai/v1/activity?user=user_12345&limit=100" \
-H "Authorization: Bearer lr_live_xxxx"
ユースケース
ユーザーごとのコスト配賦
各顧客へのサービス提供にかかるコストを追跡:
// 顧客 ID を渡す
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4.6",
messages: conversation,
user: `customer_${customerId}`,
});
// 後で:アクティビティエクスポートを照会して顧客ごとの総コストを取得
不正利用検出
ユーザーごとに異常な使用パターンを監視:
# 各ユーザーに独自の識別子を付与
response = client.chat.completions.create(
model="openai/gpt-5.4",
messages=[{"role": "user", "content": user_message}],
user=f"app_user_{user.id}",
)
マルチテナントアプリケーション
マルチテナント SaaS アプリケーションでは、組織またはテナント ID を渡します:
const response = await client.chat.completions.create({
model: "google/gemini-2.5-flash",
messages: messages,
user: `org_${organizationId}`,
});
注意事項
user フィールドはオプションです。このフィールドを含まないリクエストも、API キーの集計使用量として追跡されます。
- ユーザー ID は不透明な文字列として保存されます。ARouter はその形式を検証、解析、または解釈しません。
- ユーザー追跡データは アクティビティエクスポート レコードに含まれます。
- チームレベルの使用コントロールについては 組織管理 を参照してください。