logo

提示词工程进阶 (Prompting for Agents)

在 Agent 开发中,Prompt Engineering 不再是简单的“写小作文”,而是编写自然语言代码。你需要让 LLM 严格遵循特定的思维模式和输出协议。

[PROMPT_LAB_BANNER]


1. 从 Chat Prompt 到 Agentic Prompt

普通的 Chat Prompt 关注的是“回答得好不好”,而 Agentic Prompt 关注的是**“执行得对不对”**。

维度Chat PromptAgentic Prompt
目标获得知识或文本触发正确的工具调用和逻辑流
结构自由文本严格的 XML / JSON 结构
容错允许模糊必须精确,否则系统崩溃

2. 核心模式:ReAct (Reason + Act)

ReAct 是 Agent 提示词的鼻祖。它要求模型在执行任何动作前,必须先进行思考 (Thought)

ReAct 模板示例:

# Role
你是一个能够使用工具的 AI 助手。

# Tools
你可以使用以下工具:
- google_search: 搜索互联网信息
- calculator: 进行数学计算

# Format
回答必须遵循以下格式:

Question: 用户的问题
Thought: 我应该怎么做?
Action: 要调用的工具名称
Action Input: 工具的参数
Observation: 工具返回的结果
... (重复 Thought/Action/Observation)
Final Answer: 最终给用户的回答

# Example
Question: 埃隆·马斯克的年龄乘以 2 是多少?
Thought: 我需要先查到埃隆·马斯克的生日,算出年龄,然后乘以 2。
Action: google_search
Action Input: Elon Musk birthday
Observation: June 28, 1971
Thought: 现在是 2026 年,他大概 55 岁。
Action: calculator
Action Input: 55 * 2
Observation: 110
Final Answer: 埃隆·马斯克的年龄乘以 2 大约是 110。

为何有效? 强制模型输出 Thought 可以让它利用 CoT (思维链) 提高推理准确率;分离 Action 让程序容易解析。


3. 结构化输出 (Structured Output)

让 LLM 输出 JSON 是构建稳定 Agent 的基石。不要让模型输出“好的,结果是...”,要强迫它输出 { "result": "..." }

技巧 A:使用 XML 标签隔离上下文

Anthropic 推荐使用 XML 标签来区分不同类型的数据,防止 Prompt Injection。

<documents>
    <doc id="1">...</doc>
    <doc id="2">...</doc>
</documents>

<instructions>
    请根据 <documents> 中的内容回答问题。
</instructions>

技巧 B:JSON Mode 强制约束

在 API 调用时开启 response_format: { type: "json_object" },并在 Prompt 中提供 Schema。

# Output Format
你必须输出符合以下 TypeScript 接口的 JSON:

```typescript
interface Response {
  reasoning: string; // 思考过程
  plan: string[];    // 下一步计划
  command?: string;  // 要执行的命令 (可选)
}

---

## 4. 角色扮演 (Persona) 的进阶用法

在 Agent 中,Persona 不仅仅是语气,更是**权限和能力的边界**。

- **坏 Persona**:“你是一个有用的助手。”(太泛,容易胡言乱语)
- **好 Persona**:“你是一个 Python 代码审查员。你**只**负责检查代码的安全性漏洞。你**不能**修改代码逻辑。如果发现 SQL 注入风险,必须输出严重等级为 'High'。”

---

## 5. 提示词维护与版本管理

Agent 的 Prompt 往往长达数千个 Token。
- **模块化**:将 System Prompt 拆分为 `Role`, `Context`, `Tools`, `Examples` 等模块拼接。
- **版本控制**:像管理代码一样管理 Prompt (PromptOps)。
- **动态注入**:根据用户的 Task 动态插入相关的 Few-Shot Examples。

---

## 小结

编写 Agent Prompt 的心法:**把 LLM 当作一个极度聪明但需要明确指令的初级程序员**。
1.  **显式思考**:强制输出 `Thought`。
2.  **结构化**:输入输出全部 JSON/XML 化。
3.  **边界清晰**:明确告诉它**不能**做什么。
AI Agent 开发实战手册
AI Engineer

AI Agent 开发实战手册

从 0 到 1 掌握 AI Agent 开发:涵盖自主计划、工具调用、MCP 协议与多智能体编排实战。

AI Agent 开发实战手册提示词工程进阶

提示词工程进阶 (Prompting for Agents)

在 Agent 开发中,Prompt Engineering 不再是简单的“写小作文”,而是编写自然语言代码。你需要让 LLM 严格遵循特定的思维模式和输出协议。

Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

进入 Prompt Lab →

#1. 从 Chat Prompt 到 Agentic Prompt

普通的 Chat Prompt 关注的是“回答得好不好”,而 Agentic Prompt 关注的是**“执行得对不对”**。

维度Chat PromptAgentic Prompt
目标获得知识或文本触发正确的工具调用和逻辑流
结构自由文本严格的 XML / JSON 结构
容错允许模糊必须精确,否则系统崩溃

#2. 核心模式:ReAct (Reason + Act)

ReAct 是 Agent 提示词的鼻祖。它要求模型在执行任何动作前,必须先进行思考 (Thought)

#ReAct 模板示例:

markdown
# Role 你是一个能够使用工具的 AI 助手。 # Tools 你可以使用以下工具: - google_search: 搜索互联网信息 - calculator: 进行数学计算 # Format 回答必须遵循以下格式: Question: 用户的问题 Thought: 我应该怎么做? Action: 要调用的工具名称 Action Input: 工具的参数 Observation: 工具返回的结果 ... (重复 Thought/Action/Observation) Final Answer: 最终给用户的回答 # Example Question: 埃隆·马斯克的年龄乘以 2 是多少? Thought: 我需要先查到埃隆·马斯克的生日,算出年龄,然后乘以 2。 Action: google_search Action Input: Elon Musk birthday Observation: June 28, 1971 Thought: 现在是 2026 年,他大概 55 岁。 Action: calculator Action Input: 55 * 2 Observation: 110 Final Answer: 埃隆·马斯克的年龄乘以 2 大约是 110。

为何有效? 强制模型输出 Thought 可以让它利用 CoT (思维链) 提高推理准确率;分离 Action 让程序容易解析。


#3. 结构化输出 (Structured Output)

让 LLM 输出 JSON 是构建稳定 Agent 的基石。不要让模型输出“好的,结果是...”,要强迫它输出 { "result": "..." }

#技巧 A:使用 XML 标签隔离上下文

Anthropic 推荐使用 XML 标签来区分不同类型的数据,防止 Prompt Injection。

xml
<documents> <doc id="1">...</doc> <doc id="2">...</doc> </documents> <instructions> 请根据 <documents> 中的内容回答问题。 </instructions>

#技巧 B:JSON Mode 强制约束

在 API 调用时开启 response_format: { type: "json_object" },并在 Prompt 中提供 Schema。

markdown
# Output Format 你必须输出符合以下 TypeScript 接口的 JSON: ```typescript interface Response { reasoning: string; // 思考过程 plan: string[]; // 下一步计划 command?: string; // 要执行的命令 (可选) }

---

## 4. 角色扮演 (Persona) 的进阶用法

在 Agent 中,Persona 不仅仅是语气,更是**权限和能力的边界**。

- **坏 Persona**:“你是一个有用的助手。”(太泛,容易胡言乱语)
- **好 Persona**:“你是一个 Python 代码审查员。你**只**负责检查代码的安全性漏洞。你**不能**修改代码逻辑。如果发现 SQL 注入风险,必须输出严重等级为 'High'。”

---

## 5. 提示词维护与版本管理

Agent 的 Prompt 往往长达数千个 Token。
- **模块化**:将 System Prompt 拆分为 `Role`, `Context`, `Tools`, `Examples` 等模块拼接。
- **版本控制**:像管理代码一样管理 Prompt (PromptOps)。
- **动态注入**:根据用户的 Task 动态插入相关的 Few-Shot Examples。

---

## 小结

编写 Agent Prompt 的心法:**把 LLM 当作一个极度聪明但需要明确指令的初级程序员**。
1.  **显式思考**:强制输出 `Thought`。
2.  **结构化**:输入输出全部 JSON/XML 化。
3.  **边界清晰**:明确告诉它**不能**做什么。

常见问题

开发 AI Agent 需要掌握哪些编程语言?
首选 Python 或 TypeScript。Python 是 AI 生态的基石,而 TypeScript 在开发 MCP Server 和网页端交互时效率极高。借助 Cursor 等 AI 原生编辑器,编程门槛已大幅降低。
MCP 协议目前支持哪些模型?
MCP 是开放协议,目前对 Claude 3.5 系列支持最完美。通过 MCP Proxy,GPT-4o 和 Gemini 也可以间接访问 MCP Server 数据源。
AI Agent 会导致程序员失业吗?
不会,但会改变程序员的工作内容。未来的开发者将从“写代码”转向“管理 Agent 团队”,重点在于系统架构设计、复杂逻辑校验和 Agent 的提示词优化。