
AI重塑云原生应用开发实战-极客时间---**xia仔课:shanxueit.com/7508/ **
在 2025 年,真正的 AI 工程能力,不是调用一个 API,而是将大模型能力封装为高可用、可观测、可扩缩的云原生服务 。本文将带你从零构建一个 "智能摘要生成器" ------用户提交一段文本,AI 返回简洁摘要,并通过 Kubernetes 实现生产级部署。全程代码可复制、环境可复现、流程可交付。
✅ 技术栈:Python + FastAPI(轻量高性能) + Hugging Face Transformers(开源模型) + Docker + Kubernetes
✅ 模型选择:
facebook/bart-large-cnn(专为摘要优化,无需 GPU 即可运行)
第一步:构建 AI 服务核心(本地可运行)
我们使用 FastAPI 构建 RESTful 接口,集成 Hugging Face 的预训练摘要模型。
python
Python
编辑
1# main.py
2from fastapi import FastAPI, HTTPException
3from pydantic import BaseModel
4from transformers import pipeline
5import logging
6
7# 初始化日志
8logging.basicConfig(level=logging.INFO)
9logger = logging.getLogger(__name__)
10
11# 加载摘要模型(首次运行会自动下载,约 1.6GB)
12summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
13
14app = FastAPI(title="AI 摘要服务", version="1.0")
15
16class TextRequest(BaseModel):
17 text: str
18 max_length: int = 130
19 min_length: int = 30
20
21@app.post("/summarize")
22async def summarize(request: TextRequest):
23 try:
24 if len(request.text) < 50:
25 raise HTTPException(status_code=400, detail="文本长度需至少 50 字符")
26
27 result = summarizer(
28 request.text,
29 max_length=request.max_length,
30 min_length=request.min_length,
31 do_sample=False
32 )
33 summary = result[0]['summary_text']
34 logger.info(f"成功生成摘要,输入长度: {len(request.text)}")
35 return {"summary": summary}
36
37 except Exception as e:
38 logger.error(f"摘要生成失败: {str(e)}")
39 raise HTTPException(status_code=500, detail="摘要服务内部错误")
💡 教育提示:
- 使用
pipeline封装模型,避免手动处理 tokenizer 和 model;- 输入校验防止无效请求耗尽资源;
- 结构化日志便于后续监控。
第二步:容器化 ------ 打包为 Docker 镜像
创建 Dockerfile,确保依赖隔离与可移植性:
sql
Dockerfile
编辑
1# Dockerfile
2FROM python:3.10-slim
3
4WORKDIR /app
5
6COPY requirements.txt .
7RUN pip install --no-cache-dir -r requirements.txt
8
9COPY main.py .
10
11EXPOSE 8000
12
13CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
对应的 requirements.txt:
ini
Txt
编辑
1fastapi==0.110.0
2uvicorn==0.27.0
3transformers==4.38.0
4torch==2.2.0
5accelerate==0.27.2
⚠️ 注意:
torch在 CPU 模式下无需 CUDA,适合低成本部署。
构建并测试镜像:
arduino
Bash
编辑
1docker build -t ai-summarizer:1.0 .
2docker run -p 8000:8000 ai-summarizer:1.0
访问 http://localhost:8000/docs 可看到自动生成的 Swagger UI,直接测试!
第三步:Kubernetes 部署 ------ 生产就绪
创建 deployment.yaml,包含健康检查、资源限制与副本管理:
yaml
Yaml
编辑
1# deployment.yaml
2apiVersion: apps/v1
3kind: Deployment
4metadata:
5 name: ai-summarizer
6spec:
7 replicas: 2
8 selector:
9 matchLabels:
10 app: ai-summarizer
11 template:
12 metadata:
13 labels:
14 app: ai-summarizer
15 spec:
16 containers:
17 - name: ai-summarizer
18 image: ai-summarizer:1.0
19 ports:
20 - containerPort: 8000
21 resources:
22 requests:
23 memory: "2Gi"
24 cpu: "1"
25 limits:
26 memory: "3Gi"
27 cpu: "2"
28 livenessProbe:
29 httpGet:
30 path: /docs
31 port: 8000
32 initialDelaySeconds: 30
33 periodSeconds: 60
34 readinessProbe:
35 httpGet:
36 path: /docs
37 port: 8000
38 initialDelaySeconds: 10
39 periodSeconds: 10
40---
41apiVersion: v1
42kind: Service
43metadata:
44 name: ai-summarizer-svc
45spec:
46 type: LoadBalancer
47 ports:
48 - port: 80
49 targetPort: 8000
50 selector:
51 app: ai-summarizer
💡 教育重点:
resources限制防止 Pod 耗尽节点资源;livenessProbe/readinessProbe确保流量只打到健康实例;- 多副本提供高可用。
部署到集群:
csharp
Bash
编辑
1kubectl apply -f deployment.yaml
2kubectl get pods -w # 观察启动状态
获取外部 IP(云平台)或使用 minikube service ai-summarizer-svc(本地)访问服务。
第四步:验证与扩展(100% 落地关键)
✅ 功能验证
arduino
Bash
编辑
1curl -X POST http://<EXTERNAL-IP>/summarize \
2 -H "Content-Type: application/json" \
3 -d '{
4 "text": "人工智能(AI)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。",
5 "max_length": 100
6 }'
预期返回:
css
Json
编辑
1{"summary":"人工智能是计算机科学的一个分支,旨在理解智能并制造能模拟人类智能反应的机器。"}
✅ 可观测性增强(可选但推荐)
- 添加 Prometheus 指标(通过
starlette_exporter); - 日志接入 Loki 或 ELK;
- 使用 OpenTelemetry 追踪请求链路。
为什么这是"100% 落地"的方案?
| 维度 | 本方案实现 |
|---|---|
| 可运行 | 本地 Docker 一键启动 |
| 可部署 | 标准 K8s YAML,适配任何云或 On-Prem |
| 可扩展 | 增加 HPA 自动扩缩容仅需几行配置 |
| 可维护 | 模块化代码 + 健康检查 + 日志 |
| 合规安全 | 无外部 API 依赖,数据完全私有 |
结语:AI 应用的价值,在于"跑在生产环境里"
本文没有炫技,没有复杂微服务,只有一个真实、简洁、可交付的 AI 云原生应用。你可以在 1 小时内完成全部步骤,并将其作为团队 AI 能力的基石。
记住:在工程世界,能上线的代码,胜过千篇论文。
现在,就去构建你的第一个 AI 云原生服务吧!