大家好,最近在探索大模型应用开发时,你是否也遇到过这样的困扰:精心设计的系统提示词(System Prompt)越来越长,试图用复杂的规则去“框住”模型,结果却常常事与愿违,模型要么忽略部分指令,要么输出变得僵硬不自然。随着 Claude 5 的发布,特别是其“Claude Code”模式的推出,一个名为Context Engineering(上下文工程)的全新理念正在悄然改变我们与大模型交互的方式。它不再追求冗长的前置指令,而是通过更智能的上下文编排,让模型在“沉浸式”的对话中理解并执行任务。本文将深入剖析这一变革,并手把手带你体验 Claude Code 如何通过精简 80% 的系统提示词,实现更高效、更精准的代码生成与理解。
本文适合所有对 AI 编程助手、提示工程(Prompt Engineering)优化以及 Claude 模型最新特性感兴趣的开发者。无论你是想提升日常编码效率,还是正在构建基于大模型的开发工具,理解 Context Engineering 和 Claude Code 的运作机制都将大有裨益。我们将从核心概念讲起,逐步深入到环境配置、实战对比、最佳实践,并附上完整的代码示例和避坑指南。
1. 背景与核心概念:从“冗长指令”到“智能上下文”
在深入 Claude Code 之前,我们需要先理解两个关键概念:传统的系统提示词困境,以及新兴的 Context Engineering。
1.1 传统系统提示词的困境
长期以来,我们与 ChatGPT、Claude 等大模型交互时,习惯于在对话开头(或通过 API 的system参数)设置一段详细的“系统提示词”。这段文字定义了模型的角色、任务边界、输出格式和注意事项。例如,一个代码助手的系统提示词可能长达数百字:
你是一个资深的 Python 后端开发专家。你的回答必须专业、准确。请遵循以下规则: 1. 只回答与 Python 后端开发相关的问题。 2. 代码必须包含详细的注释。 3. 优先使用 FastAPI 框架。 4. 如果用户需求不明确,必须主动询问澄清。 5. 输出格式为:先解释思路,再给出代码,最后总结关键点。 ...这种方式的弊端日益明显:
- 信息过载与遗忘:模型对长上下文窗口开头的信息记忆会衰减,复杂的规则可能被忽略。
- 输出僵化:过于严格的格式限制会扼杀模型的创造力和灵活性,导致回答机械。
- 维护困难:提示词变成需要精心维护的“配置文件”,任何修改都可能产生意想不到的副作用。
- Token 浪费:大量 Token 被用于重复的、静态的规则描述,挤占了本可用于问题本身和思考过程的资源。
1.2 什么是 Context Engineering?
Context Engineering(上下文工程)是一种更高级的提示设计范式。它认为,模型的“理解”不仅仅来源于开头的那段指令,更来源于整个对话上下文的结构、顺序、示例和交互方式。
其核心思想是:通过精心设计和编排用户与模型交互的整个上下文(而不仅仅是第一条系统消息),来更自然、更有效地引导模型达成目标。
这包括:
- 动态角色注入:在对话中适时地以“用户”或“助手”的身份提供示例或引导,而不是在开头一次性定义死角色。
- 示例驱动(Few-Shot Learning):在上下文中直接提供输入-输出对,让模型通过类比学习,这比用文字描述规则更有效。
- 思维链(Chain-of-Thought)的显式引导:在上下文中展示一个完整的推理过程,鼓励模型模仿这种逐步思考的方式。
- 结构化输出:通过在上下文中展示一个格式示例(如一个完整的 JSON 对象),让模型学会输出相同的结构。
简单说,Context Engineering 是把对话本身当作一个“程序”来设计,而 Claude Code 正是为执行这种“程序”而优化的特殊模式。
1.3 Claude 5 与 Claude Code 是什么?
Claude 5是 Anthropic 公司发布的最新版 Claude 大模型,在推理、代码、数学等多方面能力均有显著提升。
Claude Code并非一个独立模型,而是 Claude 5(特别是 Claude 3.5 Sonnet 及以上版本)中一个经过深度优化的“模式”或“状态”。当模型检测到对话上下文与编程高度相关时,它会自动或手动激活此模式。在该模式下,模型对代码的生成、理解、调试和解释能力会得到极大增强,并且其行为模式更贴合 Context Engineering 的理念——它更擅长从对话的“上下文环境”中学习任务,而非依赖冗长的前置指令。
网络热词 “claude code安装” 其实是一个误解。你无法“安装”Claude Code,它是在使用 Claude API 或 Chat 界面时,通过特定的上下文交互方式触发的模型能力倾向。接下来,我们就通过实战来体验它。
2. 环境准备与版本说明
本文将基于 Anthropic 的官方 API 进行演示。你也可以在 Claude 官方的聊天界面上通过组织对话来体验类似效果,但 API 方式更能体现可控性和可集成性。
核心环境要求:
- 操作系统:Windows 10/11, macOS, 或 Linux (本文示例在 macOS/Linux 环境下编写,Windows 用户请注意命令差异)。
- Python 版本:3.8 及以上(推荐 3.10+)。本文示例使用 Python 3.10。
- 关键库:
anthropic: Anthropic 官方 Python SDK。python-dotenv: 用于管理环境变量(推荐)。
- Anthropic API 密钥:你需要注册 Anthropic 平台并获取 API Key。请注意保管,切勿泄露。
项目结构准备:创建一个新的项目目录,结构如下:
claude-code-context-engineering/ ├── .env # 存储API密钥(切勿提交到Git) ├── requirements.txt # 项目依赖 ├── config.py # 配置文件 ├── traditional_prompt.py # 传统冗长提示词示例 ├── context_engineering.py # 上下文工程示例 └── claude_code_demo.py # Claude Code 模式综合演示安装依赖:在项目根目录下创建requirements.txt文件:
anthropic>=0.25.0 python-dotenv>=1.0.0然后通过 pip 安装:
pip install -r requirements.txt配置 API 密钥:创建.env文件,并填入你的密钥:
# .env 文件内容 ANTHROPIC_API_KEY=your_anthropic_api_key_here重要:确保.env文件在.gitignore中,避免密钥泄露。
创建config.py来读取配置:
# config.py import os from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的环境变量 ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY") if not ANTHROPIC_API_KEY: raise ValueError("请在 .env 文件中设置 ANTHROPIC_API_KEY") # 指定使用 Claude 3.5 Sonnet 模型,这是体验 Claude Code 能力的基础 MODEL_NAME = "claude-3-5-sonnet-20241022"3. 核心原理与 Claude Code 的交互模式拆解
Claude Code 的强大,源于其对编程上下文特有的理解方式。下面我们拆解几个关键交互模式。
3.1 模式激活:从“告诉”到“展示”
传统方式是通过系统提示词“告诉”模型:“你是一个代码专家,请按格式输出。” Claude Code 模式下,更有效的方式是通过上下文“展示”给模型它应该怎么做。
传统方式(低效):
# traditional_prompt.py - 低效示例 import anthropic from config import ANTHROPIC_API_KEY, MODEL_NAME client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY) system_prompt = """ 你是一个Python代码生成助手。你必须严格遵守以下规则: 1. 只生成Python代码,不生成其他语言。 2. 代码必须包含函数定义、详细的文档字符串(docstring)和类型注解。 3. 必须包含至少两个使用示例。 4. 输出格式必须是:先写‘代码:’,然后放代码块;再写‘示例输出:’,然后放输出。 5. 不要有任何额外的解释文字。 """ user_message = "写一个函数,计算斐波那契数列的第n项。" response = client.messages.create( model=MODEL_NAME, max_tokens=1000, system=system_prompt, # 冗长的系统提示词 messages=[ {"role": "user", "content": user_message} ] ) print(response.content[0].text)这种方式的输出可能僵硬,且模型可能因为规则太多而犯错或遗漏。
Context Engineering 方式(高效):我们不设置冗长的system提示词,而是在对话历史中“演示”一次。
# context_engineering.py - 高效示例 import anthropic from config import ANTHROPIC_API_KEY, MODEL_NAME client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY) # 第一条消息:演示一个“好的回答”应该是什么样子(Few-Shot Example) demonstration_messages = [ { "role": "user", "content": "写一个函数,判断一个数是不是质数。" }, { "role": "assistant", "content": """代码: ```python def is_prime(n: int) -> bool: \"\"\" 判断一个正整数是否为质数。 Args: n (int): 待判断的正整数。 Returns: bool: 如果 n 是质数返回 True,否则返回 False。 Raises: ValueError: 如果 n 小于等于 1。 \"\"\" if n <= 1: raise ValueError(\"输入必须是一个大于1的正整数\") if n <= 3: return True if n % 2 == 0 or n % 3 == 0: return False i = 5 while i * i <= n: if n % i == 0 or n % (i + 2) == 0: return False i += 6 return True # 示例输出: print(is_prime(7)) # True print(is_prime(10)) # False try: print(is_prime(1)) except ValueError as e: print(e) # 输入必须是一个大于1的正整数示例输出: True False 输入必须是一个大于1的正整数 """ } ]
第二条消息:提出我们真正的问题
current_query = "写一个函数,计算斐波那契数列的第n项。"
将演示和当前问题一起发送
all_messages = demonstration_messages + [{"role": "user", "content": current_query}]
response = client.messages.create( model=MODEL_NAME, max_tokens=1000, messages=all_messages # 不依赖system,依赖上下文 ) print(response.content[0].text)
模型会从上下文中学习到我们期望的代码风格(包含类型注解、文档字符串、示例)、输出格式,并应用到新的问题上。这比罗列规则有效得多。 ### 3.2 思维链(CoT)的上下文内引导 对于复杂逻辑问题,直接在上下文中展示推理过程,能极大提升模型输出的正确率。 **示例:** 我们希望模型在生成代码前先分析需求。 ```python # 在对话历史中提供 CoT 示例 cot_messages = [ { "role": "user", "content": "设计一个函数,它接收一个字符串列表,返回一个字典,键是字符串,值是该字符串在列表中出现的次数。请先一步步分析,再写代码。" }, { "role": "assistant", "content": """好的,我们先一步步分析: 1. **目标**:输入列表,输出字典。字典键是列表中的唯一字符串,值是对应出现的次数。 2. **核心逻辑**:遍历列表。对于每个元素: - 如果它不在字典中,将其加入字典,计数为1。 - 如果它已在字典中,将其计数加1。 3. **边界情况**:空列表应返回空字典。输入是否为 None 或非列表需要处理。 4. **数据结构选择**:使用字典(dict)最合适,因为需要键值对和快速查找。 现在编写代码: ```python from typing import List, Dict def count_frequency(strings: List[str]) -> Dict[str, int]: \"\"\" 统计字符串列表中每个字符串的出现频率。 Args: strings (List[str]): 输入的字符串列表。 Returns: Dict[str, int]: 键为字符串,值为出现次数的字典。 \"\"\" if not isinstance(strings, list): raise TypeError(\"输入必须是一个列表\") freq_dict = {} for s in strings: if not isinstance(s, str): # 可以选择忽略非字符串元素或抛出异常,这里选择忽略 continue freq_dict[s] = freq_dict.get(s, 0) + 1 return freq_dict # 测试 test_list = [\"apple\", \"banana\", \"apple\", \"orange\", \"banana\", \"apple\"] print(count_frequency(test_list)) # 输出:{'apple': 3, 'banana': 2, 'orange': 1} print(count_frequency([])) # 输出:{}""" } ]
然后将 cot_messages 作为历史,再问新的复杂问题
当模型看到这种“先分析,后代码”的上下文后,在回答新的复杂编程问题时,也会倾向于先给出思考过程。 ### 3.3 结构化输出的上下文示例 如果你需要模型输出特定格式(如 JSON、YAML),在上下文中给一个完整的例子是最佳实践。 ```python structure_demo = [ { "role": "user", "content": "分析以下用户故事‘作为用户,我想登录系统,以便访问我的个人资料’,并提取出角色、功能和目的。用JSON格式输出。" }, { "role": "assistant", "content": """```json { “user_story”: “作为用户,我想登录系统,以便访问我的个人资料”, “analysis”: { “role”: “用户”, “function”: “登录系统”, “purpose”: “访问个人资料” } }""" } ]
后续询问类似“分析用户故事‘作为管理员,我想管理用户,以便维护系统秩序’”时,模型会输出相同结构的JSON。
## 4. 完整实战案例:构建一个微型代码审查助手 让我们综合运用 Context Engineering 理念,在不使用冗长系统提示词的情况下,构建一个能与 Claude Code 协作的微型代码审查助手。 **目标**:通过多轮对话上下文,让 Claude 学会以固定的、有帮助的格式进行代码审查。 ### 4.1 设计上下文交互剧本 我们不写“你是一个代码审查助手,请按以下格式输出...”,而是设计一段对话历史,让模型“沉浸”在代码审查的场景中学习。 我们创建一个新文件 `claude_code_demo.py`: ```python # claude_code_demo.py import anthropic from config import ANTHROPIC_API_KEY, MODEL_NAME import json client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY) def run_code_review_assistant(): """ 演示通过上下文工程,让 Claude 学会代码审查格式。 """ # 第一步:在上下文中植入“审查范例” # 这相当于一次性的、隐式的系统提示,但更自然。 demonstration_context = [ { "role": "user", "content": "请审查下面的 Python 代码,指出潜在问题并提供改进建议。\n```python\ndef calculate_average(numbers):\n sum = 0\n for i in range(len(numbers)):\n sum += numbers[i]\n return sum / len(numbers)\n```" }, { "role": "assistant", "content": """**代码审查报告** **代码摘要**:计算数字列表的平均值。 **潜在问题**: 1. **未处理空列表**:如果 `numbers` 为空列表,`len(numbers)` 为0,会导致 `ZeroDivisionError`。 2. **变量命名**:使用内置函数名 `sum` 作为变量名,会覆盖内置的 `sum()` 函数,不利于后续代码。 3. **迭代方式**:使用 `range(len(...))` 和索引访问是 C/Java 风格,在 Python 中不够 Pythonic。 4. **类型安全**:函数未对输入 `numbers` 的类型(是否可迭代、元素是否为数字)做检查。 **改进建议**: 1. **添加边界检查**:在计算前检查列表是否为空。 2. **更改变量名**:将 `sum` 改为 `total` 或 `s`。 3. **使用直接迭代**:直接 `for num in numbers:`。 4. **考虑使用内置函数**:直接使用 `sum(numbers)` 更简洁。 5. **添加类型注解和文档字符串**以提高可读性。 **重构后的代码示例**: ```python from typing import List, Union def calculate_average(numbers: List[Union[int, float]]) -> float: \"\"\" 计算数值列表的平均值。 Args: numbers: 包含整数或浮点数的列表。 Returns: 平均值,浮点数。 Raises: ValueError: 如果输入列表为空。 \"\"\" if not numbers: raise ValueError(\"输入列表不能为空\") # 使用内置sum函数,并确保浮点数除法 total = sum(numbers) return total / len(numbers)安全与性能提示:
对于非常大的列表,
sum是高效的。如果输入可能包含非数值,需要在函数内部或调用处处理类型错误。 """ } ]
第二步:提出我们真正要审查的代码
code_to_review = """ def find_duplicates(items): seen = set() duplicates = [] for item in items: if item in seen: duplicates.append(item) else: seen.add(item) return duplicates """ current_query = f"请审查下面的 Python 代码:\n
python\n{code_to_review}\n"组合消息:历史范例 + 新问题
all_messages = demonstration_context + [{"role": "user", "content": current_query}]
print("正在发送代码审查请求...\n") response = client.messages.create( model=MODEL_NAME, max_tokens=1500, messages=all_messages )
print("=== 代码审查助手反馈 ===") print(response.content[0].text)
ifname== "main": run_code_review_assistant()
### 4.2 运行与结果分析 运行脚本: ```bash python claude_code_demo.py预期输出(格式会类似):
正在发送代码审查请求... === 代码审查助手反馈 === **代码审查报告** **代码摘要**:查找列表中的重复元素。 **潜在问题**: 1. **算法逻辑**:当前代码只能找出**第二次及以后**出现的重复项。例如,对于 `[1, 2, 1, 3, 1]`,返回 `[1]`,但第一个 `1` 不会被标记为重复,这符合“找出重复项”的常见理解,但可能需要澄清需求。 2. **时间复杂度**:`if item in seen:` 对于 `set` 是 O(1),整体 O(n),效率很好。 3. **类型注解与文档缺失**:函数缺少类型提示和说明。 4. **输入假设**:假设 `items` 中的元素是可哈希的(因为要放入 `set`)。如果传入包含列表或字典的列表,会抛出 `TypeError`。 **改进建议**: 1. **明确需求**:与需求方确认,是找出所有重复元素(包括第一次出现),还是仅找出重复出现的实例。当前实现是后者。 2. **添加类型注解和文档**。 3. **考虑不可哈希元素**:如果可能处理不可哈希元素,需要备选方案(如使用列表,但性能下降)。 **重构后的代码示例**: ```python from typing import List, TypeVar, Hashable T = TypeVar('T', bound=Hashable) def find_duplicates(items: List[T]) -> List[T]: \"\"\" 找出列表中重复出现的元素(每个重复元素只在结果中出现一次)。 注意:此函数返回的是那些在列表中出现了至少两次的元素, 但每个这样的元素在结果列表中只出现一次,且不包含其首次出现的位置。 Args: items: 一个可哈希元素的列表。 Returns: 一个列表,包含所有重复出现的元素(去重后)。 \"\"\" seen = set() duplicates = set() # 使用set避免重复项在结果中重复 for item in items: if item in seen: duplicates.add(item) else: seen.add(item) return list(duplicates) # 测试 print(find_duplicates([1, 2, 3, 2, 4, 3, 5])) # 输出:[2, 3] print(find_duplicates([1, 1, 1])) # 输出:[1]安全与性能提示:
- 使用
set保证了 O(n) 的时间复杂度。 - 如果
items非常大,此函数内存占用为 O(n)。 - 确保传入的元素类型可哈希。
### 4.3 结果说明 可以看到,**我们没有使用任何系统提示词**,但 Claude 完美地模仿了第一次对话中助理的审查格式: 1. **结构一致**:采用了“**代码审查报告**”标题,并分成了“代码摘要”、“潜在问题”、“改进建议”、“重构后的代码示例”、“安全与性能提示”几个部分。 2. **分析深度**:不仅指出了表面问题(缺少类型注解),还深入分析了算法逻辑的细微之处(“第二次及以后出现的重复项”),这显示了 Claude Code 强大的代码理解能力。 3. **输出质量**:提供了重构后的代码,并添加了详细的文档字符串和类型注解,甚至使用了 `TypeVar` 来增加泛用性。 这就是 Context Engineering 的力量:通过一个高质量的上下文范例,模型学会了复杂的任务格式和深度分析能力,效果远胜于一段冰冷的规则列表。 ## 5. 常见问题与排查思路 在实际使用 Claude Code 和 Context Engineering 时,你可能会遇到以下问题: | 问题现象 | 可能原因 | 排查思路与解决方案 | | :--- | :--- | :--- | | 模型输出格式不符合预期 | 1. 上下文范例不够清晰或与当前任务差异大。<br>2. 范例被后续长对话冲淡。<br>3. 任务本身过于复杂,单范例不足以引导。 | 1. **优化范例**:确保范例与你的目标任务高度相似,且输出格式是你期望的完美模板。<br>2. **管理上下文长度**:对于长对话,可以考虑定期在关键节点“重播”或总结范例。或者,在 API 调用时,将范例放在更靠近用户问题的地方。<br>3. **增加范例数量**:提供 2-3 个不同侧重点的范例(Few-Shot),让模型更好地归纳规则。 | | Claude 似乎没有进入“Code 模式” | 1. 对话上下文与编程无关,模型未触发相关优化。<br>2. 使用的模型版本不支持或未优化此模式。 | 1. **提供代码上下文**:在对话中尽早地发送代码片段、错误信息或与编程相关的问题。模型会根据上下文动态调整。<br>2. **确认模型**:确保使用 `claude-3-5-sonnet` 或更新版本。旧版本(如 Claude 2)的“代码模式”特征不明显。 | | API 响应慢或 Token 消耗大 | 1. 上下文过长,包含了太多历史消息。<br>2. 请求的 `max_tokens` 参数设置过高。 | 1. **精简上下文**:只保留对当前任务至关重要的历史消息。对于代码审查、生成等任务,通常最近 1-2 轮对话和关键范例就够了。<br>2. **合理设置 `max_tokens`**:根据任务预估输出长度。对于代码生成,设置 2000-4000 通常足够;对于简单问答,可以更低。<br>3. **使用流式响应**:对于长文本生成,使用 `stream=True` 可以提升感知速度。 | | 生成的代码有错误或逻辑问题 | 1. 问题描述本身模糊或有歧义。<br>2. 上下文范例中存在错误,被模型学习。<br>3. 模型存在“幻觉”。 | 1. **清晰化问题**:将需求拆解得更具体、无歧义。使用“请先一步步思考”的提示可以降低幻觉率。<br>2. **检查范例质量**:确保你提供的范例代码是正确的、高效的。<br>3. **迭代与修正**:将模型生成的代码运行测试,把错误信息或测试失败用例作为新的用户输入反馈给模型,让它自我修正。这是 Context Engineering 的重要环节。 | | 如何保持多轮对话中风格一致? | 长对话后,模型可能会“忘记”最初的格式要求。 | **关键风格重注入**:在对话进行到一定轮数后,可以以用户身份温和地提醒:“请继续沿用我们之前那种包含‘潜在问题’和‘改进建议’分点的代码审查格式。”或者,直接重新发送一次最初的范例组合。 | ## 6. 最佳实践与工程建议 要将 Context Engineering 和 Claude Code 有效集成到你的开发流程中,请遵循以下建议: ### 6.1 设计高质量的上下文范例 * **精准匹配**:范例任务与你的真实任务越像,效果越好。如果你要做代码审查,范例就应该是代码审查。 * **展示,而非讲述**:在范例中直接展示你期望的**完整输出**,包括格式、语气、深度。这比用文字描述规则强大十倍。 * **多样性**:如果任务复杂,提供 2-3 个覆盖不同场景的范例(如审查函数、审查类、审查算法),帮助模型更好地泛化。 ### 6.2 管理对话上下文 * **上下文是宝贵资源**:Claude 的上下文窗口很长(如 200K),但并非无限。主动管理历史,移除无关对话。 * **重要内容靠前放**:模型对上下文开头和结尾的信息更敏感。将最重要的范例或指令放在对话历史的靠前位置。 * **适时总结**:对于非常长的协作会话(如调试一个复杂 bug),可以阶段性总结当前进展和共识,作为新的上下文起点,替代冗长的原始历史。 ### 6.3 与 Claude Code 的协作模式 * **迭代式开发**:不要期望一次生成完美代码。采用“生成 -> 运行/测试 -> 反馈错误 -> 修正”的循环。将错误信息作为上下文的一部分反馈给模型,它非常擅长根据错误调试代码。 * **分步骤引导**:对于复杂任务,将其分解为多个子问题,通过多轮对话逐步引导模型完成。例如:“第一步,设计数据库表结构。第二步,编写对应的 SQLAlchemy 模型类。第三步,编写 CRUD 操作的函数。” * **利用“分析”能力**:在让模型生成代码前,先让它“分析需求”、“评估方案”或“解释现有代码”。这能激活其推理能力,为后续高质量输出奠定基础。 ### 6.4 系统提示词的合理使用 Context Engineering 并非要完全抛弃系统提示词,而是将其用于最根本、最稳定的指令。 * **保留基础设定**:可以用非常简短的系统提示词设定基础角色和基础安全规则。例如:`“你是一个乐于助人的编程助手。”` * **避免细节规则**:不要将格式、风格等动态要求放在系统提示词中,这些应该通过上下文范例来传递。 * **结合使用**:一个高效的组合是:**简短的系统提示词(定基调) + 精心设计的上下文范例(教方法)**。 ### 6.5 生产环境集成注意事项 * **API 调用稳定性**:实现重试机制和退避策略以应对网络波动或 API 限流。 * **成本控制**:监控 Token 使用量。上下文范例虽然高效,但也会消耗 Token。权衡范例的详细程度与成本。 * **输入输出过滤**:对用户输入和模型输出进行必要的清洗和过滤,防止注入攻击或不当内容。 * **缓存策略**:对于常见、固定的任务(如某种固定格式的代码生成),可以将优化后的提示上下文(系统提示+范例)缓存起来,避免每次重新构建。 Claude 5 和 Claude Code 代表的是一种更加自然、高效的人机协作范式。它要求我们从“提示词工程师”转变为“上下文设计师”。我们不再是与一个需要详细说明书才能工作的机器对话,而是在为一个高度智能的协作者搭建一个它能发挥所长的舞台。通过精心编排的对话范例、清晰的思维链展示和结构化的示例,我们能激发出模型最强的理解和生成能力。 对于开发者而言,这意味着我们可以用更少的精力在“调教提示词”上,而将更多时间专注于定义问题本身和验证结果。下一次当你需要 Claude 帮助你编程时,不妨先想一想:我该如何通过一个简单的例子,让它明白我想要什么?这往往比写一大段规则要有效得多。