Skip to content

OpenRouter API 支持通过 user 参数在请求中传入任意字符串标识符来标记终端用户。这个可选字段帮助 OpenRouter 理解你的用户群体构成。推荐使用稳定的内部 ID(如 user_12345customer_abc123),避免传入个人身份信息(邮箱、姓名等)。保持同一用户的标识符格式一致,避免每次请求使用随机字符串。

通过在 API 请求中传入 user 参数,可以将请求与你应用中的终端用户关联。

使用方式

在请求体中添加 user 字段:

json
{
  "model": "openai/gpt-4o",
  "messages": [
    {"role": "user", "content": "Hello, how are you?"}
  ],
  "user": "user_12345"
}

代码示例

typescript
import { OpenRouter } from '@openrouter/sdk';

const openRouter = new OpenRouter({
  apiKey: process.env.OPENROUTER_API_KEY,
});

const response = await openRouter.chat.send({
  model: 'openai/gpt-4o',
  messages: [
    {
      role: 'user',
      content: "What's the weather like today?",
    },
  ],
  user: 'user_12345',  // 你的用户标识符
  stream: false,
});

console.log(response.choices[0].message.content);

最佳实践

选择稳定的标识符

同一用户在不同请求中使用一致的标识符:

  • 推荐user_12345customer_abc123account_xyz789
  • 避免:每次请求随机生成的字符串

考虑隐私保护

  • 使用内部系统的用户 ID,不要暴露个人信息
  • 避免传入邮箱、姓名等 PII(个人身份信息)
  • 可以使用匿名化的哈希 ID 提升隐私保护

保持格式统一

在整个应用中使用相同的格式约定:

python
# 统一格式
user_id = f"app_{internal_user_id}"

常见问题

Q: user 参数是必填的吗?

A: 不,这是可选参数。但传入此参数有助于 OpenRouter 在出现滥用投诉或异常用量时,更好地协助你定位问题。

Q: 传入的 user ID 会被记录在日志里吗?

A: OpenRouter 会记录这个字段用于运营目的,但不会与请求内容(prompt/响应)一起存储。

Q: 可以传入什么格式的字符串?

A: 任意字符串均可,没有特定格式要求。关键是在你的应用中保持一致,让同一个用户的不同请求都使用相同的标识符。