上个月我在做一个编程智能体,需要同时调用好几个模型——日常分类用便宜快速的小模型,处理复杂逻辑得靠重量级的推理模型。但每个供应商都要单独管理 API key、计费后台和 SDK 集成,简直是个噩梦。我就一直琢磨:“为什么不能只请求一个接口,然后像换插件一样切换模型呢?”
SiliconFlow 解决的正是这个问题。它是一个推理平台,只需一个 API 就能访问 200 多个模型——DeepSeek、GLM、Qwen、Stable Diffusion 等等,应有尽有。最吸引我的是它兼容 OpenAI 的接口,这意味着我完全不用重写现有的代码,只要改下 base_url 就能直接开跑。
下面是我的上手过程,包括中间踩过的一些坑。
第一步:注册账号
注册过程非常简单。我打开 siliconflow.com,直接用 GitHub 账号登录了——除了 OAuth,它还支持 Google、邮箱和手机号注册。登录后,平台直接把我带到了控制台,上面清清楚楚地显示着我的 API 用量、账单和可用额度。
有一点让我挺满意:新账号会送免费额度。这让我不用掏信用卡就能测试模型,毕竟刚试用新服务时能白嫖,总是件让人舒心的事。
第二步:逛逛模型库
在写代码之前,我先在 Models(模型) 页面上花了不少时间。这可是 SiliconFlow 的亮点。模型库非常庞大,涵盖了 200 多个模型,分类齐全:
- 大语言模型 (LLMs):DeepSeek-R1、GLM-5.2、Kimi K2.7 Code、LongCat-2.0、Qwen 系列
- 视觉:用于图像理解的模型
- 图像生成:Stable Diffusion、FLUX 等
- 视频与音频:选择还在不断增加
每个模型卡片上都列出了真正有用的细节:每百万 token 的价格(输入和输出)、缓存输入价格、上下文窗口大小、最大输出 token 数,以及速率限制。比如,当我查看 DeepSeek-R1 时,就能看到它支持超大的上下文窗口,而且价格比我之前用的地方便宜多了。
小贴士:在任意模型的详情页点击“Online Experience(在线体验)”,就能打开一个快捷聊天界面。我在写代码前就用这种方式测了三个不同的模型,省得把 API 额度浪费在不适合我场景的模型上。
第三步:在 Playground 里测试
Playground 是 SiliconFlow 的交互式测试环境。在左侧边栏就能进入,你可以在语言模型、文生图和图生图模型之间切换。
我先拿一道我已经知道答案的编程题测试了 DeepSeek-R1——算是个快速的冒烟测试。输入提示词,调整 temperature 和 max tokens 等参数,然后点击“Run(运行)”。响应会实时流式返回。
有个意想不到的地方:Playground 不会跨会话保存你的对话历史。如果你发现某个提示词效果很好,一定要马上复制!我就因为以为它会自动保存,结果丢掉了一个精心调试的系统提示词,然而并没有。
第四步:生成 API Key
准备把模型集成到项目里时,我进入了 API Keys 页面,点击“Create API Key”。密钥瞬间就生成了——格式大概像 sk-xxxxxxxxxxxxxxxxxxxxxxxx 这样。
重要提示:一定要马上复制!密钥只显示一次。我第一次没注意这茬,只好删了重新生成,感觉自己蠢透了。记得把它存到安全的地方;我是放在加了 gitignore 的 .env 文件里的:
SILICONFLOW_API_KEY=sk-your-key-here
第五步:发起你的第一次 API 调用
到这儿就好玩了。SiliconFlow 支持两种调用方式:直接调用 REST API,或者使用兼容 OpenAI 的接口。我选了 OpenAI 的路子,因为我的项目本来就在用 OpenAI SDK。
配置环境
首先,我创建了一个虚拟环境并安装了 OpenAI 库:
python -m venv siliconflow-env
source siliconflow-env/bin/activate # Windows 下用: siliconflow-env\Scripts\activate
pip install --upgrade openai
验证一下安装:
pip list | grep openai
你应该能看到列表里有个版本号比较新的 openai。
编写代码
魔法全在 base_url 参数里。只要把它指向 SiliconFlow 的接口,你现有的 OpenAI SDK 代码就能原封不动地跑起来:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("SILICONFLOW_API_KEY"),
base_url="https://api.siliconflow.com/v1"
)
# 简单的非流式调用
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=[
{"role": "system", "content": "You are a helpful coding assistant."},
{"role": "user", "content": "Write a Python function to find the longest palindromic substring."}
],
temperature=0.7,
max_tokens=2048
)
print(response.choices[0].message.content)
流式响应
对于较长的输出,流式响应是必不可少的。我是这么处理的:
response = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=[
{"role": "user", "content": "Explain how transformer attention works, step by step."}
],
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)
第一次跑这段代码时我报错了,因为我忘了检查 delta.content 是不是 None——有些数据块只包含角色元数据。加上那个 is not None 的判断后,立马就好了。
切换模型
单一 API 的优势就在这儿体现了。想换个模型?改一下模型字符串就行:
# 从 DeepSeek 换成 GLM-5.2
response = client.chat.completions.create(
model="THUDM/GLM-5.2", # 只用改这一行
messages=[{"role": "user", "content": "Hello!"}],
stream=True
)
不需要换 SDK,不需要重新鉴权,请求格式也不用改。现在我的配置文件里就存了这么一个模型 ID 字典:
MODELS = {
"fast": "Qwen/Qwen2.5-7B-Instruct", # 便宜,用于快速任务
"reasoning": "deepseek-ai/DeepSeek-R1", # 复杂逻辑
"coding": "moonshotai/Kimi-K2.7-Code", # 代码生成
"long": "LongCat/LongCat-2.0", # 超大上下文
}
第六步:图像生成
SiliconFlow 可不只能处理文本。我还测试了它的图像模型,不过用的是另一种接口格式:
response = client.images.generate(
model="stabilityai/stable-diffusion-3-5-large",
prompt="A developer's desk with multiple monitors showing code, warm lighting, photorealistic",
size="1024x1024"
)
print(response.data[0].url) # 返回生成图像的 URL
图像生成速度快得惊人——生成一张 1024x1024 的图不到 10 秒。画质跟我本地跑 Stable Diffusion 差不多,但完全不需要显卡。
踩坑与限制
用了 SiliconFlow 几周后,这些是我希望早点知道的事:
并非所有 OpenAI 参数都支持。 虽然平台支持“大部分” OpenAI 相关参数,但我发现像
logprobs和top_logprobs这种冷门参数,并不是每个模型都能用。依赖特定参数前,最好先查查模型文档。模型 ID 必须完全匹配。 模型字符串需要包含供应商前缀——得写
deepseek-ai/DeepSeek-R1,不能只写DeepSeek-R1。我就因为漏了前缀,报了“model not found”的错误,白白浪费了 20 分钟调试。速率限制因模型和套餐而异。 模型页面会显示每个模型的速率限制。免费套餐的限制更低。我在批量测试时撞到了速率限制,只好在代码里加了指数退避机制。
缓存输入价格是个大亮点。 SiliconFlow 对缓存输入 token 的定价便宜得多。比如,LongCat-2.0 常规输入是 $0.75/M,但缓存输入只要 $0.015/M——相当于打了 2% 的折扣(便宜了 98%)。如果你要反复发送相同的系统提示词(咱们大多数人都是这么干的),这能省下一大笔钱。
Playground 不生成代码。 跟有些平台不同,Playground 不会根据你的测试提示词直接吐出对应的 API 代码。你得自己写集成代码,或者去文档里抄代码片段。
总结
SiliconFlow 已经成了我做模型实验的首选。兼容 OpenAI 的 API 意味着零集成摩擦,一个接口背后藏着 200 多个模型,彻底免去了在多个供应商之间手忙脚乱的麻烦。缓存输入的定价也确实能打——我最近一个项目跑下来,我的账单大概只有直接用原供应商的五分之一。
它也不是完美的:文档还可以更详细些,少部分高级参数缺失,Playground 相比竞品也显得有些基础。但对于只想快速、便宜调用模型、不想折腾配置的开发者来说,它完全兑现了承诺。
先用免费额度起步,在 Playground 里测两三个模型,然后用 OpenAI SDK 集成。不到 30 分钟,你就能跑通一条完整的流水线。