哈喽哇!我是小不 ,不简说的不。在代码世界疯狂蹦跶的 "非资深选手"🙋♂️!主打一个*"踩坑我来,避坑你学"*。毕竟独乐乐不如众乐乐,让大家少走弯路,才是咱的终极使命✨~
今天盘点几个的 Node.js AI SDK。
流行趋势分析
package | github star | npm weekly downloads |
---|---|---|
openai | 9.5k⭐️ | 470w |
langchainjs | 15.1k⭐️ | 118w |
anthropic | 1.1k⭐️ | 170w |
1. OpenAI SDK
介绍
OpenAI 官方的 Node.js 库仓库,为 TypeScript 和 JavaScript 开发者提供便捷访问 OpenAI REST API 的方式。
安装
bash
npm install openai
使用示例
javascript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted
});
const completion = await client.chat.completions.create({
model: 'gpt-4o',
messages: [
{ role: 'developer', content: 'Talk like a pirate.' },
{ role: 'user', content: 'Are semicolons optional in JavaScript?' },
],
});
console.log(completion.choices[0].message.content);
流式输出示例
javascript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted
});
const stream = await client.responses.create({
model: 'gpt-4o',
input: 'Say "Sheep sleep deep" ten times fast!',
stream: true,
});
for await (const event of stream) {
console.log(event);
}
2. LangChain
介绍
如果你厌倦了传统的 NLP 工具,不妨试试 LangChain。这是一款让人眼前一亮的新工具,能够轻松完成各种复杂的 NLP 任务。它的理念是:让技术更简单,让工作更有趣。
安装
bash
npm i @langchain/openai
使用示例
javascript
import { ChatOpenAI } from "@langchain/openai";
const model = new ChatOpenAI({
apiKey: process.env.OPENAI_API_KEY,
modelName: "gpt-4-1106-preview",
});
const response = await model.invoke(new HumanMessage("Hello world!"));
流式输出示例
javascript
import { ChatOpenAI } from "@langchain/openai";
const model = new ChatOpenAI({
apiKey: process.env.OPENAI_API_KEY,
modelName: "gpt-4-1106-preview",
});
const response = await model.stream(new HumanMessage("Hello world!"));
3. Anthropic
介绍
Anthropic 官方提供的用于与 Anthropic API 进行交互的 TypeScript 库。它提供了便捷的方式来访问 Anthropic 的 REST API,支持多种功能和不同的运行时环境
安装
bash
npm i @anthropic-ai/sdk
使用示例
javascript
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: process.env['ANTHROPIC_API_KEY'], // This is the default and can be omitted
});
const message = await client.messages.create({
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello, Claude' }],
model: 'claude-sonnet-4-20250514',
});
console.log(message.content);
流式输出示例
js
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: process.env['ANTHROPIC_API_KEY'], // This is the default and can be omitted
});
const stream = await client.messages.create({
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello, Claude' }],
model: 'claude-sonnet-4-20250514',
stream: true,
});
for await (const messageStreamEvent of stream) {
console.log(messageStreamEvent.type);
}
tokens 计算示例
javascript
const message = await client.messages.create(...);
console.log(message.usage);
// { input_tokens: 25, output_tokens: 13 }
总结
维度 | openai-node | langchainjs | anthropic-sdk-typescript |
---|---|---|---|
核心定位 | OpenAI 官方 API 客户端(专注于 OpenAI 模型) | 通用 LLM 应用开发框架(支持多模型集成) | Anthropic 官方 API 客户端(专注于 Claude 模型) |
核心功能 | 封装 OpenAI API(对话、嵌入、函数调用等) | 提供链(Chains)、代理(Agents)、记忆(Memory)等抽象,支持多模型接入 | 封装 Anthropic API(对话、流式响应、工具调用等) |
模型支持 | 仅支持 OpenAI 模型(GPT-3.5/4、DALL·E 等) | 支持 OpenAI、Anthropic、Google 等数十种模型 | 仅支持 Anthropic 模型(Claude 2/3 系列) |
优势 | 1. 官方维护 :与 OpenAI API 同步更新,兼容性最佳 2. 轻量高效 :无冗余依赖,适合直接调用 OpenAI 模型 3. 类型完善 :TypeScript 类型定义精确,开发体验流畅 4. 功能对齐:第一时间支持 OpenAI 新特性(如 GPT-4o 多模态) | 1. 生态丰富 :提供完整的 LLM 应用开发工具链(链、代理、检索增强等) 2. 跨模型兼容 :一套代码可切换多模型,降低迁移成本 3. 场景化工具 :内置文档加载、向量存储等模块,适合复杂应用(如知识库问答) 4. 社区活跃:插件和第三方集成丰富(如与数据库、API 的连接) | 1. 官方优化 :针对 Claude 模型特性深度适配(如长上下文支持) 2. 多环境兼容 :支持 Node.js、Cloudflare Workers 等边缘环境 3. 流式体验 :流式响应处理流畅,适合实时交互场景 4. 工具调用:原生支持 Claude 的工具使用能力,与模型功能深度绑定 |
劣势 | 1. 单一模型依赖 :仅支持 OpenAI,无法切换其他模型 2. 功能局限:无高级抽象(如记忆、代理),需手动实现复杂逻辑 | 1. 学习成本高 :概念较多(链、代理等),入门门槛高 2. 冗余性 :仅需调用单一模型时,框架 overhead 较大 3. 版本兼容问题:快速迭代可能导致 API 不稳定 | 1. 模型单一 :仅支持 Claude,无法扩展至其他模型 2. 生态较窄:无额外工具链,复杂应用需自行搭建(如记忆、检索) |
适用场景 | - 仅需调用 OpenAI 模型的场景(如聊天机器人、文本生成) - 追求轻量和官方兼容性的场景 | - 多模型切换的应用(如模型对比、容灾备份) - 复杂 LLM 应用(如智能代理、检索增强生成 RAG) - 需要整合外部工具(数据库、API)的场景 | - 仅需调用 Claude 模型的场景(如长文档处理、合规场景) - 边缘环境部署(如 Cloudflare Workers) |
典型用户 | 专注 OpenAI 生态的开发者,需快速接入 GPT 模型 | 构建复杂 LLM 应用的团队,需多模型支持和工具链 | 专注 Claude 模型的开发者,尤其是依赖长上下文能力的场景 |
使用建议
- 若需快速接入单一模型 (如仅用 GPT 或 Claude),优先选官方客户端(
openai-node
/anthropic-sdk-typescript
),轻量且兼容性最佳; - 若需开发复杂 LLM 应用 (如 RAG、多模型切换、智能代理),选
langchainjs
,其工具链能大幅降低开发成本; - 若需边缘环境部署 (如 Cloudflare Workers),
anthropic-sdk-typescript
的多环境支持更有优势; - 若需第一时间使用模型新特性 (如 GPT-4o 多模态、Claude 3 工具调用),官方客户端更新速度快于
langchainjs
。
写到最后
💡 温馨提示:本文章可随意 "转发扩散",让更多小伙伴加入 "少踩坑联盟"!毕竟独坑坑不如众坑坑...... 啊不,是独乐乐不如众乐乐😂!