OpenRouter 最近换了新 Logo,官网视觉风格也跟着变了。如果你正在做站点素材整理、文档配图、客户端图标替换,或者只是想搞清楚 OpenRouter 到底能不能用、怎么接入 Claude Code、怎么充值、怎么调用它的统一大模型 API,这篇文章可以一次看完。前半段是“新 Logo 多版本下载”的实际操作,后半段是 OpenRouter 从注册、获取 API Key、调用接口到接入 Claude Code 的完整流程。
OpenRouter 本质上是一个“模型路由聚合平台”:通过一个 OpenAI 兼容 API,就能访问 Anthropic、OpenAI、Google、Meta 以及大量开源模型。对开发者来说,最大的好处是切换模型不用改代码,只需要改一个模型 ID;对普通用户来说,不用一个个去注册各家模型供应商,一个 Key 就能把对话、代码补全、批量处理任务都串起来。
本文会按四个步骤展开:先快速看核心能力速览,再详细讲新 Logo 的多个版本如何获取和整理,接着是 OpenRouter 注册、API Key、额度与接口调用,最后是 CC-Switch 接入 Claude Code、常见报错排查和最佳实践。全流程没有本地 GPU 依赖,只要你有一台能联网的电脑,按步骤操作就能跑通。
1. OpenRouter 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 大模型统一 API 聚合/路由平台 |
| 主要功能 | 通过一个 API Key 调用多个大模型,支持对话、代码、长文本、工具调用等 |
| 访问方式 | 官网控制台 + OpenAI 兼容 API |
| API 兼容性 | 兼容 OpenAI Chat Completions 风格接口 |
| 批量任务 | 可以在业务代码中并发调用,没有平台级队列限制,需要自己实现并发与重试 |
| 本地部署 | 不需要,模型在云端运行 |
| 硬件要求 | 无 GPU 要求,只需要正常网络环境和客户端环境 |
| 计费方式 | 按 token 计费,部分模型有免费额度,以控制台展示为准 |
| 常见用途 | 多模型对比、Claude Code 接入、AI 应用后端、脚本批量文本处理 |
| 适合人群 | 开发者、AI 应用集成人员、需要快速对比模型效果的技术团队 |
从这张表能看出来,OpenRouter 不是本地部署项目,而是一个“云 API 服务”。后面讲的环境准备,主要围绕账号、API Key、开发依赖和网络连通性来做,而不是显卡和显存。
2. 新 Logo 多版本下载指南
2.1 新 Logo 有哪些版本
官网改版后,Logo 通常会同时输出多个版本,以便适配不同场景。常见的版本类型如下:
| 版本类型 | 常见格式 | 典型使用场景 |
|---|---|---|
| 横向主标识 | SVG / PNG | 页面顶部、文档页眉、PPT |
| 图标版 | SVG / PNG | App 导航栏、站点 Favicon、头像 |
| 深色背景版 | PNG / SVG | 深色模式界面、Banner |
| 浅色背景版 | PNG / SVG | 浅色模式界面、PDF 文档 |
| 单色版 | SVG | 打印、雕刻、单色 UI |
| Favicon 小图标 | ICO / PNG | 浏览器标签页、书签 |
因为 OpenRouter 官网本身是 React 站点,很多 Logo 资源会被打包进静态资源目录。下面给出三种自己抓取的方式,不需要等官方打包下载。
2.2 方法一:从官网页面直接提取
打开 OpenRouter 官网,在页面底部或侧边栏通常能找到品牌相关入口。如果官网没有直接放下载包,可以用浏览器开发者工具:
- 在官网页面右键选择“检查”或按 F12;
- 点击 Elements 面板;
- 按 Ctrl+F 搜索
logo或brand; - 找到
<img>标签或 SVG 路径; - 在资源地址上右键,选择 Open in new tab;
- 在新标签页里右键保存 SVG/PNG 文件。
这种方式适合提取当前正在使用的 Logo 版本。如果官网改版后保留了旧的静态资源路径,你还能在 Network 面板里看到旧版 Logo 的请求记录,一并下载。
2.3 方法二:用命令行抓取 Favicon
Favicon 是最常用的小尺寸 Logo 版本,可以直接用 curl 抓取:
# 抓取 OpenRouter 官网的 favicon curl -L -o openrouter_favicon.ico "https://openrouter.ai/favicon.ico"如果返回的 ICO 文件不是你想要的尺寸,也可以在 HTML 源码里找更高清的图标链接:
# 查看页面中的 icon 声明 curl -sL "https://openrouter.ai" | grep -i "icon" | head -20根据页面源码里的<link rel="icon">或<link rel="apple-touch-icon">,找到对应 PNG 路径,再用 curl 下载。这里要注意,网站的静态资源路径会因为部署节奏变化,所以更稳妥的做法是先抓 HTML 确认实际路径,再保存文件。
2.4 方法三:抓取静态资源目录里的 SVG
如果需要 SVG 矢量版,建议先看页面 Network 面板里的静态资源请求。常见路径类似:
https://openrouter.ai/static/media/logo.xxxxxx.svg https://openrouter.ai/assets/images/brand/logo-dark.svg这类路径通常带 hash,过一段时间会失效,所以不建议直接写死到文档里。更好的做法是,在需要下载时打开官网,用上面的 F12 方法获取当前有效路径。拿到 SVG 后,可以自行转换成不同尺寸的 PNG:
# 使用 rsvg-convert 将 SVG 转 PNG(Linux/macOS 示例) rsvg-convert -w 512 -h 512 logo.svg -o logo_512.pngWindows 用户可以安装 Inkscape,或者在在线转换工具里完成转换。转换后按“主标识、图标、深色、浅色、单色”五个分类归档,就形成一个自己的多版本素材库。
2.5 格式选择与素材整理
下载完成后,建议按下面目录结构存放:
assets/ ├── logo/ │ ├── openrouter_logo_horizontal.svg │ ├── openrouter_logo_vertical.svg │ ├── openrouter_icon.svg │ ├── openrouter_logo_dark.png │ ├── openrouter_logo_light.png │ └── openrouter_favicon.ico如果用于大屏展示、印刷设计,优先使用 SVG 矢量文件,放大不失真;如果只需要浏览器标签页或书签图标,直接用 favicon.ico;如果在文档、PPT 里使用,推荐透明背景 PNG,尺寸选 512×512 或 1024×1024。这样后续做客户端图标、文档插图、运维告警通知里的品牌展示,都能直接取用,不用每次临时去网页上截图。
3. 适用场景与使用边界
OpenRouter 适合的场景非常明确:
- 想用一个 Key 调用多家模型,不想在多个平台之间来回切换;
- 做 AI 应用后端,需要把不同模型供应商的调用统一成一套代码;
- 想快速对比不同模型的代码能力、写作能力、指令遵循能力;
- 需要把 Claude Code 接入不同模型供应商,用一个统一入口管理;
- 做批量文本处理、数据清洗、内容生成,需要并发调用。
不适合的场景也要说清楚:
- 如果对数据隐私要求极高,要求请求必须留在内网,那么 OpenRouter 这种云端聚合平台不合适,应该选择本地部署模型;
- 如果只需要某一家厂商的特定能力,直接到对应官方平台开账号可能更稳定;
- 如果需要长期高并发生产环境,建议评估 API 稳定性、故障恢复和限流策略后再决定是否作为唯一入口;
- 涉及人脸、声音、版权文本或未授权数据时,不要用聚合 API 处理敏感内容,必须先确认授权和合规边界。
合规方面需要特别提醒:使用任何大模型 API,都要遵守目标平台的服务条款和当地法律法规。不要用 API 去生成违法违规内容,也不要把未授权的第三方数据交给模型处理。涉及商业项目时,还要留意 OpenRouter 及具体模型厂商的转发政策是否允许你的使用场景。
4. 环境准备与前置条件
4.1 账号与网络准备
在使用 OpenRouter API 之前,需要准备:
- 一个可以正常访问 OpenRouter 官网的浏览器环境;
- 一个用于注册的邮箱;
- 保证 API 服务地址
https://openrouter.ai可以访问; - 如果是开发机调用,需要确保目标机器能访问外网。
关于“国内能不能用”这个问题,网络连通性和稳定性会因地区、运营商、时间而变化,无法给一个放之四海而皆准的结论。更稳妥的做法是:先在自己的电脑上打开控制台,看看页面是否正常加载,再用下面的接口测试命令做一次连通性测试,以实际结果为准:
curl -sI https://openrouter.ai | head -10如果这条命令能返回 HTTP 200 和响应头,说明网络链路基本可用;如果超时或无响应,就需要先排查本机网络、DNS 和防火墙设置。
4.2 开发环境
不需要安装大型框架,建议准备:
- Python 3.9+;
requests库,用于手动调用 API;- 可选安装
openaiPython SDK,因为 OpenRouter 兼容 OpenAI 的调用方式; - 如果要用 Node.js,则准备 Node 18+ 和
axios或node-fetch。
安装依赖:
pip install requests openai如果机器上已经有 conda,可以先建一个干净环境,避免和现有项目冲突。
4.3 API Key 与额度
OpenRouter 的 API Key 在控制台页面创建。新注册用户是否有免费额度、是否需要充值,建议直接登录后查看控制台右上角的余额显示,以及 Models 页面里的 free 模型列表。额度策略会调整,我不建议依赖第三方帖子里写的“注册送 X 美元”这种信息,以官网控制台实际展示为准。
如果打算长期调用付费模型,就需要在控制台完成充值。支付方式通常与国际信用卡、部分外币支付渠道有关;具体是否支持支付宝,需要登录后看充值页面当前的支付选项。这里要提醒一句:如果看到“代充”服务,务必保持警惕,避免账号被盗或产生纠纷。
5. 注册、API Key 与模型查询
5.1 注册与登录
打开 OpenRouter 官网,点击右上角的 Sign In 或 Get Started,选择邮箱注册或第三方登录。注册完成后进入 Dashboard,就能看到账户余额、API Key 列表、使用量和用量明细等入口。
5.2 创建 API Key
- 进入 Dashboard 或 API Keys 页面;
- 点击 Create Key;
- 输入 Key 名称,例如
dev-local或claude-code-test; - 复制生成的 Key,立即保存到本地,关闭页面后可能无法再次查看完整 Key。
创建的 API Key 要当作密码对待,不要提交到 Git 仓库,也不要写死在公开脚本里。建议写入环境变量:
export OPENROUTER_API_KEY="sk-or-xxxxxxxx"5.3 查看模型列表
OpenRouter 的模型列表接口是公开的:
curl -sL "https://openrouter.ai/api/v1/models" | python3 -m json.tool | head -100返回结果里包含模型 ID、名称、上下文长度、定价等信息。模型 ID 的格式通常是“厂商/模型名”,例如openai/gpt-4o、anthropic/claude-3.5-sonnet,实际 ID 以模型列表为准。
如果想用 Python 快速查看模型 ID 和价格:
import requests data = requests.get("https://openrouter.ai/api/v1/models", timeout=60).json() for item in data.get("data", [])[:10]: print(item.get("id")) print(item.get("pricing", {}).get("prompt"))如果你在某个教程里看到模型名,但在https://openrouter.ai/models页面搜不到,原因通常有几种:模型还没公开、模型已下线、模型 ID 拼写有误,或该模型只在特定渠道灰度开放。这种情况只能在 Models 页面手动搜索确认,不能凭教程里的截图判断。
6. 接口 API 调用示例
6.1 curl 调用对话接口
OpenRouter 的接口地址为https://openrouter.ai/api/v1/chat/completions,请求体和 OpenAI 基本一致。先测试连通性:
curl -sL https://openrouter.ai/api/v1/chat/completions \ -H "Authorization: Bearer $OPENROUTER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-4o-mini", "messages": [ {"role": "user", "content": "用一句话介绍你自己"} ] }'模型 ID 请以你在 Models 页面实际看到的为准。上面示例里的openai/gpt-4o-mini如果不存在,就换成列表里的真实 ID。
6.2 Python 直接调用
import os import requests api_key = os.environ.get("OPENROUTER_API_KEY") if not api_key: raise ValueError("请先设置 OPENROUTER_API_KEY 环境变量") url = "https://openrouter.ai/api/v1/chat/completions" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } payload = { "model": "openai/gpt-4o-mini", "messages": [ {"role": "system", "content": "你是一个技术写作助手。"}, {"role": "user", "content": "把下面的要点改写成一段简洁的技术说明:"} ], "temperature": 0.7, } response = requests.post(url, headers=headers, json=payload, timeout=120) response.raise_for_status() data = response.json() print(data["choices"][0]["message"]["content"])这里用timeout=120是因为长文本生成可能超过默认的 30 秒,建议按任务复杂度调整超时。常用请求参数如下:
| 参数 | 必填 | 说明 |
|---|---|---|
| model | 是 | 模型 ID,例如openai/gpt-4o-mini |
| messages | 是 | 对话消息列表,包含 role 和 content |
| temperature | 否 | 采样温度,值越高输出越随机 |
| max_tokens | 否 | 最大生成 token 数 |
| stream | 否 | 是否流式返回,默认 false |
6.3 使用 OpenAI SDK 调用
如果之前写的是 OpenAI 接口,改成 OpenRouter 只需要修改 base_url 和 API Key:
from openai import OpenAI import os client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.environ.get("OPENROUTER_API_KEY"), ) resp = client.chat.completions.create( model="openai/gpt-4o-mini", messages=[ {"role": "user", "content": "讲一下什么是 API 路由。"} ], ) print(resp.choices[0].message.content)这种 SDK 兼容方式的好处是,以后想换供应商,只需要改base_url和api_key,业务代码基本不动。
6.4 批量任务与重试设计
OpenRouter 本身不提供队列服务,批量任务需要在脚本里自己实现并发和重试。下面是一个简单的并发批量调用示例:
import concurrent.futures import time import requests import os def call_one(text): url = "https://openrouter.ai/api/v1/chat/completions" headers = { "Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}", "Content-Type": "application/json", } payload = { "model": "openai/gpt-4o-mini", "messages": [{"role": "user", "content": text}], } for attempt in range(3): try: resp = requests.post(url, headers=headers, json=payload, timeout=120) if resp.status_code == 429: time.sleep(2 * (attempt + 1)) continue resp.raise_for_status() return resp.json() except requests.RequestException as exc: time.sleep(2 * (attempt + 1)) if attempt == 2: raise exc texts = ["任务1", "任务2", "任务3", "任务4"] with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: results = list(executor.map(call_one, texts)) print(len(results))并发数建议从 2 到 3 开始,先测试服务端是否稳定,再逐步上调。不要一上来就开几十个并发,容易触发 429 限流。
6.5 429 与限流处理
OpenRouter 在请求频率过高时可能返回 HTTP 429,并附带重试时间。推荐的应对方式:
- 做指数退避重试,第一次等 1 秒,第二次等 2 秒,最多重试 3 次;
- 把请求分散到不同时间窗口,避免同时打出一个尖峰;
- 如果任务对实时性要求低,可以串行处理或每批间隔一段时间;
- 记录请求状态码到日志,方便事后分析限流原因。
7. 通过 CC-Switch 接入 Claude Code
7.1 CC-Switch 是什么
CC-Switch 是一个用于切换 Claude Code 配置的第三方工具,主要解决“本地 Claude Code 想接入不同 API 服务商”的切换问题。它可以把 Anthropic 官方、其他兼容服务、OpenRouter 这类聚合平台统一管理起来,切换时不用手动改一堆配置文件。
7.2 配置思路
以 OpenRouter 接入 Claude Code 为例,常见做法是:
- 在 OpenRouter 控制台创建一个专门给 Claude Code 使用的 API Key;
- 在 CC-Switch 中添加一个服务商配置,服务商名称可以写
openrouter; - 将 OpenRouter 的 API Key 填到对应字段;
- 配置 OpenRouter 的 API 基础地址,一般为
https://openrouter.ai/api/v1; - 保存配置后,在 CC-Switch 中切换到 openrouter 方案;
- 启动 Claude Code,确认它读取到的是 OpenRouter 的 Key 和地址。
不同版本的 CC-Switch 表单字段可能不一样,核心就是三个信息:API Key、API 地址、模型 ID。如果你的 CC-Switch 版本里没有固定的 Base URL 输入框,需要自己查看它的文档格式。
7.3 找不到模型的问题排查
有用户问:“为什么我在 OpenRouter 的 API 配置后找不到 stealth/ox-alpha 这个模型?”排查思路如下:
| 现象 | 排查点 |
|---|---|
| Models 页面搜不到 | 模型可能未公开、已下线或改过 ID |
| API 返回 model not found | 检查模型 ID 是否拼写完整,格式是否为“厂商/模型名” |
| CC-Switch 中找不到 | 确认 CC-Switch 版本是否支持模型列表刷新,并检查网络是否能访问 OpenRouter 的模型接口 |
| 列表里有但调用 404 | 可能只对特定账号灰度开放,需要登录后确认是否可见 |
如果某个模型真的没有上架 OpenRouter,那就只能换一个等价模型,或者去模型原厂商使用官方 API。
7.4 验证配置是否生效
在使用 Claude Code 之前,可以先用一条简单命令确认请求是否走到了 OpenRouter。如果配置方式是通过环境变量切换的,常见变量名是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY:
echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY如果输出的是 OpenRouter 地址和对应的 Key,说明环境切换生效;如果什么都没输出,说明配置没有写入 Claude Code 实际读取的环境。也可以先发起一次最小请求,观察日志里请求的 host 是否是openrouter.ai,这样能直接确认流量走向。
8. 资源占用与性能观察
OpenRouter 本身在云端运行,本地不需要 GPU 和显存。但对于把 OpenRouter 接到自己业务系统的人来说,仍然要关注几类性能指标。
一是接口延迟。模型生成速度和所选模型大小强相关,大模型通常比小模型慢。建议在代码里记录每次请求的耗时和 token 数:
import time start = time.time() resp_data = call_model("一句话总结") elapsed = time.time() - start print(f"耗时: {elapsed:.2f}s") print(f"token: {resp_data.get('usage')}")二是超时设置。文本生成任务不要只给 10 秒超时,建议 60 到 120 秒起步,长文档任务可以更长。如果经常超时,检查是模型太慢还是网络不稳定。
三是成本监控。OpenRouter 按 token 计费,批量任务最容易出现成本失控。建议在脚本里累计每次返回的usage.prompt_tokens和usage.completion_tokens,按模型单价估算花费,并给脚本设置预算上限。
四是进程资源。如果批量脚本用多线程并发,本地 CPU、内存、网络连接数都会上升。先在 2 个并发下压测,再逐步增加并发,观察本地进程是否符合预期。
9. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 网页打不开或加载慢 | 本地网络到官网连通性不稳定 | 换网络环境,执行curl -sI https://openrouter.ai查看响应 | 使用连通性更好的网络环境,以实际测试为准 |
| API 返回 401 | API Key 无效或未设置 | 检查环境变量和控制台 Key | 重新生成 Key,写入环境变量 |
| API 返回 404 | 请求路径错误或模型 ID 不存在 | 检查 URL 末尾是否带/chat/completions,核对模型 ID | 修正请求路径,换用 Models 页面存在的模型 ID |
| API 返回 429 | 请求频率过高或余额不足 | 查看响应体里的错误信息、控制台余额 | 降低并发,做指数退避重试,充值后再试 |
| 余额扣得很快 | 批量任务并发过大,或模型单价高 | 查看 Usage 页面按日和按模型过滤 | 限制并发数,设置月度预算,优先用小 token 模型 |
| 找不到某个模型 | 模型未公开、已下线或名称拼写错误 | 在官网 Models 页面搜索模型 ID | 改用等价模型,或换原厂商 API |
| CC-Switch 接入后 Claude Code 报错 | Key、Base URL、模型 ID 配置不一致 | 检查 CC-Switch 配置项和控制台创建的 Key | 重新填写三要素,并确认网络可访问 OpenRouter |
| 长文本请求超时 | 模型生成时间长,客户端超时设置太短 | 查看模型上下文上限和响应耗时 | 调大 timeout,拆分长文本任务 |
| 批量任务中途失败 | 网络抖动、限流或单条请求出错 | 查看日志中的 HTTP 状态码和异常堆栈 | 增加重试机制,记录失败任务,断点续跑 |
10. 最佳实践与使用建议
第一,Key 安全管理。OpenRouter 的 API Key 相当于账户的操作凭证,里面涉及余额和请求额度。开发时用环境变量,线上用密钥管理服务,不要硬编码到前端代码里。
第二,先小规模验证。第一次接入时,先用一个短提示词、低并发跑通全流程,确认模型 ID、请求格式、返回结构都正确后,再上批量任务。
第三,批量任务要有日志和断点续跑。建议把每条任务的结果写入日志或数据库,失败任务单独记录,脚本重启后可以跳过已完成条目,避免重复扣费。
第四,设置成本上限。批量任务要累计 token 消耗,并对照控制台用量页面对账。如果成本增长异常,立刻检查是否模型 ID 选错、并发过大或请求进入死循环。
第五,理性看待免费模型和免费额度。免费模型适合测试和验证,生产环境如果对质量、速率和稳定性有要求,建议优先选择付费模型。
第六,不要在公开场合泄露 Key。不要为了演示方便把 Key 贴在博客、Gist 或社交平台里。一旦泄露,立刻到控制台吊销并重新创建。
第七,涉及版权和隐私内容要谨慎。OpenRouter 是云端中转,请求数据会经过第三方平台。处理用户隐私、商业机密、未授权数据前,要先做合规评估。
第八,如果遇到复杂问题,先看官方文档和控制台日志,再搜索社区经验。OpenRouter 的模型列表、定价、限流策略都可能调整,任何第三方教程都可能过时,最终以官网为准。
11. 总结
这篇文章从 OpenRouter 新 Logo 多版本下载切入,实际覆盖了三件事:如何获取官网 Logo 的多个版本素材,如何注册 OpenRouter 并完成 API Key 与基础调用,以及如何把它接到 Claude Code 和批量任务中。
如果你是第一次接触 OpenRouter,建议按这个顺序操作:先到官网确认访问是否正常,注册并创建 API Key,用第 6 节的 curl 命令跑通一次对话,再考虑接 CC-Switch 和批量任务。最容易踩的坑是模型 ID 写错、API Key 泄露、并发过高触发 429,以及轻信第三方教程里的固定配置。把自己常用模型 ID、API 地址、环境变量模板整理成一份本地笔记,后面再接入项目会快很多。