本篇目标:学会给 AI “洗脑”。让它从一个“什么都懂一点的路人”,变成你专属的“资深 Python 架构师”。


一、AI 的“人格面具”

默认情况下,ChatGPT 就像一个彬彬有礼的客服

  • 你问:“Python 怎么读文件?”
  • 它回:“亲,您可以使用 open() 函数哦,注意要处理异常呢……”(废话很多,代码很少)。

但如果你给它戴上一个面具(Persona),它的画风会突变。

  • 你设定:“你是一个暴躁的资深黑客,只给代码,不解释。”
  • 你问:“Python 怎么读文件?”
  • 它回:
    with open('f.txt') as f: print(f.read())
    
    (简洁、高效、没废话)。

控制这个面具的开关,就叫 System Prompt(系统提示)


二、消息的三种类型:System、User、Assistant

在 AI 的对话记录里,每一条消息都有一个“身份标签”(Role):

1. System(系统)

  • 地位最高指令(宪法)
  • 作用:定义 AI 的身份、性格、能力边界、输出格式。
  • 特点:通常只发一次,在对话的最开始。用户(你)在网页版里通常看不到它,但在 API 或自定义 Agent 里,它是最重要的配置。

2. User(用户)

  • 地位具体指令(圣旨)
  • 作用:你发给它的需求、问题、代码片段。
  • 特点:随着对话不断增加。

3. Assistant(助手)

  • 地位执行结果(奏折)
  • 作用:AI 回复的内容。
  • 特点:它会参考 System 的设定,来回答 User 的问题。

三、为什么要写 System Prompt?

很多新手只会在 User 框里写需求,却忽略了 System。
坏处

  1. 重复劳动:每次都要说“请只给我代码,不要解释”。
  2. 遗忘:聊久了,它忘了自己是谁。
  3. 不专业:它默认是“通用助手”,写代码可能不够严谨(比如忘了加类型注解)。

好处
一旦在 System 里写好“你是一个资深 Python 工程师,必须写 Type Hints,必须写单元测试”,它就会在每一轮对话中都死死遵守这个规则,哪怕聊了 100 轮也不会忘。


四、黄金 System Prompt 骨架(可复用)

一个好的 System Prompt 应该包含以下模块:

1. Role(角色定义)

You are a senior software engineer specialized in [Python/React].
(你是一个精通 Python/React 的资深软件工程师。)

2. Goal(目标)

Your goal is to write clean, efficient, and maintainable code.
(你的目标是写出整洁、高效、可维护的代码。)

3. Constraints(约束 - 最重要!)

  • Do NOT use deprecated libraries.(别用过时的库)
  • Always add type hints.(必须加类型注解)
  • If the solution is complex, think step-by-step.(如果问题复杂,一步步想)
  • If you are unsure, ask clarifying questions.(如果不确定,先问我,别瞎猜)

4. Output Format(输出格式)

  • Only return the code block, unless explanation is requested.(除非我问,否则只给代码)
  • Use Markdown format.(用 Markdown 格式)

五、实战:打造你的专属“代码助手”

假设你是一个 Python 开发者,讨厌废话,喜欢 Type Hints。
请把下面这段话复制到你的 Cursor RulesChatGPT Custom Instructions 里:

# Role
You are an expert Python developer. You prioritize code quality, performance, and readability.

# Guidelines
1.  **Type Hints**: All functions must have type hints (PEP 484).
2.  **Docstrings**: Use Google-style docstrings for complex functions.
3.  **Libraries**: Prefer `pathlib` over `os.path`, `pydantic` over raw dicts.
4.  **Error Handling**: Never use bare `try-except`. Always catch specific exceptions.
5.  **Brevity**: Do not explain basic concepts. Assume I know Python. Just give me the solution.

# Output Style
- If I ask for a refactor, show the `diff` or the full new code.
- If I ask for a script, include `if __name__ == "__main__":` block.

效果对比

  • 没加 System
    User: “写个读 JSON 的函数”
    AI: “好的!JSON 是一种轻量级的数据交换格式……这是代码……这是解释……”(啰嗦)
  • 加了 System
    User: “写个读 JSON 的函数”
    AI:
    import json
    from pathlib import Path
    from typing import Any, Dict
    
    def load_json(file_path: Path) -> Dict[str, Any]:
        """Loads JSON data from a file."""
        try:
            with file_path.open('r', encoding='utf-8') as f:
                return json.load(f)
        except json.JSONDecodeError as e:
            raise ValueError(f"Invalid JSON in {file_path}: {e}")
    
    (直接给最佳实践代码,带类型,带异常处理,零废话。)

本篇产出:你的通用 System Prompt 库

请保存这几段 Prompt,根据场景切换:

场景 System Prompt 核心指令
写代码 (默认) “你是一个资深工程师。代码必须包含类型注解、异常处理。除非我问,否则少废话。”
改 Bug “你是一个 QA 专家。请分析报错原因,给出 3 种可能的修复方案,并按可能性排序。”
写文档 “你是一个技术文档以此。请用通俗易懂的语言解释代码,多用比喻,适合初学者阅读。”
Code Review “你是一个挑剔的架构师。请找出代码中的安全漏洞、性能瓶颈和坏味道(Bad Smell)。不要客气,直接指出问题。”

下一步:我们学会了怎么让 AI “扮演角色”,也学会了怎么让它“闭嘴干活”。但有时候我们需要它输出特定的格式(比如给前端用的 JSON)。下一章我们将学习结构化输出——让 AI 不再只是陪聊,而是变成一个API 生成器

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐