共计 1442 个字符,预计需要花费 4 分钟才能阅读完成。
概念界定:两种对话系统的技术范式
传统 Chatbot(基于规则 / 检索式)和 ChatGPT(生成式 AI)代表了对话系统的两种不同技术路线:

- 规则 / 检索式 Chatbot:依赖预定义的对话流程 (Flow) 和问答对 (QA Pairs),通过模式匹配(Pattern Matching) 或检索 (Retrieval) 返回固定响应
- 生成式 AI(如 ChatGPT):基于大语言模型 (LLM) 实时生成文本,通过概率预测生成符合上下文的响应,无需预存答案
架构对比:从模块到数据流
传统 Chatbot 典型架构
flowchart LR
A[用户输入] --> B(NLU 模块)
B --> C{意图识别}
C -->| 预定意图 | D[规则引擎]
C -->| 未知意图 | E[检索知识库]
D --> F[预置响应]
E --> F
- NLU 模块:需要人工标注数据训练意图分类器(Intent Classifier)
- 对话管理 :有限状态机(FSM) 控制对话流程
- 知识库:通常使用 Elasticsearch 等搜索引擎实现
ChatGPT 类系统架构
flowchart LR
A[用户输入] --> B[提示词工程]
B --> C[LLM 推理]
C --> D[安全过滤]
D --> E[生成响应]
- 无显式 NLU:意图理解隐含在上下文编码中
- 无状态管理 :依赖注意力机制(Attention) 维持会话一致性
- 动态生成:基于 Transformer 架构逐 token 预测
性能指标实测对比
| 指标 | 传统 Chatbot | ChatGPT 类系统 |
|---|---|---|
| 平均响应延迟 | 50-200ms | 500-3000ms |
| 并发处理能力 | 1000+ TPS | 10-100 TPS |
| 意图识别准确率 | 85%-95% | 上下文相关 |
| 长对话一致性 | 需显式状态管理 | 依赖模型能力 |
代码示例:意图识别 vs 生成对话
Rasa 规则引擎示例
# 意图定义示例
class CheckBalanceIntent(Action):
def name(self) -> Text:
return "action_check_balance"
def run(self, dispatcher, tracker, domain):
# 从数据库查询余额
account_id = tracker.get_slot("account_id")
balance = db.query_balance(account_id)
dispatcher.utter_message(f"当前余额:{balance}")
return []
OpenAI API 调用示例
import openai
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你是一个银行客服助手"},
{"role": "user", "content": "查询我的账户余额"}
],
temperature=0.7 # 控制生成随机性
)
选型指南:场景驱动决策
| 场景需求 | 推荐技术 | 原因 |
|---|---|---|
| 高精度流程化客服 | 规则 Chatbot | 响应快、结果确定 |
| 创意内容生成 | 生成式 AI | 多样性输出 |
| 7*24 基础问答 | 混合架构 | 平衡成本效果 |
| 敏感领域咨询 | 规则 + 人工审核 | 风险可控 |
生产环境避坑指南
- 内容安全三层过滤:
- 模型级:API 参数如
filter=strict - 业务级:正则表达式黑名单
-
人工级:高风险场景审核队列
-
会话状态维护:
- 对生成式 AI 需额外存储对话历史
- 建议采用 Redis 缓存最近 3 轮对话
开放性问题
当业务需要同时使用规则引擎和生成式 AI 时,如何设计分层架构才能实现:
1. 关键流程的确定性
2. 创意内容的灵活性
3. 系统性能的可扩展性?
正文完
发表至: 未分类
近两天内
