跳到主要内容

AI SDK 与开发框架

问题

开发 AI 应用时有哪些主流的 SDK 和框架?各有什么优缺点?

答案

一、主流 SDK 对比

SDK维护方语言特点适用场景
Vercel AI SDKVercelTS流式优先、多 Provider、React HooksNext.js/React 应用
LangChain.jsLangChainTS链式编排、Agent、RAG复杂 AI 工作流
OpenAI SDKOpenAITS/Python官方、稳定、简洁仅用 OpenAI 模型
Anthropic SDKAnthropicTS/PythonClaude 专属、Tool Use仅用 Claude
MastraMastraTSAgent 框架、工作流Agent 应用

二、Vercel AI SDK

Vercel AI SDK 是目前前端生态最流行的 AI 开发框架:

app/api/chat/route.ts
import { openai } from "@ai-sdk/openai";
import { streamText } from "ai";

export async function POST(req: Request) {
const { messages } = await req.json();

// streamText:流式调用 LLM
const result = streamText({
model: openai("gpt-4o"),
messages,
system: "你是一个有帮助的助手。",
});

// 返回流式响应
return result.toDataStreamResponse();
}
app/page.tsx
"use client";
import { useChat } from "@ai-sdk/react";

export default function Chat() {
const { messages, input, handleInputChange, handleSubmit, isLoading } =
useChat();

return (
<div>
{messages.map((m) => (
<div key={m.id}>
<strong>{m.role}:</strong> {m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
<button type="submit" disabled={isLoading}>发送</button>
</form>
</div>
);
}
Vercel AI SDK 核心优势
  • 多 Provider:统一接口切换 OpenAI/Claude/Google/Ollama
  • 流式原生streamTextstreamObject 开箱即用
  • React HooksuseChatuseCompletionuseObject 零配置
  • Tool Calling:内置工具调用和多步推理

三、LangChain.js

LangChain 适合复杂 AI 工作流RAG 系统

import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";

const model = new ChatOpenAI({ model: "gpt-4o" });

// 基础调用
const response = await model.invoke([
new SystemMessage("你是一个翻译助手"),
new HumanMessage("将以下内容翻译成英文:你好世界"),
]);

// 链式编排(LCEL)
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";

const chain = ChatPromptTemplate.fromMessages([
["system", "你是一个{role}"],
["human", "{input}"],
])
.pipe(model)
.pipe(new StringOutputParser());

const result = await chain.invoke({
role: "翻译助手",
input: "你好世界",
});

四、官方 SDK(OpenAI / Anthropic)

当只用单一模型时,官方 SDK 最轻量:

// OpenAI
import OpenAI from "openai";
const openai = new OpenAI();

const response = await openai.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "你好" }],
stream: true,
});

// Anthropic
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic();

const message = await anthropic.messages.create({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [{ role: "user", content: "你好" }],
});

五、选型决策


常见面试问题

Q1: Vercel AI SDK 和 LangChain.js 怎么选?

答案

  • Vercel AI SDK:关注前端体验——流式渲染、React Hooks、Chat UI,适合标准聊天/对话类应用
  • LangChain.js:关注后端编排——RAG pipeline、复杂 Agent、多步工作流,适合需要大量自定义逻辑的项目
  • 二者可结合使用:LangChain 做后端编排,Vercel AI SDK 做前端渲染

Q2: 为什么不直接用 OpenAI SDK?

答案

  • OpenAI SDK 绑定单一模型,切换到 Claude/Gemini 需要重写代码
  • 没有流式渲染的 React 集成
  • 缺少 Tool Calling 的多步推理抽象
  • 如果项目简单且确定只用 OpenAI,直接用 SDK 更轻量

相关链接