← 博客书房

Agent 实战:从 Dify 到 LangGraph·TS 还是 Python:一次真实的技术决策

实战20 分钟

TS 还是 Python:一次真实的技术决策

实战锚点 · lovelyPet:Python Agent 服务废弃、AI 并入全栈 TS 的完整决策复盘——两条路线的真实权衡。

2026 年 8 月 23 日,我做了一个决定:废弃萌宠圈的 Python Agent 服务,AI 能力并入全栈 TS。这个决定对不对?这篇文章是完整的决策复盘。

背景:同一个项目里有两套 AI 服务

萌宠圈(lovelyPet)是一个宠物社交 App。在架构演进中,它同时存在过两套 AI 服务:

同一个项目 · 两条路线 · 一次抉择 Python Agent 服务(已废弃 ⚠️) hp-agent-service · FastAPI + AsyncPG 日记生成(diary) RAG(rag) TTS(tts) 独立部署 · 独立依赖 · 独立维护 vs 全栈 TS API(现存 ✓) hp-pet-api · NestJS + OpenAI SDK 日记生成(SSE 流式) 与业务模块同层 134 行核心代码 同一进程 · 同一部署 · 同一类型系统 决策:AI 能力并入全栈 TS · Python 退出技术栈 · 2026-08-23

Python 路线的三个痛点

1. 部署双倍

Python 服务需要独立的运行时、独立的 Docker 镜像、独立的 CI/CD 流水线。对于一个人的项目,这不是「微服务」,这是双倍运维。

2. 类型断裂

前端 → TS API → Python Agent → 数据库。每一次跨界,TypeScript 的类型安全就断一次。DTO 要写两遍(TS 的 interface + Python 的 Pydantic model),改一个字段要动两个项目。

3. 生态优势在缩小

2024 年选 Python 的理由是 LangChain/LlamaIndex 只有 Python 版。但 2026 年:

  • LangChain.js 已完整支持工具调用、记忆、RAG、Agent
  • easy-agent 证明纯 TS 可以做出 Claude Code 级的 Agent
  • OpenAI SDK 的 TS 版和 Python 版功能完全对齐

TS 路线的三个优势

1. 一个进程、一套部署

// hp-pet-api/src/modules/ai/ai.service.ts
// AI 功能就是 NestJS 的一个 module,和其他业务模块平级
@Module({
  imports: [AiModule],
  controllers: [AiController],
  providers: [AiService],
})
export class PetApiModule {}

不需要独立的 AI 服务。AI 调用就是 AiService 的一个方法,和 UserService、PetService 没有任何区别。

2. 类型安全贯穿全栈

// 前端定义的 DiaryStyle
enum DiaryStyle {
  WARM = 'warm',
  INDEPENDENT = 'independent',
  RAMBLE = 'ramble',
}

// AI Service 直接用同一个类型
const STYLE_PROMPTS: Record<DiaryStyle, string> = {
  [DiaryStyle.WARM]: '风格:暖心。语气温柔、真诚…',
  [DiaryStyle.INDEPENDENT]: '风格:独立。高冷、傲娇…',
  [DiaryStyle.RAMBLE]: '风格:碎碎念。活泼跳脱…',
};

前端加了一种新风格 → TypeScript 编译器立刻报错 → 不会漏改。这是 Python 路线做不到的。

3. 代码量减半

Python 服务有 diary、rag、tts 三个 module + 每个的 service/controller/dto + 独立的数据库连接 + 独立的配置。废弃后,TS 版 ai.service.ts 只有 134 行——因为不需要跨服务通信的胶水代码。

那 Python 什么时候更合适?

诚实地列出 Python 的真实优势:

维度Python 更合适TS 更合适
团队背景数据/算法团队前端/全栈团队
模型微调PyTorch 生态只有 Python不涉及
数据处理pandas/numpy 无可替代简单 CRUD
Agent 框架LangGraph Python 文档更丰富LangChain.js 已够用
部署运维已有 Python 基础设施已有 Node 基础设施
类型安全不在乎核心需求
团队规模多人分工(AI 团队 + 业务团队)一人/小团队

我的情况:前端工程师、一人项目、已有 NestJS 全栈、不需要微调。六个维度全指向 TS。

决策框架:不是「哪个更好」,是「哪个对你更好」

选型决策:问自己四个问题 如果以下全是 ✓ → 选 TS □ 团队是前端/全栈背景 □ 一人或小团队(不想维护两套部署) □ 不需要 PyTorch / 微调 如果以下有 ✓ → 考虑 Python □ 团队有数据/算法工程师 □ 需要微调 / 本地推理 □ 已有 Python 部署基础设施

本章要点

  1. Python Agent 服务的三个痛点:部署双倍、类型断裂、生态优势在缩小
  2. TS 的三个优势:一个进程、类型贯穿全栈、代码量减半
  3. Python 仍然有真实优势:数据科学、微调、多人分工
  4. 选型不是「哪个更好」,是「对你的团队和项目哪个更合适」
  5. easy-agent 证明纯 TS 可以做出 Claude Code 级 Agent——「TS 不够用」不再是借口

→ 下一章:Context Engineering