共计 1852 个字符,预计需要花费 5 分钟才能阅读完成。
作为一名刚接触 AI 应用开发的程序员,我曾经天真地认为只要把提示词(prompt)写得好,AI 就能完美理解我的需求。但实际开发中踩过无数坑后,我才意识到:真正决定 AI 应用质量的不是 prompt,而是上下文管理。

当前 Prompt 工程的局限性
- 对话断裂问题 :传统的单轮 prompt 交互会导致每次对话都是全新的开始。比如在客服场景中,用户第一次说 ” 我想退货 ”,第二次问 ” 运费谁承担 ” 时,AI 完全忘记了前文。
- 知识无法累积 :每次交互都需要重新注入领域知识。一个医疗问答系统每次都要重复 ” 你是一名医生 ” 这样的角色设定,既浪费 token 又影响响应速度。
- 状态维护困难 :在多步骤流程中(如订餐、预约),传统方法需要开发者手动拼接历史对话,极易出错。
Context 工程架构革新
与传统 prompt 工程相比,context 工程的核心差异体现在:
graph LR
A[传统 Prompt 工程] -->| 单次请求 | B(独立处理)
C[Context 工程] -->| 上下文感知 | D(状态保持)
C -->| 结构化存储 | E(知识累积)
C -->| 动态更新 | F(智能响应)
核心实现方案
上下文结构化
最实用的方法是采用 JSON Schema 定义上下文格式:
from pydantic import BaseModel
from typing import List, Optional
class DialogContext(BaseModel):
user_id: str
conversation_id: str
current_step: str # 用于状态机
entities: dict # 提取的关键信息
history: List[str] # 压缩后的对话历史
metadata: Optional[dict] # 扩展字段
对话状态机实现
用状态模式管理多轮对话流程:
from enum import Enum, auto
class State(Enum):
START = auto()
COLLECTING_INFO = auto()
CONFIRMATION = auto()
COMPLETED = auto()
class DialogManager:
def __init__(self):
self.state = State.START
self.context = {}
def handle_message(self, message: str) -> str:
if self.state == State.START:
self.context = extract_entities(message)
self.state = State.COLLECTING_INFO
return "请问您还需要什么帮助?"
# 其他状态处理...
raise ValueError(f"未知状态: {self.state}")
上下文压缩策略
- 关键信息提取 :使用 NER 模型识别并保留实体
- 摘要生成 :对长对话用 T5 等模型生成摘要
- 向量化缓存 :将文本转换为嵌入向量存储
性能优化实战
通过实验发现,上下文长度与 API 延迟的关系如下:
Tokens | Latency(ms)
-------|-----------
512 | 320
1024 | 480
2048 | 920
4096 | 1800
建议采用 ” 滑动窗口 ” 策略,只保留最近 N 条关键对话。
常见避坑指南
- 上下文中毒防护 :
- 设置用户输入过滤器
- 定期清理对话历史
-
使用隔离的沙盒环境
-
敏感信息处理 :
from presidio_analyzer import AnalyzerEngine analyzer = AnalyzerEngine() def sanitize_text(text: str) -> str: results = analyzer.analyze(text=text, language="zh") for result in results: text = text.replace(result.text, "[REDACTED]") return text -
分布式同步方案 :
- 使用 Redis 作为中央存储
- 实现乐观锁机制
- 设置合理的 TTL
成熟度评估模型
建议从 5 个维度评估(每项 0 - 5 分):
- 上下文完整性
- 状态管理能力
- 历史压缩效率
- 安全防护强度
- 性能开销控制
总分≥15 分可认为达到生产级要求。
自我挑战题
- 尝试为一个订餐机器人设计上下文结构,要求能记住用户的口味偏好和过敏史
- 实现一个能自动丢弃无关上下文的清理策略
- 测量不同上下文长度下 GPT-3.5 的响应准确率变化
经过半年的实践验证,采用 context 工程后,我们的客户满意度提升了 37%,而 API 调用成本降低了 22%。这让我深刻体会到:好的 AI 应用不是靠魔法提示词,而是靠扎实的上下文基建。
正文完
