从 Prompt 到 Context 再到 Harness:AI 工程化的演进之路
随着大语言模型(LLM)能力的飞速提升,如何高效、可靠地构建 AI 应用,已成为开发者面临的核心挑战。回顾过去两年,AI 工程的范式经历了从“提示词调优”到“上下文工程”,再到“编排与封装”的演进。本文将梳理这一发展脉络,帮助你理解 AI 工程化的底层逻辑。
一、Prompt Engineering:与模型对话的艺术
在 GPT-3 等早期 LLM 刚刚开放 API 时,模型的输出质量几乎完全依赖于输入指令的设计。这就是 Prompt Engineering 的起点。
核心理念
将模型视为一个“黑盒”,通过精心构造的输入文本来引导模型生成期望的输出。典型技术包括:
- 零样本/少样本提示(Zero-shot / Few-shot Prompting)
- 思维链(Chain-of-Thought, CoT)
- 自我一致性(Self-Consistency)
- 情感提示(Emotion Prompt)
局限性
- 脆弱性:措辞的微小改变可能导致完全不同的结果。
- 缺乏可维护性:提示词散落在代码各处,难以版本管理和迭代。
- 无法利用外部知识:模型的知识受限于训练数据,对于时效性或私密性信息无能为力。
一句话总结:Prompt Engineering 是“教模型说话”,但无法让模型“知道更多”。
二、Context Engineering:为模型提供“工作记忆”
当人们发现模型的知识存在边界后,检索增强生成(RAG)范式迅速崛起。其核心思想是在推理时,从外部知识库中检索相关信息,拼接到上下文窗口中,让模型基于这些“参考材料”回答。这就是 Context Engineering 的雏形。
核心理念
将 LLM 视为一个推理引擎,而非知识库。开发者不再费力调教模型本身,而是专注于如何构建、检索、组装和优化输入给模型的上下文。
主要技术手段包括:
- 向量数据库(如 Pinecone、Milvus、Chroma)
- 嵌入模型(Embedding Models)
- 分块策略(Chunking Strategies)
- 重排序(Re-ranking)
演进与挑战
- 动态上下文:根据用户问题实时构建不同的上下文。
- 长上下文模型的冲击:GPT-4 Turbo、Gemini 1.5 Pro 等模型支持百万级 token 的上下文窗口,使得“全量注入”成为可能,但也带来了成本和延迟问题。
- 结构化上下文:对上下文进行功能分区(如“系统指令”、“用户偏好”、“工具描述”、“当前对话”),提升模型的理解效率。
一句话总结:Context Engineering 是“给模型开卷考试”,让模型基于给定材料作答。
三、Harness Engineering:从“单次推理”到“系统编排”
随着 AI 应用走向复杂化(如 Agent、多步推理、工具调用),单次的“提示词+上下文”已无法满足需求。开发者开始将 AI 能力嵌入到完整的系统流程中,这就是 Harness Engineering。
核心理念
将 LLM 作为一个可被编排的“组件”,与其他组件(工具、API、代码逻辑、记忆存储、人类反馈)组合成可执行的工作流。Harness 一词借用了测试领域的“测试夹具”概念,在这里指一套完备的 AI 应用运行与管理环境。
典型的技术组件包括:
- Agent 框架:LangChain、LlamaIndex、AutoGen
- 工具调用(Tool Use / Function Calling)
- 工作流编排(LangGraph、DSPy)
- 观测性(LangSmith、Weights & Biases)
- 缓存与语义缓存(GPTCache)
- 安全护栏(Guardrails)
Harness Engineering 的核心价值
- 可复用性:将提示词、上下文构建逻辑、工具调用等封装为模块或类,可跨应用复用。
- 可测试性:对 AI 工作流进行单元测试、集成测试和端到端评估。
- 可观测性:追踪每次调用的输入、输出、成本、延迟,便于调试和优化。
- 安全性:通过沙箱、工具权限控制等方式限制模型的行动范围。
一句话总结:Harness Engineering 是“把 AI 放进引擎舱”,不仅让 AI 能思考,更让它能行动、可被管理。
四、三者的关系与演进逻辑
| 阶段 | 关注点 | 输入 | 输出 | 技术范式 |
|---|---|---|---|---|
| Prompt Engineering | 指令设计 | 用户查询 + 静态提示 | 模型直接回答 | 纯文本提示 |
| Context Engineering | 知识供给 | 用户查询 + 动态检索的知识片段 | 基于知识的回答 | RAG、向量检索 |
| Harness Engineering | 系统编排 | 多轮交互 + 工具调用 + 记忆 + 外部状态 | 可执行的行动或最终回答 | Agent、工作流图、可观测性平台 |
三者并非替代关系,而是叠加与增强:
- Harness Engineering 包含 Context Engineering:Agent 在工作流中依然需要使用 RAG 来获取知识。
- Context Engineering 包含 Prompt Engineering:构建上下文时依然需要设计高质量的系统提示词。
演进的核心驱动力是 应用复杂度的提升 和 对确定性、可维护性的追求。
五、实践建议
- 初创阶段:优先使用 Context Engineering + 好的提示词,快速验证业务价值。
- 功能复杂化后:引入 Harness Engineering 框架,将 AI 流程代码化、模块化。
- 评估先行:无论采用哪种范式,都应建立离线评估集(如 RAGAS、DSPy 的评估模块),用数据驱动优化。
AI 工程化仍在飞速演进,下一个可能的热点是 模型自身参与工程化(如 DSPy 通过编译器自动优化提示词和检索参数),将我们从繁琐的手工调优中解放出来。但无论如何,理解从 Prompt 到 Context 再到 Harness 的演进逻辑,将帮助你在这波浪潮中保持清晰的架构视野。
*参考资料:
- Lilian Weng 的博客《Prompt Engineering》
- Harrison Chase 关于 Context Engineering 的论述
- LangChain 官方文档及多次社区讨论*