Week 12:部署 + 复盘
🎯 本周目标:把你的 Agent 应用从"能在本地跑"变成"能让别人访问"。然后做项目复盘。
1. 部署选项
| 方案 | 难度 | 成本 | 适合 |
|---|---|---|---|
| 本地 Docker | 低 | 0 | 自己电脑上跑,练手 |
| Railway / Render | 低 | 免费 tier 够用 | 快速上线给别人试用 |
| 阿里云 / 腾讯云 | 中 | 几十/月 | 国内用户,合规需求 |
| Vercel + FastAPI Serverless | 中 | 免费 | 前端在 Vercel,后端 serverless |
| 自建服务器(AWS / 云主机) | 高 | 按需 | 长期生产运行 |
💡 推荐先做 本地 Docker + Railway,两个都很简单。
2. 本地 Docker 化
为什么 Docker?
- 一键打包,环境一致性(你的机器能跑,别人的也能)
- 方便后续部署到任何支持 Docker 的云平台
- TS 对照:相当于
docker build= 给你的 Node 项目写 Dockerfile
Dockerfile
# ===== 基础镜像 =====
FROM python:3.11-slim AS builder
# 工作目录
WORKDIR /app
# 系统依赖(chromadb 等可能需要)
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# ===== 安装 Python 依赖 =====
# 先复制依赖文件,利用 Docker 缓存层
COPY pyproject.toml README.md ./
RUN pip install --no-cache-dir -U pip && \
pip install --no-cache-dir fastapi uvicorn && \
pip install --no-cache-dir pydantic pydantic-settings && \
# 安装 LangGraph / LangChain 相关
pip install --no-cache-dir langgraph langchain langchain-core langchain-openai langchain-community && \
pip install --no-cache-dir langchain-chroma langchain-huggingface sentence-transformers langgraph-checkpoint-sqlite && \
pip install --no-cache-dir httpx python-dotenv && \
pip install --no-cache-dir langchain-text-splitters
# ===== 复制应用代码 =====
COPY app/ ./app/
COPY data/ ./data/
# ===== 启动命令 =====
# 用 uvicorn 启动,host 0.0.0.0 让容器外能访问
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
docker-compose.yml(可选,推荐)
version: "3.8"
services:
trading-ai:
build: .
container_name: electric-trading-ai
ports:
- "8000:8000"
env_file:
- .env
volumes:
- ./data:/app/data # 数据持久化
- ./chroma_db:/app/chroma_db
restart: unless-stopped
构建和运行
# 方式一:docker-compose(推荐)
docker-compose up --build
# 方式二:纯 docker
docker build -t electric-trading-ai .
docker run -p 8000:8000 --env-file .env -v ${PWD}/data:/app/data electric-trading-ai
验证
打开浏览器 → http://localhost:8000/docs
能看到 Swagger UI 就说明 Docker 跑通了!
3. 云部署(Railway 示例)
Railway 提供免费额度,支持直接连 GitHub 仓库自动部署。
步骤
- 把代码推到 GitHub(记得把
.env加进.gitignore) - 去 railway.app 用 GitHub 登录
- 点 "New Project" → "Deploy from GitHub repo"
- 选你的仓库,Railway 会自动检测是 Python 项目
- 在 "Variables" 里配置你的
.env内容(LLM_API_KEY 等) - Deploy → 等 1-2 分钟 → 拿到
https://xxx.up.railway.app的域名 - 访问
https://xxx.up.railway.app/docs验证
Railway 会自动帮你做什么?
- 检测到
pyproject.toml→ 用 Python 构建 - 自动暴露端口(默认 8000)
- 自动设置
PORT环境变量 - 自动分配 HTTPS 域名
- 代码 push 到 GitHub 后自动重新部署
💡 TS 对照:Railway 之于 Python/FastAPI,就像 Vercel 之于 Next.js/Node.js。
4. 安全注意事项
| 风险 | 怎么做 |
|---|---|
| LLM API Key 泄露 | .env 加进 .gitignore,Never commit 真实 Key |
| Prompt Injection | 不要把用户输入直接拼进 system prompt |
| 工具滥用 | 给每个工具加权限检查(谁能下单、额度限制等) |
| 敏感数据日志 | 不要把 API Key、交易记录打到日志里 |
| 依赖安全 | 定期 pip audit 检查漏洞 |
.gitignore 必须包含
# Python
__pycache__/
*.pyc
*.pyo
.venv/
# 环境变量
.env
.env.local
# 数据(ChromaDB、SQLite)
chroma_db/
data/*.db
data/*.sqlite
# Node.js(VuePress 学习文档)
docs/node_modules/
docs/.vuepress/dist/
# 系统
.DS_Store
Thumbs.db
# IDE
.vscode/
.idea/
5. 项目复盘
你完成了什么
| 模块 | 实现 | 状态 |
|---|---|---|
| FastAPI 后端 | 完整路由 + CORS | ✅ |
| LangGraph Agent | 意图分析 + 工具调用 + 总结 | ✅ |
| 交易工具 | get_stock_price / place_order / get_market_news | ✅ |
| RAG | ChromaDB + 中文 Embedding + 检索 | ✅ |
| 流式输出 | SSE + astream_events | ✅ |
| 会话记忆 | LangGraph Checkpointer + SQLite | ✅ |
| Docker | Dockerfile + docker-compose | ✅ |
| 部署 | Railway 或本地 Docker | ✅ |
踩过的坑(你自己的 Lessons Learned)
回头想想这三个月遇到的 bug,把它们写进项目的 README.md 或单独的 LEARNINGS.md:
- 什么问题卡了你最久?
- 是怎么排查出来的?
- 如果重来一遍你会怎么做?
后续可以优化的方向(长期)
| 方向 | 为什么 | 难度 |
|---|---|---|
| 多 Agent 协作 | 一个 Agent 管交易,一个 Agent 管分析 | ⭐⭐ |
| 真实行情 API | 替换 Mock 数据,接 Binance / AkShare | ⭐⭐ |
| 前端 UI | React + SSE,做出好看的聊天界面 | ⭐⭐ |
| Agent 评测 | 用 RAGAS 评测 RAG 效果 | ⭐⭐⭐ |
| 生产级向量库 | 从 ChromaDB 换到 Milvus / Pinecone | ⭐⭐ |
| 监控日志 | 加 LangSmith 追踪 Agent 每一步 | ⭐⭐ |
| 语音输入/输出 | ASR + TTS 集成 | ⭐⭐⭐ |
6. 三个月学完的你
你现在能做什么?
- ✅ 独立搭建一个有 LLM + 工具 + RAG + 记忆的 AI Agent 应用
- ✅ 用 LangGraph 编排 Agent 的行为流
- ✅ 给项目接入真实的 API 和数据
- ✅ 把 Agent 应用部署到云服务
- ✅ 理解 Agent 的评估和优化方向
市场上这个水平值多少钱?
初级 AI Agent 工程师的市场薪资区间在 20k-40k(国内)/ 80k-150k(美元/年,海外)。你的 TypeScript 背景让你比纯后端更有优势——你能独立完成从前端 UI 到后端 Agent 的全栈开发。
下一步怎么走?
| 方向 | 建议 |
|---|---|
| 找 AI Agent 相关工作 | 把这个项目写进简历,用 Railway 部署一个 demo 链接 |
| 做副业 | 把 Agent 做成 SaaS 小产品 |
| 继续深耕 | 学 AutoGen / CrewAI 多 Agent 框架、Agent 评测、微调 |
| 切大模型应用 | 学 LangChain Expression Language (LCEL) 高级用法、LangServe 部署 |
🎉 恭喜你完成三个月的学习! 记得回头看看你三个月前的代码,再看看现在——差距就是你的成长。