AI Agent 技术栈选型:入门只需要这些

45 阅读5分钟

本章目标:帮你在一堆技术名词里做减法,只留下"现在就需要"的东西。

刚接触 Agent 开发,最容易犯的错误就是技术栈焦虑——LangChain、LangGraph、LlamaIndex、CrewAI、AutoGen、Dify、向量数据库、知识图谱……名词太多,不知道从哪下手。

真相是:你第一个 Agent 项目,只需要 4 样东西。


2.1 一个 LLM API —— 先跑通,别纠结

Agent 的"大脑"就是大语言模型。你需要一个能调用的 LLM API。

入门推荐:选一个,立刻注册,拿到 API Key。

选项优势适合场景
OpenAI (GPT-4o)生态最成熟,教程最多英文为主的项目
Anthropic (Claude)长上下文、代码能力强需要处理长文档
豆包 (Doubao)国内直连、中文优化国内部署、中文场景
DeepSeek性价比高、推理能力强预算敏感的项目

新手常见纠结:

"我应该用哪个模型?GPT-4o 还是 Claude?"

答案:都行,先用一个跑通。 模型切换的成本很低(改一个 API 地址和 Key),但一直在选型上犹豫的成本很高。

// 就这么简单,3 行代码调用一个 LLM
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

const response = await client.messages.create({
  model: 'claude-sonnet-4-6',
  max_tokens: 1024,
  messages: [{ role: 'user', content: '你好,请介绍一下自己' }],
});
console.log(response.content[0].text);

关键点: 大部分 LLM API 的调用方式都高度相似(传入消息列表,返回文本),切换模型只需要改几行配置。所以不要在选型上花超过 10 分钟。


2.2 一个数据库 —— PostgreSQL 一把梭

Agent 需要存数据:用户信息、对话历史、生成的内容、配置项……你需要一个数据库。

入门推荐:PostgreSQL,不用考虑第二个。

为什么?

  1. 够用 — 关系型数据、JSON 数据、全文搜索,PostgreSQL 全都支持
  2. 向量搜索也能做 — 装个 pgvector 插件,就能存和查询向量(Embedding),不需要额外装 Pinecone、Milvus 等专用向量库
  3. 生态成熟 — ORM 支持好(Prisma、TypeORM),云服务多(Supabase、Neon、阿里云 PolarDB)
  4. 一个库解决所有问题 — 不用同时维护 MySQL + Redis + Milvus 三套系统
# 本地开发:用 Docker 一行启动
docker run -d --name postgres \
  -e POSTGRES_PASSWORD=mysecret \
  -p 5432:5432 \
  postgres:16

# 启用向量搜索
psql -c "CREATE EXTENSION IF NOT EXISTS vector;"

"等等,我不需要专门的向量数据库吗?"

入门阶段真的不需要。pgvector 能处理百万级别的向量检索,对于大多数 Agent 项目绰绰有余。等你的数据量真的到了千万级别,再考虑专用方案也不迟。


2.3 一个 ORM —— Prisma,让你不用手写 SQL

直接写 SQL 可以,但容易出错,也不利于维护。ORM(对象关系映射)帮你用代码操作数据库。

入门推荐:Prisma。

为什么不是 TypeORM / Sequelize / Drizzle?

特性PrismaTypeORM
类型安全自动生成完整类型需要手动定义
学习曲线Schema 文件直观装饰器语法较重
迁移管理内置 migrate 命令需要额外配置
调试体验错误信息清晰错误有时难懂
// prisma/schema.prisma — 定义你的数据模型
model Conversation {
  id        String   @id @default(uuid())
  title     String
  messages  Message[]
  createdAt DateTime @default(now())
}

model Message {
  id             String       @id @default(uuid())
  role           String       // "user" | "assistant"
  content        String
  conversation   Conversation @relation(fields: [conversationId], references: [id])
  conversationId String
}
# 三条命令搞定数据库
npx prisma db push      # 同步 schema 到数据库
npx prisma generate     # 生成类型安全的客户端
npx prisma studio       # 打开可视化数据管理界面

2.4 一个后端框架 —— NestJS 或 Express

Agent 需要一个 HTTP 服务来接收请求、调用 LLM、返回结果。

入门推荐:

  • 想快速原型 → Express(最简单,代码量最少)
  • 想长期维护 → NestJS(模块化架构,适合项目变大后的组织)
// Express 版 — 最小的 Agent 后端
import express from 'express';
import Anthropic from '@anthropic-ai/sdk';

const app = express();
app.use(express.json());

const client = new Anthropic();

app.post('/chat', async (req, res) => {
  const { message } = req.body;
  const response = await client.messages.create({
    model: 'claude-sonnet-4-6',
    max_tokens: 1024,
    messages: [{ role: 'user', content: message }],
  });
  res.json({ reply: response.content[0].text });
});

app.listen(3000, () => console.log('Agent 服务启动在 http://localhost:3000'));

2.5 你现在不需要的东西

很多教程会一上来就让你装一大堆工具。以下这些入门阶段可以先跳过

技术为什么先不需要什么时候需要
LangChain抽象层太厚,入门反而增加理解成本需要复杂链式调用时
LangGraph状态机框架,初学者用不到需要多步骤、有分支的 Agent 流程时
专用向量库 (Pinecone/Milvus)pgvector 够用数据量超千万、需要专业调优时
RedisAgent 入门不需要缓存层高并发、需要会话缓存时
Kubernetes部署一个 Agent 用 Docker 就够需要自动扩缩容时
消息队列 (RabbitMQ/Kafka)同步调用先跑通需要异步任务处理时

原则:每多引入一个技术,就多了一个出 Bug 的地方。 先用最少的技术栈跑通,再按需添加。


2.6 最小技术栈总结

你的第一个 Agent 项目技术栈:

┌─────────────────────────────────┐
│         前端 (可选)              │
│   Vue / React / 纯 HTML 都行    │
├─────────────────────────────────┤
│         后端框架                 │
│   Express / NestJS              │
├─────────────────────────────────┤
│         LLM API                 │
│   OpenAI / Claude / 豆包        │
├─────────────────────────────────┤
│         ORM                     │
│   Prisma                        │
├─────────────────────────────────┤
│         数据库                   │
│   PostgreSQL + pgvector         │
└─────────────────────────────────┘

总共 4 个核心依赖,一个下午就能搭起来。

下一章我们会解释这些技术背后的核心概念——Embedding 是什么、RAG 怎么工作、Tool Use 有什么用。但你不需要先理解这些概念才能开始写代码。先动手,遇到问题再回来看概念解释。