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"
}'
개인 정보 고려사항
user 값으로 개인 식별 정보(PII)를 전달하지 마세요. 해시된 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는 형식을 검증, 파싱 또는 해석하지 않습니다.
- 사용자 추적 데이터는 활동 내보내기 레코드에 포함됩니다.
- 팀 수준의 사용량 제어는 조직 관리를 참조하세요.