场景:信息正确,执行翻车
让我们从一个真实的故事开始:
背景:公司部署了一个基于 RAG 的技术文档问答系统。这个系统工作得非常好——当用户问"如何配置 Redis 集群?“时,它能准确地从技术文档中检索出相关信息,并给出详细的配置步骤。
问题:当用户问"删除 test 目录下的临时文件"时,系统检索到了正确的技术文档,但执行时却错误地删除了整个项目的核心代码。
结果:技术知识传递完美无误,但执行结果 catastrophic。
这个场景揭示了一个关键问题:Context Engineering 解决了知识问题,但没有解决执行问题。
问题本质
两个维度的挑战
Context Engineering 给了模型正确的信息,但没有控制模型如何处理这些信息。这带来了两个关键的挑战维度:
1. 安全维度(What NOT to do)
- 权限边界:模型应该做什么,不应该做什么
- 安全红线:绝对禁止的操作
- 合规要求:法律法规和公司政策
2. 可靠维度(How to verify)
- 结果验证:如何判断执行结果是否正确
- 错误检测:发现执行异常的机制
- 修正能力:出现问题时的补救措施
知识 vs 执行的差异
| 维度 | Context Engineering | 执行挑战 |
|---|
| 目标 | 提供正确信息 | 控制正确执行 |
| 难点 | 信息检索和整合 | 行为约束和验证 |
| 关注点 | 信息质量 | 行为安全性 |
| 方法 | 优化上下文 | 设计约束系统 |
工具调用能力的成熟
从 2023 年开始,AI 系统的工具调用能力经历了快速演进,这直接推动了工程范式的转变。
OpenAI Function Calling(2023年6月)
OpenAI 在 2023 年 6 月首次正式推出 Function Calling 功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # OpenAI Function Calling 示例
import openai
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": "What's the weather like in Boston?"}
],
functions=[
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
],
function_call="auto"
)
|
这个突破性进展让模型能够:
- 理解工具用途:通过函数描述理解工具的功能
- 参数解析:自动提取用户意图中的参数
- 执行协调:按需调用外部工具
ReAct 模式(2022-2023年)
Yao 等人在 ICLR 2023 上提出的 ReAct(Reasoning + Acting)模式:
flowchart TB
A[用户问题] --> B[思考]
B --> C{需要工具吗?}
C -->|是| D[调用工具]
C -->|否| E[直接回答]
D --> F[观察结果]
F --> B
E --> G[最终回答]
ReAct 的核心创新:
- 推理循环:思考-行动-观察的完整闭环
- 工具编排:多工具的有序调用
- 结果整合:将工具结果整合成最终答案
Schick 等人在 NeurIPS 2023 上提出的 Toolformer:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Toolformer 自主学习使用工具
class Toolformer:
def __init__(self, model, tools):
self.model = model
self.tools = tools
def learn_tool_usage(self, training_data):
# 1. 识别需要工具的场景
tool_needs = self.identify_tool_needs(training_data)
# 2. 自主学习调用模式
for need in tool_needs:
tool_call = self.model.generate_tool_call(need)
self.tools.execute(tool_call)
# 3. 将结果整合到训练数据
enhanced_data = self.integrate_results(tool_call, training_data)
return enhanced_data
|
Toolformer 的革命性意义:
- 自主学习:模型自己学会何时使用工具
- 工具库扩展:不依赖预定义的工具列表
- 上下文感知:根据对话动态选择工具
AutoGPT(2023年3月)
AutoGPT 标志着第一个自主 Agent 框架的出现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # AutoGPT 的自主执行模式
class AutoAgent:
def __init__(self, name, objective):
self.name = name
self.objective = objective
self.tasks = []
self.completed_tasks = []
def generate_plan(self):
# 1. 将目标分解为任务
self.tasks = self.decompose_objective(self.objective)
# 2. 生成执行计划
plan = self.create_execution_plan(self.tasks)
return plan
def execute_plan(self):
# 3. 自主执行任务序列
for task in self.tasks:
if task not in self.completed_tasks:
result = self.execute_task(task)
self.completed_tasks.append((task, result))
return self.evaluate_completion()
|
新需求的出现
从"能回答"到"能执行"的转变
随着工具调用能力的成熟,AI 系统的关注点发生了根本性转变:
| 阶段 | 关注点 | 关键问题 |
|---|
| 早期 | 能否回答 | “Does it work?” |
| Prompt Engineering | 如何回答得好 | “How to make it better?” |
| Context Engineering | 知道什么信息 | “What should it know?” |
| Agent Era | 能否正确执行 | “Can it act safely?” |
执行场景的复杂性
现代 AI Agent 面临的执行场景越来越复杂:
1. 文件系统操作
1
2
3
4
5
| # 文件操作的风险
file_operations = {
"safe": ["read_file", "list_directory", "create_file"],
"dangerous": ["delete_directory", "modify_system_file", "execute_script"]
}
|
2. 网络访问
1
2
3
4
5
| # 网络操作的风险
network_operations = {
"safe": ["fetch_public_data", "send_api_request"],
"dangerous": ["access_internal_system", "modify_database", "exfiltrate_data"]
}
|
3. 代码执行
1
2
3
4
5
| # 代码执行的风险
code_execution = {
"safe": ["run_python_code", "execute_query"],
"dangerous": ["system_command", "eval_user_input", "import_untrusted_module"]
}
|
安全与可靠的矛盾
在追求 AI 执行能力的同时,我们面临两难处境:
需求:AI 需要足够的能力来完成复杂任务
风险:能力越强,潜在破坏越大
挑战:如何在能力与安全之间找到平衡
核心认知转变
从信息优化到行为控制
Context Engineering 的核心是优化信息流,而驾驭工程的核心是控制行为流:
| 优化方向 | Context Engineering | Harness Engineering |
|---|
| 关注点 | 信息质量 | 行为约束 |
| 方法 | 提供正确信息 | 设计安全机制 |
| 目标 | 知识准确 | 执行安全 |
| 评估 | 信息相关度 | 行为可靠性 |
人类主控 vs AI 执行
核心理念:Human Steer, Agent Execute
- Human Steer:人类设定目标、定义约束、监控过程
- Agent Execute:AI 在约束框架内自主执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Human Steer, Agent Execute 示例
class ControlledAgent:
def __init__(self, human_constraints):
self.constraints = human_constraints
self.execution_context = None
def execute_task(self, task):
# 1. 人类定义的任务和约束
if not self.validate_task_constraints(task):
return "Task violates constraints"
# 2. AI 在约束框架内执行
self.execution_context = self.setup_execution_context(task)
# 3. 执行过程中持续监控
result = self.monitor_execution(task)
# 4. 结果验证和报告
return self.validate_and_report(result)
|
工程范式的演进
1
2
3
| Prompt Engineering → Context Engineering → Harness Engineering
优化语言 优化信息 控制行为
"如何说对" "知道什么" "如何行动"
|
这个演进反映了 AI 系统从语言模型向行动系统的转变。
预告:驾驭工程的核心解决方案
Context Engineering 发现了执行问题的存在,但没有提供完整的解决方案。下一篇文章将详细介绍Harness Engineering,它是专门为解决 AI 执行安全性和可靠性而设计的工程范式。
Harness Engineering 的核心包括:
- 工具注入系统:安全的工具调用机制
- 状态管理系统:任务执行的状态跟踪
- 验证循环系统:执行结果的验证和修正
- 约束分层系统:多层次的执行约束
这些系统共同构成了 AI Agent 的"安全缰绳”,让 AI 从"会回答"进化到"能安全地执行"。
驾驭工程不是要限制 AI 的能力,而是要确保 AI 的能力得到负责任的、可控制的发挥。这标志着 AI 工程化进程进入了一个新的阶段。