关于 openrouter-models
面向使用 OpenRouter 的 Agent 开发者,提供模型发现、搜索、解析和比较脚本,并可查询各提供方的延迟、可用率与吞吐量。它将模糊模型名称解析为精确 ID,便于后续查询和比较。
主要功能
- 01列出、筛选和搜索模型
- 02解析模糊名称为模型 ID
- 03按价格、上下文和吞吐量比较
- 04查询提供方性能与状态
- 05查看模型模态和支持参数
适用场景
- 01按类别或价格寻找模型
- 02确认自然语言提及对应的模型 ID
- 03比较多个模型的价格和上下文长度
- 04检查模型提供方的延迟与可用率
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ openrouterteam/ skills --skill openrouter-models安装后在 Claude Code 中输入/openrouter-models确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdscripts/compare-models.tsget-endpoints.tslib.tslist-models.tspackage-lock.jsonpackage.jsonresolve-model.tssearch-models.ts详细介绍
OpenRouter 模型
发现、搜索并比较 OpenRouter 上提供的 300 多种 AI 模型。查询实时数据,包括定价、上下文长度、各提供商的延迟和正常运行时间、吞吐量、支持的模态和参数。
前提条件
对于大多数脚本,OPENROUTER_API_KEY 环境变量是可选的。只有 get-endpoints.ts(提供商性能数据)需要此变量。请在 https://openrouter.ai/keys 获取密钥。
首次设置
cd <skill-path>/scripts && npm install
决策树
根据用户的需求选择合适的脚本:
| 用户想要…… | 脚本 | 示例 |
|---|---|---|
| 查看所有可用模型 | list-models.ts | “OpenRouter 有哪些模型?” |
| 查找最近新增的模型 | list-models.ts --sort newest | “最新的模型有哪些?” |
| 查找最便宜的模型 | list-models.ts --sort price | “最便宜的模型是什么?” |
| 查找吞吐量最高的模型 | list-models.ts --sort throughput | “哪些模型的输出能力最强?” |
| 查找某个类别中的模型 | list-models.ts --category X | “最好的编程模型有哪些?” |
| 按名称搜索 | search-models.ts "query" | “他们有 Claude 吗?” |
| 解析非正式的模型名称 | resolve-model.ts "query" | “使用 nano banana 2.0 模型” |
| 查找支持图像的模型 | search-models.ts --modality image | “哪些模型接受图像?” |
| 比较指定模型 | compare-models.ts A B | “比较 Claude 和 GPT-4o” |
| 按吞吐量比较 | compare-models.ts A B --sort throughput | “Claude 和 GPT-4o 哪个吞吐量更高?” |
| 查看提供商性能 | get-endpoints.ts "model-id" | “哪个提供商运行 Claude 最快?” |
| 查找速度最快的提供商 | get-endpoints.ts "model-id" --sort throughput | “Claude Sonnet 哪个提供商最快?” |
| 查找延迟最低的提供商 | get-endpoints.ts "model-id" --sort latency | “GPT-4o 哪个提供商的延迟最低?” |
| 查看模型是否可用 | get-endpoints.ts "model-id" | “Claude Sonnet 4 现在可以使用吗?” |
解析模型
使用模糊匹配,将非正式或模糊的模型名称解析为准确的 OpenRouter 模型 ID:
cd <skill-path>/scripts && npx tsx resolve-model.ts "claude sonnet"
cd <skill-path>/scripts && npx tsx resolve-model.ts "gpt 4o mini"
cd <skill-path>/scripts && npx tsx resolve-model.ts "llama 3.1"
结果包含 confidence 置信度级别和 score 分数:
| 置信度 | 分数 | 操作 |
|---|---|---|
high(≥0.85) | 直接使用该模型——匹配结果明确无误 | |
medium(≥0.55) | 继续操作前先与用户确认 | |
low(≥0.30) | 提供匹配结果,并请用户澄清 |
**两步工作流:**先使用 resolve-model.ts 解析非正式名称,再将解析出的 id 传入其他脚本(如 compare-models.ts、get-endpoints.ts 等)。
列出模型
cd <skill-path>/scripts && npx tsx list-models.ts
按类别筛选
服务端类别筛选:
cd <skill-path>/scripts && npx tsx list-models.ts --category programming
类别:programming、roleplay、marketing、marketing/seo、technology、science、translation、legal、finance、health、trivia、academia
排序结果
cd <skill-path>/scripts && npx tsx list-models.ts --sort newest # Recently added first
cd <skill-path>/scripts && npx tsx list-models.ts --sort price # Cheapest first
cd <skill-path>/scripts && npx tsx list-models.ts --sort context # Largest context first
cd <skill-path>/scripts && npx tsx list-models.ts --sort throughput # Most output tokens first
如果模型的 expiration_date 即将到期,会触发 stderr 警告。
搜索模型
cd <skill-path>/scripts && npx tsx search-models.ts "claude"
cd <skill-path>/scripts && npx tsx search-models.ts --modality image
cd <skill-path>/scripts && npx tsx search-models.ts "gpt" --modality text
模态:text、image、audio、file
比较模型
并排比较两个或多个模型,价格以每百万 token 为单位。使用精确 ID 匹配——openai/gpt-4o 只会匹配该模型,不会匹配 gpt-4o-mini 等变体。
cd <skill-path>/scripts && npx tsx compare-models.ts "anthropic/claude-sonnet-4" "openai/gpt-4o"
cd <skill-path>/scripts && npx tsx compare-models.ts "anthropic/claude-sonnet-4" "openai/gpt-4o" "google/gemini-2.5-pro" --sort price
排序选项:price(价格从低到高)、context(上下文长度从大到小)、speed/throughput(输出 token 数从多到少)
提供商性能(端点)
获取任意模型各提供商的延迟、正常运行时间和吞吐量:
cd <skill-path>/scripts && npx tsx get-endpoints.ts "anthropic/claude-sonnet-4"
cd <skill-path>/scripts && npx tsx get-endpoints.ts "anthropic/claude-sonnet-4" --sort throughput
cd <skill-path>/scripts && npx tsx get-endpoints.ts "openai/gpt-4o" --sort latency
排序选项:throughput(每秒令牌数最快优先)、latency(p50 毫秒数最低优先)、uptime(可靠性最高优先)、price(价格最低优先)
每个提供商会返回:
- 延迟(p50/p75/p90/p99,单位为毫秒)——从中位数到最坏情况的响应时间
- 吞吐量(p50/p75/p90/p99,单位为令牌/秒)——生成速度
- 正常运行时间——过去 30 分钟内的百分比
- 状态——
operational或degraded - 提供商专属定价——部分提供商提供折扣
- 支持的参数——因提供商而异(部分提供商不支持所有功能)
API 响应结构
GET /api/v1/models 返回 { data: Model[] }。字段完整说明请参阅模型参考。
查询参数(均为可选):
| 参数 | 示例 | 效果 |
|---|---|---|
category | ?category=programming | 服务端类别筛选 |
supported_parameters | ?supported_parameters=tools | 仅返回支持此参数的模型 |
处理响应的提示:
- 要检查模型是否支持某项功能,请使用
model.supported_parameters(例如.includes("tools")),或使用?supported_parameters=tools在服务端筛选。 - 要检查模态,请使用
model.architecture.input_modalities/model.architecture.output_modalities。 - 定价值是以字符串表示的每令牌美元价格——乘以 1,000,000 即可换算为每百万令牌价格。
knowledge_cutoff和expiration_date是日期字符串或 null。links.details指向该模型的各提供商端点 API。GET /api/v1/models/{author}/{slug}/endpoints返回{ data: { id, name, endpoints: Endpoint[] } }。- 端点
status:0= 正常运行,非零 = 性能下降。 - 端点
latency_last_30m/throughput_last_30m:包含p50、p75、p90、p99的百分位对象。
脚本输出格式
以下脚本会重新整理原始 API 数据。直接调用 API 时(例如通过 fetch),请参阅 OpenAPI 规范了解字段名称。
list-models.ts / search-models.ts
原始 API 字段的子集——脚本会运行 formatModel(),移除 canonical_slug、hugging_face_id、default_parameters、knowledge_cutoff 和 links。如果需要这些字段,请直接调用 API。
compare-models.ts
{
"id": "anthropic/claude-sonnet-4",
"name": "Anthropic: Claude Sonnet 4",
"context_length": 1000000,
"max_completion_tokens": 64000,
"per_request_limits": null,
"pricing_per_million_tokens": {
"prompt": "$3.00",
"completion": "$15.00",
"cached_input": "$0.30"
},
"modalities": { "input": ["text", "image"], "output": ["text"] },
"supported_parameters": ["max_tokens", "temperature", "..."],
"is_moderated": false
}
get-endpoints.ts
{
"model_id": "anthropic/claude-sonnet-4",
"model_name": "Anthropic: Claude Sonnet 4",
"total_providers": 5,
"endpoints": [
{
"provider": "Anthropic",
"tag": "anthropic",
"status": "operational",
"uptime_30m": "100.00%",
"latency_30m_ms": { "p50": 800, "p75": 1200, "p90": 2000, "p99": 5000 },
"throughput_30m_tokens_per_sec": { "p50": 45, "p75": 55, "p90": 65, "p99": 90 },
"context_length": 1000000,
"max_completion_tokens": 64000,
"pricing_per_million_tokens": { "prompt": "$3.00", "completion": "$15.00", "cached_input": "$0.30" },
"supports_implicit_caching": true,
"supported_parameters": ["max_tokens", "temperature", "tools", "..."]
}
]
}
关键字段
| 字段 | 含义 |
|---|---|
pricing.prompt / pricing.completion | 每令牌的美元费用。乘以 1,000,000 即可换算为每百万令牌价格 |
context_length | 最大总令牌数(输入 + 输出) |
top_provider.max_completion_tokens | 最佳提供商可生成的最大输出令牌数 |
top_provider.is_moderated | 是否会进行内容审核 |
per_request_limits | 每个请求的令牌数限制(非 null 时) |
supported_parameters | 模型接受的 API 参数(例如 tools、structured_outputs、reasoning、web_search_options) |
created | Unix 时间戳——可用于按时间由近到远排序 |
expiration_date | 非 null 表示该模型即将弃用 |
latency_30m_ms.p50 | 过去 30 分钟的中位响应延迟 |
throughput_30m_tokens_per_sec.p50 | 过去 30 分钟的中位生成速度 |
uptime_30m | 过去 30 分钟内提供商的可用率 |
呈现结果
- 当用户使用非正式名称提及模型时,先使用
resolve-model.ts,然后将解析出的id传递给其他脚本 - 将价格换算为每百万 Token 的格式,以便于阅读
- 进行比较时,使用以模型为列的 Markdown 表格
- 对于提供商端点,标出速度最快(p50 延迟最低)和最可靠(正常运行时间最高)的提供商
- 指出值得注意的受支持参数:
tools、structured_outputs、reasoning、web_search_options - 有缓存定价时请注明——这可以将输入成本降低 90% 以上
- 将带有
expiration_date的模型标记为已弃用 - 当一个模型有多个价格不同的提供商时,注明最便宜的选项