mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1804 字
5 分钟
如何开发 AI 应用
2025-11-05

你已经了解了 Prompt Engineering、RAG、Function Calling、Agent 等技术。但当你准备构建一个真正的 AI 产品时,一堆新问题冒出来:

“该用什么架构?""怎么管理 Prompt 版本?""如何监控效果?""成本怎么控制?""上线前要做哪些安全检查?”

这篇文章帮你把这些技术组装成一个完整的、可上线的 AI 应用。

本文要点#

  • 什么时候该给应用加 AI
  • 四种 AI 应用架构模式
  • 技术栈和框架选择
  • 核心设计模式
  • 工程化实践:评估、监控、成本、安全
  • 完整案例

一、让 AI 为应用赋能#

1.1 什么时候该加 AI#

不是所有应用都需要 AI。加 AI 之前,先问自己三个问题:

  1. 这个任务是否涉及自然语言理解或生成? 如果是,AI 大概率有帮助。
  2. 规则引擎能否解决? 如果用 if-else 就能搞定,不需要 AI。
  3. 容错性如何? 如果不允许任何错误(如金融交易),谨慎使用 AI。

1.2 四种架构模式#

flowchart TD N0["输入"] N1["LLM"] N0 --> N1 N1["LLM"] N2["输出"] N1 --> N2

1.3 渐进式集成策略#

不要一开始就构建复杂的 AI 系统。建议分步走:

第 1 步:用 LLM API 做最简单的功能(如文案生成)
第 2 步:加入 RAG 提供知识库支持
第 3 步:加入 Function Calling 连接工具
第 4 步:构建 Agent 实现复杂工作流

每一步都要验证效果和成本,再决定是否继续。


二、技术栈选择#

2.1 开发框架#

框架语言特点适用场景
LangChainPython/JS生态最丰富快速原型、通用应用
LlamaIndexPythonRAG 专精知识库、文档问答
LangGraphPython状态机、复杂流程Agent 工作流
Semantic KernelC#/Python微软企业级企业应用集成
Vercel AI SDKTypeScript前端友好、流式Web 应用

选择建议: 快速原型用 LangChain。RAG 场景用 LlamaIndex。复杂 Agent 用 LangGraph。前端项目用 Vercel AI SDK。

2.2 向量数据库#

数据库特点适用
Chroma轻量、开源本地开发
Qdrant高效、Rust 实现生产、性能敏感
Milvus分布式、高性能大规模生产
Pinecone托管、零运维快速启动

2.3 AI 可观测性#

工具特点
LangSmithLangChain 官方,Trace 追踪
Langfuse开源,自部署
Helicone托管,成本分析

可观测性让你看到:每次 LLM 调用的输入/输出、延迟、Token 消耗、错误率。上线后必备。


三、核心设计模式#

3.1 Chain 模式#

多个处理步骤串联。

flowchart TD N0["用户问题"] N1["意图识别"] N0 --> N1 N1["意图识别"] N2["知识检索"] N1 --> N2 N2["知识检索"] N3["答案生成"] N2 --> N3 N3["答案生成"] N4["输出"] N3 --> N4

适合流程固定的场景。

3.2 Router 模式#

根据输入类型路由到不同处理流程。

flowchart TD A[用户输入] --> B{意图分类} B -->|技术问题| C[技术 Agent] B -->|产品问题| D[产品 Agent] B -->|投诉建议| E[客服 Agent]

适合需要不同专业处理的场景。

3.3 Agent 模式#

LLM 自主决定执行步骤,不是预定义流程。

适合复杂、动态的任务。

3.4 Human-in-the-loop#

关键决策点加入人工确认。

flowchart TD N0["AI 生成方案"] N1["展示给用户"] N0 --> N1 N1["展示给用户"] N2["用户确认/修改"] N1 --> N2 N2["用户确认/修改"] N3["执行"] N2 --> N3

适合高风险操作(删除数据、发送邮件、医疗建议)。


四、工程化实践#

4.1 Prompt 版本管理#

提示词是代码的一部分,需要版本管理。

mindmap root((prompts/)) v1/ system_prompt.txt user_template.txt v2/ system_prompt.txt user_template.txt config.yaml: prompt_version: "v2" model: "gpt-4o" temperature: 0.7

支持回滚、A/B 测试、灰度发布。

4.2 评估与监控#

质量指标:

  • 准确率:答案正确的比例
  • 相关性:答案与问题的相关程度
  • 用户满意度:通过反馈收集

性能指标:

  • 延迟:P50/P95/P99
  • 吞吐:QPS
  • Token 消耗

评估方法:

  • 人工评估:专家打分
  • 自动评估:用 LLM 评估 LLM 输出(LLM-as-Judge)
  • A/B 测试:对比不同方案

4.3 成本优化#

模型路由。 简单任务用小模型(GPT-4o-mini),复杂任务用大模型。

缓存策略。 缓存常见问题的答案和 Embedding 结果。语义缓存:相似问题命中同一缓存。

Prompt 优化。 减少不必要的上下文。使用 Prompt Caching。压缩对话历史。

批处理。 非实时场景合并多个请求。

4.4 安全与合规#

输入过滤:

  • 敏感信息检测(个人隐私、密码)
  • 恶意输入防护(Prompt 注入攻击)
  • 内容合规检查

输出审查:

  • 敏感信息过滤
  • 有害内容拦截
  • 版权内容检测

访问控制: 用户认证、权限管理、调用限流。

数据保护: 加密传输、日志脱敏、合规存储。

4.5 生产环境注意事项#

  • 降级策略:LLM 服务不可用时的 fallback 方案
  • 限流:防止单用户过度使用
  • 日志:记录完整的请求/响应,便于排查问题
  • 告警:错误率、延迟超阈值时通知

五、完整案例:智能客服系统#

5.1 需求#

- 多轮对话,上下文记忆
- 企业知识库检索
- 响应延迟 < 3 秒
- 日均对话 5,000 次
- 无法回答时转人工

5.2 架构#

flowchart LR A[用户] --> B[对话管理] B --> C{意图分类} C -->|知识问答| D[RAG 检索] C -->|操作请求| E[Function Calling] C -->|无法处理| F[转人工] D --> G[LLM 生成] E --> G G --> H{置信度} H -->|高| I[回复用户] H -->|低| F

5.3 技术选型#

  • LLM:Claude 3.5 Sonnet(指令遵循好、200K 上下文)
  • 知识库:Qdrant + BGE-M3 Embedding
  • 框架:LangChain + LangGraph
  • 监控:LangSmith
  • 降级:LLM 不可用时切换到 DeepSeek V3

5.4 关键数据#

  • 自动解决率:70%+
  • 客户满意度提升:20%
  • 人工成本降低:50%

图解#

5.1 AI 应用技术全景#

┌──────────────────────────────────────────────┐
│ AI 应用技术全景 │
├──────────────────────────────────────────────┤
│ │
│ 前端层 │
│ └── Vercel AI SDK / Streamlit / Gradio │
│ │
│ 应用层 │
│ └── LangChain / LlamaIndex / LangGraph │
│ │
│ 能力层 │
│ └── RAG + Function Calling + Agent │
│ │
│ 数据层 │
│ └── 向量数据库 + 关系数据库 + 缓存 │
│ │
│ 模型层 │
│ └── GPT-4o / Claude / DeepSeek / 自部署 │
│ │
│ 运维层 │
│ └── 监控 + 评估 + 成本优化 + 安全 │
│ │
└──────────────────────────────────────────────┘

常见问题 FAQ#

Q1:第一个 AI 应用应该做什么?

A:从最简单的开始。推荐内部工具:如知识库问答、文档摘要、代码审查助手。风险低、反馈快、价值明确。

Q2:用 LangChain 还是自己写?

A:原型阶段用 LangChain 加速验证。生产阶段如果 LangChain 的抽象太重,可以只用其中部分组件,或替换为更轻量的方案。

Q3:如何处理 LLM 的不确定性?

A:通过置信度判断 + 人工兜底。当模型不确定时(如回答包含 我不确定可能 等词),触发人工审核或告知用户结果仅供参考。

Q4:AI 应用的测试怎么做?

A:三层测试:单元测试(验证单个组件)、集成测试(验证完整流程)、评估测试(用测试集评估输出质量)。评估测试是 AI 应用特有的:用标注好的问答对定期回归测试。

Q5:成本怎么预估?

A:先算单次调用成本(平均输入/输出 Token × 单价),乘以日均调用量,再加 20% 缓冲。第一周先小流量试跑,根据实际数据调整预估。


小结#

构建 AI 应用不是把 LLM API 接上就完了。你需要选择合适的架构模式、搭建技术栈、建立评估体系、做好成本和安全管控。

核心原则:渐进式集成,从简单开始,持续评估,逐步升级。


下篇预告#

当 Prompt Engineering 和 RAG 都无法满足需求时,可能需要微调(Fine-tuning)来定制你的专属模型。什么时候该微调?怎么做?


参考资料#

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

如何开发 AI 应用
https://blog.souloss.com/posts/machine-learning/llm-guide/build-ai-app/
作者
Souloss
发布于
2025-11-05
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时