用途:把使用 Perplexity Sonar API 的应用部署到边缘与服务器平台。Perplexity 提供兼容 OpenAI 的端点 https://api.perplexity.ai/chat/completions,任何能发起 HTTPS 请求的平台均可调用。
前提:API 密钥存于 PERPLEXITY_API_KEY;已安装平台 CLI(vercel、gcloud 或 docker);应用已在本地测试通过。
主要能力与用法:
- Vercel 边缘函数:以 openai 客户端设置 baseURL 为 https://api.perplexity.ai,支持流式(stream)与非流式返回,非流式返回 answer、citations、model。部署命令:vercel env add PERPLEXITY_API_KEY production 与 vercel deploy --prod。
- Cloud Run + Redis 缓存:Express 服务按 model 与 query 生成 sha256 缓存键,命中则返回 cached:true,未命中调用 API 后以 setEx 缓存 3600 秒。部署命令:gcloud secrets create perplexity-api-key --data-file=<(echo -n "$PERPLEXITY_API_KEY"),以及 gcloud run deploy perplexity-search --source . --set-secrets=PERPLEXITY_API_KEY=perplexity-api-key:latest --port=8080 --allow-unauthenticated。
- Docker:基于 node:20-alpine,npm ci --production、构建后以 node dist/server.js 启动,暴露 8080。
- Vercel 配置:在 functions 中为 api/search.ts 设置 maxDuration 30。
- 健康检查:/health 以 sonar 模型发送 ping,返回 healthy 与延迟,失败返回 503。
适用场景:需要把 Perplexity 搜索能力上线到生产环境,并希望统一处理密钥、缓存与健康检查的部署流程。
限制与注意:边缘函数超时多因 sonar-pro 超过 30 秒,可改用 sonar 或提高 maxDuration;新闻类结果缓存过期问题可通过 search_recency_filter 与更短 TTL 缓解;部署后密钥无效需核对 vercel env ls 或 gcloud secrets;流式中断需处理 abort 信号。多环境配置可参考 perplexity-multi-env-setup。