如何通过 wrangler secret put 给 StaffML 的 Ask Interviewer Worker 接入新的 LLM 提供商
【免费下载链接】cs249r_bookMachine Learning Systems项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book
StaffML 的 Ask Interviewer 面板由一个部署在 Cloudflare 上的 Worker 支撑,默认只使用 Cloudflare Workers AI 的 Llama 3.1 8B 兜底模型,不需要任何 API Key。当你拿到 Groq、OpenAI、Anthropic、Gemini、OpenRouter 或其他 OpenAI 兼容服务的 Key 后,目标是让它被这个 Worker 用起来。好消息是:对于 Worker 内置的提供商,接入只需要一条wrangler secret put命令——不改代码、不重新部署,secret 在约 30 秒内生效。
前提条件
- 已经按 部署指南 完成 Worker 的首次部署(安装 wrangler、
npx wrangler login登录、创建 KV 命名空间、npx wrangler deploy),并且curl https://<你的部署域名>.workers.dev/health能返回{ "ok": true, ... }。 - 本地已安装 Node.js 18+。
- 你在提供商控制台申请到的 API Key。
以下命令都在 Worker 目录下执行:
cd interviews/staffml/worker用 wrangler secret put 接入一个提供商
secret put会把值存到 Cloudflare 的密钥存储里。文档明确说明:secrets 不会进入 git、不会出现在部署产物中,只能在 Worker 运行时访问。命令执行后会提示你粘贴 Key,输入即完成,无需wrangler deploy。
内置提供商对应的 secret 名称和文档给出的默认模型如下:
| 提供商 | 必设 secret | 默认模型(来自文档) |
|---|---|---|
| Groq | GROQ_API_KEY | 部署指南 写的是 Llama 3.1 70B,而 src/index.ts 中defaultModel为llama-3.3-70b-versatile,两处不一致,以实际wrangler.toml部署版本的代码为准 |
| OpenAI | OPENAI_API_KEY | gpt-4o-mini |
| Anthropic | ANTHROPIC_API_KEY | claude-3-5-haiku-latest |
| Google Gemini | GEMINI_API_KEY | gemini-1.5-flash |
| OpenRouter | OPENROUTER_API_KEY | meta-llama/llama-3.1-70b-instruct |
以 Groq 为例:
npx wrangler secret put GROQ_API_KEY # 提示时粘贴你的 Groq Key其他提供商同理,把命令中的 secret 名换成上表对应项即可,例如npx wrangler secret put OPENAI_API_KEY。
部分提供商支持用额外的 secret 覆盖默认模型或端点,只在你确实用不上默认值时才需要设置:
# OpenRouter 换模型 npx wrangler secret put OPENROUTER_MODEL # 其他覆盖项在 Env 接口中可见,如 OPENAI_MODEL、ANTHROPIC_MODEL、 # GEMINI_MODEL、GROQ_BASE_URL、OPENAI_BASE_URL 等,定义见 src/index.ts注意:部署指南 与 src/index.ts 的Env接口对可覆盖项的覆盖范围不完全一致(例如源码中有GROQ_BASE_URL、OPENROUTER_BASE_URL,文档只列出了OPENROUTER_MODEL等)。设置前以Env接口实际声明的字段名为准,拼错的 secret 名只会安静地躺在密钥列表里,不会报错也不会生效。
验证接入是否成功
第一步:查/health。把 URL 换成wrangler deploy输出的实际地址:
curl https://staffml-interviewer.your-subdomain.workers.dev/health成功时providers列表会包含新提供商名。文档示例(Groq 接入后):
{ "ok": true, "providers": ["groq", "cf-workers-ai"], "waitlist": true }providers里出现你刚配的提供商名,说明 secret 已被 Worker 识别;"waitlist": true与本次接入无关,它只表示 WAITLIST_KV 命名空间已配置。
第二步:发一个真实问题,确认走的是新提供商。
curl -X POST https://staffml-interviewer.your-subdomain.workers.dev/ask \ -H "Content-Type: application/json" \ -d '{ "question": "what is the typical latency budget?", "context": "Real-time inference for an ad ranking model" }'返回的 JSON 带answer、provider、vendorLabel、modelLabel、privacyNote五个字段。看provider字段是否为你新接入的提供商名,vendorLabel/modelLabel/privacyNote会原样显示在 StaffML 面板的归属说明里,也可以顺便确认展示内容是否符合预期。
调整提供商优先级
只设置 secret 就能让新提供商进入优先级链,但默认顺序是groq → openai → anthropic → gemini → openrouter → cf-workers-ai:链上第一个"可用"(即 secret 已设置)的提供商获胜,某个提供商请求失败(超时、5xx、响应无效)时自动落到下一个,cf-workers-ai永远作为兜底追加在链尾。
如果你新接的是 OpenRouter,而已经设置过 Groq 和 OpenAI,那么请求仍会优先走 Groq。想让新提供商排第一:
npx wrangler secret put PROVIDER_PRIORITY # 提示时输入逗号分隔的提供商名,逗号两侧不要有空格,例如: # openrouter,groq,cf-workers-ai该值同样是 secret 形式下发,对下一个请求生效,不需要重新部署。
可选分支:接入自托管的 OpenAI 兼容服务
如果你有 Ollama、vLLM、llama.cpp server 等暴露 OpenAI 兼容接口的本地服务,可以借用 openai 适配器,不设anthropic/gemini等,而是设置这三个 secret:
npx wrangler secret put OPENAI_API_KEY # 任意非空字符串即可 npx wrangler secret put OPENAI_BASE_URL # 例如 http://your-host:11434/v1 npx wrangler secret put OPENAI_MODEL # 例如 llama3.1:70b注意这会占用 openai 适配器的身份,效果等同于"把 OpenAI 提供商指向你的本地机器",验证方式与上文/health、/ask相同(providers中应出现openai)。
对于文档未内置的提供商(Together AI、DeepSeek、Fireworks 等),worker/README.md 提供了三步做法:在src/index.ts的ADAPTERS数组追加一个 adapter 条目、在Env接口补上对应字段、然后wrangler secret put <NEW>_API_KEY并wrangler deploy。这条路径需要改代码,不属于"只跑 secret put"的范畴,仅在你需要的提供商不在内置列表时才使用。
换 Key、下线提供商与相关运维操作
- 换 Key:再跑一次
npx wrangler secret put GROQ_API_KEY并粘贴新 Key,旧值被替换,约 30 秒内生效。注意 worker/README.md 的 "Secret management" 一节把轮换写成了delete+put+deploy三步,与部署指南的"直接 put、无需 redeploy"表述不一致;两处文档都真实存在,建议以 部署指南 的 Rotation 一节为准操作,若发现新 Key 未生效再用 README 的三步法兜底。 - 下线提供商:
npx wrangler secret delete GROQ_API_KEY,下一个请求起 Worker 停止使用它并回落到链上下一个可用提供商。 - 列出已设 secret:
npx wrangler secret list(只显示名称,不显示值)。 - 临时提高限流(接入的提供商有自己的免费额度时):
npx wrangler secret put RATE_LIMIT_PER_HOUR 30、npx wrangler secret put RATE_LIMIT_PER_DAY 200、npx wrangler secret put GLOBAL_DAILY_CEILING 50000,默认值分别是 10/60/8000,对下一个请求生效。 - 观察请求:
npx wrangler tail可以流式查看 Worker 处理的每个请求,包括错误和限流命中。
边界说明
- 本文只覆盖"已部署 Worker 后接入新提供商"的场景;首次部署(创建 KV 命名空间、
wrangler deploy、把NEXT_PUBLIC_INTERVIEWER_ENDPOINT接到 StaffML 构建环境)不在本文范围,见 WORKER_DEPLOY.md。 - 如果所有提供商都请求失败,
/ask会返回all_providers_failed错误,此时可npx wrangler tail查看具体是哪一个提供商在报错。 - 各提供商的
privacyNote(例如 Google 免费 Gemini API 可能用提示词改进产品)会显示在面板归属说明中,接入商用或免费额度提供商前建议先读一下该提供商对应条目。
【免费下载链接】cs249r_bookMachine Learning Systems项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考