第02章:技术栈准备——你需要会什么才能接单
第02章:技术栈准备——你需要会什么才能接单
你不需要是AI科学家。你需要的是:能把现有的开源工具组装成一个能跑的系统,然后教会客户的人用它。这是工程能力,不是研究能力。
FDE的最小技术栈
必须精通(不会就接不了单):
├── Python(后端开发主力)
├── LLM API调用(OpenAI / 通义 / 文心 / DeepSeek)
├── RAG基础(Embedding + 向量搜索 + Prompt Engineering)
├── 一种向量数据库(ChromaDB / Milvus / Qdrant)
├── PostgreSQL(结构化数据)
└── Linux基础(部署在客户服务器上)
应该了解(不会也能接单,但做不好):
├── Docker(容器化部署)
├── FastAPI(构建API服务)
├── 文档处理(PDF/Word/Excel解析)
├── 监控告警(Prometheus/Grafana)
└── 基本网络知识(防火墙、反向代理)
加分项(有就更容易接到单):
├── 特定行业知识(制造/金融/医疗/法律)
├── Agent框架(Hermes / LangChain / CrewAI)
├── 前端(React/Vue,做管理界面)
└── MCP(Model Context Protocol)
核心技术详解
1. Python——你的主力武器
# 你不需要会高级Python。
# 你需要的是"能快速把东西拼起来"的能力。
# 必须会的:
import asyncio # 异步编程(LLM调用很慢,不能同步等)
import httpx # HTTP客户端
from fastapi import FastAPI # Web框架
from pydantic import BaseModel # 数据验证
import sqlalchemy # 数据库ORM
# 不需要会的:
# - 机器学习框架(PyTorch/TensorFlow)
# - 数据科学(Pandas/NumPy的高级用法)
# - Python C扩展
2. LLM API——会调用就行
# 你不需要训练模型,你只需要会调用API。
# 最简单的LLM调用
import openai
client = openai.OpenAI(
api_key="sk-xxx",
base_url="https://api.deepseek.com" # 国产模型通常兼容OpenAI格式
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是一个专业的客服助手。"},
{"role": "user", "content": "退货流程是什么?"}
]
)
# 你需要掌握的LLM知识:
# 1. System Prompt怎么写(决定AI的行为)
# 2. Temperature怎么调(0=确定性,1=创造性)
# 3. Token是什么(影响成本和速度)
# 4. Streaming怎么用(让用户不用等太久)
# 5. 不同模型的特点(GPT-4o贵但强,DeepSeek便宜但够用)
3. RAG——核心交付能力
# RAG = Retrieval Augmented Generation
# = 先搜索相关文档,再让LLM基于文档回答
# 最简单的RAG流程
class SimpleRAG:
def __init__(self):
self.vector_db = chromadb.Client()
self.collection = self.vector_db.get_or_create_collection("docs")
def add_document(self, text: str, metadata: dict):
"""入库"""
self.collection.add(
documents=[text],
metadatas=[metadata],
ids=[str(uuid4())]
)
def query(self, question: str) -> str:
"""查询"""
# 1. 搜索相关文档
results = self.collection.query(
query_texts=[question],
n_results=5
)
# 2. 拼接上下文
context = "\n".join(results["documents"][0])
# 3. 让LLM基于上下文回答
response = self.llm.chat(
system="基于以下文档回答用户问题。如果文档中没有相关信息,说'抱歉,我没有找到相关信息'。",
user=f"文档:\n{context}\n\n问题:{question}"
)
return response
# 你需要掌握的RAG知识:
# 1. 文档怎么分块(分块策略)
# 2. Embedding模型怎么选
# 3. 检索参数怎么调
# 4. Prompt怎么写才能减少幻觉
# 5. 怎么评估效果
4. 文档处理——最脏但最重要的活
# 企业给你的文档是什么样的?
#
# ├── 100个Word文件(有些是doc不是docx)
# ├── 50个PDF(有些是扫描件)
# ├── 30个Excel(每个结构都不一样)
# ├── 20个PPT
# └── 10个手机拍的照片
# 你需要会用的工具:
from docx import Document # Word文件
import pdfplumber # PDF(文本型)
from pdf2image import convert_from_path # PDF(扫描件→图片)
import openpyxl # Excel
from pptx import Presentation # PPT
# 扫描件PDF的处理(需要OCR)
# 方案1:Tesseract(免费,效果一般)
# 方案2:PaddleOCR(免费,中文效果好)
# 方案3:云端OCR API(付费,效果最好)
# 真实的文档处理代码示例
class DocumentProcessor:
async def process_file(self, file_path: str) -> list:
ext = file_path.split(".")[-1].lower()
if ext == "pdf":
return await self.process_pdf(file_path)
elif ext in ("doc", "docx"):
return await self.process_word(file_path)
elif ext in ("xls", "xlsx"):
return await self.process_excel(file_path)
elif ext in ("ppt", "pptx"):
return await self.process_ppt(file_path)
elif ext in ("jpg", "png"):
return await self.process_image(file_path)
else:
raise ValueError(f"不支持的文件格式:{ext}")
5. 部署——从你的电脑到客户的服务器
# 最简部署:Docker Compose
# 你不需要会Kubernetes。
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
environment:
- LLM_API_KEY=${LLM_API_KEY}
- DB_URL=postgresql://user:pass@db:5432/rag
depends_on:
- db
- chromadb
chromadb:
image: chromadb/chroma:latest
ports:
- "8001:8000"
volumes:
- chroma_data:/chroma/chroma
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
chroma_data:
pg_data:
# 部署步骤:
# 1. ssh到客户服务器
# 2. 安装Docker
# 3. 复制代码
# 4. docker-compose up -d
# 5. 测试
# 6. 配置Nginx反向代理(如果需要域名访问)
技术学习路线图
第1个月:基础
├── Python异步编程
├── LLM API调用
├── ChromaDB基本使用
├── 写一个最简单的RAG Demo
└── 里程碑:能跑通一个问答Demo
第2个月:深入
├── 文档处理(PDF/Word/Excel)
├── 分块策略
├── Embedding模型选择
├── FastAPI构建服务
└── 里程碑:能处理真实文档并构建问答系统
第3个月:部署
├── Docker基础
├── Linux基本操作
├── PostgreSQL
├── 基本的日志和监控
└── 里程碑:能在云服务器上部署完整系统
第4个月:实战
├── 找一个真实场景练手(帮朋友/小公司免费做一个)
├── 完善你的部署脚本
├── 积累行业知识
├── 写技术博客
└── 里程碑:有一个可展示的案例
你不需要会的东西(别浪费时间)
❌ 不需要:
- 训练大模型(你调API就行)
- 写CUDA内核(你不做推理优化)
- 前沿论文复现(你做工程不做研究)
- Kubernetes(Docker Compose够用)
- 微服务架构(单体够用)
- 前端框架(除非客户要管理界面)
把时间花在:
- 文档处理(这是最脏最花时间但最有价值的技能)
- Prompt Engineering(直接决定AI回答质量)
- 客户沟通(技术只占50%,沟通占50%)
准备你的"武器库"
在接第一个单之前,你应该有:
1. 一个RAG模板项目(GitHub仓库)
→ 包含基本的文档处理、向量入库、搜索、LLM回答
→ 能在30分钟内跑起来一个Demo
2. 一套部署脚本
→ Docker Compose配置
→ 初始化脚本
→ 备份脚本
3. 一份评估工具
→ 自动测试检索质量
→ 自动测试回答质量
→ 生成评估报告
4. 一个Demo
→ 用公开数据做的RAG系统
→ 能给客户演示"这就是你们的系统大概的样子"
5. 一份方案模板
→ 项目概述
→ 技术方案
→ 时间计划
→ 报价
本章核心结论
- FDE的技术门槛不高——你需要的是工程能力(组装),不是研究能力(发明)。
- 核心技能:Python + LLM API + RAG + 文档处理 + Linux部署。
- 不需要会训练模型、不需要会K8s、不需要懂前沿论文。
- 准备一个可复用的模板项目是你的核心竞争力——每个新项目只是"换数据"。
- 学习路线4个月:基础→深入→部署→实战。
下一章:定价策略——你的技术值多少钱?怎么报价不亏也不吓跑客户?