05. 工程篇:生产落地与运维
写出 Demo 很容易,但要将 AI 应用部署到生产环境,面临着稳定性、成本和安全性的挑战。
1. 模型网关 (Model Gateway)
在企业内部,不应让业务服务直接调用 OpenAI/Anthropic,而应通过统一的网关。 功能:
- 统一鉴权: 屏蔽底层 API Key,分发内部 Token。
- 成本控制: 配置不同部门的 Token Quota。
- 灾备切换: OpenAI 挂了自动切 Azure OpenAI 或 Anthropic。
Go 是写网关的绝佳语言(性能高、转发快)。你可以基于 Gin 或 CloudWeGo/Hertz 手写一个轻量级网关。
2. 部署优化 (Deployment)
2.1 极小镜像
AI 应用通常包含大量 Python 依赖(几 GB),但 Go 应用可以做到几十 MB。 使用 distroless 基础镜像:
dockerfile
# Build Stage
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o server main.go
# Run Stage
FROM gcr.io/distroless/static-debian11
COPY --from=builder /app/server /
CMD ["/server"]2.2 本地模型部署
如果数据敏感,需部署本地模型(Llama 3, Qwen)。 推荐使用 Ollama 或 vLLM 作为推理后端,Go 应用通过 HTTP 调用它们。
3. 可观测性 (Observability)
AI 应用的调试非常困难("为什么模型回答了这句话?")。 我们需要 OpenTelemetry 记录完整的 Request/Response 和 Token 消耗。
go
// 记录 Span 属性
span.SetAttributes(
attribute.String("llm.provider", "openai"),
attribute.String("llm.model", "gpt-4"),
attribute.Int("llm.usage.prompt_tokens", 100),
attribute.Int("llm.usage.completion_tokens", 50),
)接入 Jaeger 或 Grafana Tempo 可视化调用链路。
4. 自动化评估 (Evaluation)
如何知道 RAG 系统的检索准确率是 80% 还是 90%? 你需要建立 Eval Pipeline:
- Golden Dataset: 准备 100 个“问题-标准答案”对。
- Runner: 跑一遍 RAG 系统,记录生成结果。
- Judge: 用 GPT-4 当裁判,给生成结果打分(Ragas 评分标准)。
这是持续迭代 AI 应用质量的唯一手段。
