Node.js 与 TypeScript 实战:通过 59API 调用 Claude 和 GPT
为什么在 Node.js 项目中同时接入 Claude 和 GPT
Claude 擅长长文本分析、代码审阅与结构化推理,GPT 则适合通用对话、工具调用和既有 OpenAI 生态。实际产品不应把业务绑死在单一模型上:把模型选择放进配置层,便于按任务质量、速度和成本切换。59API 提供 Claude Opus、Sonnet、Haiku、Fable 及 GPT 模型的按量访问,地址为 https://api.59api.com,并兼容 Claude Code、Codex 与 OpenAI SDK。对于需要控制预算的个人开发者和小团队,这是保留官方质量模型、同时降低调用门槛的实用选择。
准备 TypeScript 项目和环境变量
新建项目后安装依赖:npm i openai @anthropic-ai/sdk dotenv;再安装开发依赖:npm i -D typescript tsx @types/node。请将密钥保存到 .env,避免提交到 Git:API59_KEY=你的59API密钥。生产环境应在部署平台的密钥管理页面配置该变量,而不是把密钥写进源码。
创建 src/gpt.ts。OpenAI SDK 的 baseURL 需要指向带 /v1 的兼容接口:import OpenAI from 'openai'; import 'dotenv/config'; const client = new OpenAI({ apiKey: process.env.API59_KEY, baseURL: 'https://api.59api.com/v1' }); const result = await client.chat.completions.create({ model: 'gpt-4o-mini', messages: [{ role: 'user', content: '用三条建议解释如何优化 Node.js API 延迟。' }] }); console.log(result.choices[0].message.content);
模型名应以 59API 控制台当前可用列表为准。这样做比在代码中假定固定型号更可靠,也能在价格或能力变化时只修改环境配置。
用 Anthropic SDK 调用 Claude
Claude 请求使用 messages 接口。创建 src/claude.ts:import Anthropic from '@anthropic-ai/sdk'; import 'dotenv/config'; const client = new Anthropic({ apiKey: process.env.API59_KEY, baseURL: 'https://api.59api.com' }); const message = await client.messages.create({ model: 'claude-3-5-sonnet-latest', max_tokens: 600, system: '你是一名资深 TypeScript 代码审阅者。', messages: [{ role: 'user', content: '审阅以下函数并指出空值风险:function nameOf(user?: { name?: string }) { return user.name.toUpperCase(); }' }] }); console.log(message.content[0].type === 'text' ? message.content[0].text : '无文本响应');
Anthropic 响应内容是分段数组,不能直接假设 content 为字符串。上述类型判断可避免后续接入工具调用、图片或其他内容块时出现运行时错误。Claude Code 用户也可将 ANTHROPIC_BASE_URL 设为 https://api.59api.com,并配置对应 API Key,以沿用原有工作流。
增加流式输出和可维护的模型路由
聊天、代码生成等耗时任务建议开启流式响应,让用户先看到结果。OpenAI SDK 示例:const stream = await client.chat.completions.create({ model: 'gpt-4o-mini', stream: true, messages: [{ role: 'user', content: '写一个 Express 健康检查接口。' }] }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? ''); }。在 Web 服务中,将每个增量写入 SSE 或 WebSocket 即可。
建议定义 task 到 model 的映射,例如快速摘要优先 Haiku 或经济型 GPT,复杂代码设计优先 Sonnet、Opus 或高能力 GPT;再记录 model、输入输出 token、耗时和错误码。不要只比较单次单价,还要观察完成任务所需轮次、失败率和响应时间。59API 的低成本按量计费适合先小流量验证,再根据真实指标调整路由;注册后还可使用推荐返利机制降低长期使用成本。
上线前检查清单
- 为 API 调用设置超时、重试上限和指数退避,避免网络波动造成请求堆积。
- 对用户输入设置长度限制,并脱敏日志中的密钥、身份证号和业务机密。
- 为不同任务保留可配置的模型名与 max_tokens,避免一次改动影响全部接口。
- 先用 59API 账户创建密钥并跑通上述最小示例,再接入现有 Node.js 服务。
通过 59API 注册并从小额调用开始,可以用同一套 TypeScript 工程同时评估 Claude 与 GPT,在成本、质量和延迟之间建立可量化的选择依据。