本篇目标:这是提升 AI 智商最快的方法。当你写了 1000 字的规则 AI 还是听不懂时,扔给它 2 个例子,它瞬间就懂了。


一、为什么“说一百遍”不如“做一遍”?

人类的学习方式有两种:

  1. 读说明书(Zero-shot):给你一本《Python 语法大全》,让你看完去写代码。(很难,容易忘,容易错)
  2. 看例子(Few-shot):给你看两个别人写的 Python 脚本,让你照葫芦画瓢。(简单,直观,精准)

AI 也是一样的。

  • Zero-shot(零样本):直接问“帮我提取日期”。
    • AI 可能会给 2023-01-01,也可能给 Jan 1st, 2023
  • Few-shot(少样本):给它看两个例子,再问。
    • AI 看到例子是 YYYY/MM/DD,它就会乖乖输出 2023/01/01

结论:在 Prompt 里加例子,能大幅提升 AI 的稳定性风格一致性


二、Few-shot 的威力:三个层次

Level 1:统一输出格式

你想要特定的 JSON 结构,但不想写复杂的 Schema。

Prompt:

把下面的地址解析成 JSON。

例子 1:
输入:张三,北京朝阳区,13800000000
输出:{"name": "张三", "city": "北京", "phone": "13800000000"}

例子 2:
输入:李四,上海浦东,13911111111
输出:{"name": "李四", "city": "上海", "phone": "13911111111"}

输入:王五,深圳南山,13722222222
输出:

AI{"name": "王五", "city": "深圳", "phone": "13722222222"} (完美复刻格式)

Level 2:教会思考逻辑(CoT)

你想要 AI 学会你的推理过程。

Prompt:

判断这个评论是正面还是负面。

例子 1:
输入:手机很漂亮,但是电池太不耐用了,才用了半天就没电了。
思考:虽然外观好评,但核心功能(电池)差评,整体影响使用体验。
输出:负面

例子 2:
输入:快递慢了点,不过东西确实是正品,价格也便宜。
思考:物流是小瑕疵,但产品质量和价格是核心优势,整体满意。
输出:正面

输入:屏幕清晰度一般,不过这价格要啥自行车,给个好评吧。
输出:

AI
思考:屏幕一般是缺点,但考虑到价格低廉(性价比高),用户最终意图是好评。
输出:正面

Level 3:处理边界情况(Edge Cases)

这是高手最常用的技巧。专门给 AI 看“反例”或“异常情况”。

Prompt:

提取金额。

例子 1:
输入:买了 3 个苹果,花了 15 元。
输出:15

例子 2:
输入:这件衣服打折后 99 块钱。
输出:99

例子 3(异常):
输入:我不记得花了多少钱了。
输出:0

输入:大概是两三百吧。
输出:

AI0 (因为它学会了“模糊描述算作 0”这个规则,而不需要你写复杂的逻辑说明)。


三、如何设计“好例子”?

例子不是随便找的,要有代表性。

1. 正例(Standard Case)

最常见的情况。告诉 AI “正常应该怎么做”。

2. 反例(Negative Case)

告诉 AI “什么是不对的”。

  • 例子:“注意,不要提取‘2023年’这种年份,只提取具体的‘2023-01-01’日期。”

3. 边界例(Edge Case)

告诉 AI “遇到这种特殊情况怎么办”。

  • 例子:“如果输入里没有电话号码,输出 null,不要填‘未知’。”

四、实战:用 Few-shot 统一代码风格

假设你们团队规定:Python 函数必须有 Type Hints,且必须用 Google 风格的 Docstring。
你不需要把 Google 风格指南全文贴给 AI,只需要给它看一个代码片段。

Prompt:

# Role
Python Developer following strict team guidelines.

# Examples

Input:
def add(a, b):
    return a + b

Output:
def add(a: int, b: int) -> int:
    """Adds two numbers.

    Args:
        a: The first number.
        b: The second number.

    Returns:
        The sum of a and b.
    """
    return a + b

Input:
def get_user(id):
    # logic...
    return user

Output:
def get_user(user_id: int) -> Dict[str, Any]:
    """Retrieves a user by ID.

    Args:
        user_id: The unique identifier of the user.

    Returns:
        A dictionary containing user details.
    """
    # logic...
    return user

# Task
Convert the following function to the team style:
def send_email(to, subject, body):
    # ...

AI 结果:它会立刻模仿上面的风格,给 send_email 加上类型和文档,完全符合你的要求。


五、本篇产出:示例库结构(如何存放与复用)

不要每次都手写例子。建立一个 examples.md 文件,分类存放你的“教学素材”。

# Prompt Examples Library

## 1. Data Extraction (JSON)
[Example 1: Standard]
[Example 2: Missing Data]

## 2. Code Style (Python)
[Example 1: Function Definition]
[Example 2: Error Handling]

## 3. SQL Query
[Example 1: Simple Join]
[Example 2: Complex Aggregation]

每次写 Prompt 时,从这里复制两段进去,效率翻倍。


练习题:教会 AI 提取“敏感词”

任务:写一个 Prompt,让 AI 从一段话里提取出所有骂人的话(敏感词),并用 * 号替换。
要求:使用 Few-shot 方法,至少包含一个“正常说话”的例子和一个“隐晦骂人”的例子。

点击查看参考答案
Task: Censor offensive language.

Example 1:
Input: 你真是个笨蛋,连这个都不会。
Output: 你真是个**,连这个都不会。

Example 2:
Input: 今天天气真好,我们去公园吧。
Output: 今天天气真好,我们去公园吧。

Example 3 (Implicit):
Input: 这种脑残设计也就你想得出来。
Output: 这种**设计也就你想得出来。

Input: 你这猪头,别挡道。
Output:

下一步:我们学会了如何“一次性”把需求说清楚。但在实际开发中,需求往往是复杂的,一次搞不定。下一章我们将学习 三轮迭代法——如何像和同事讨论一样,通过多轮对话把代码改对。

Logo

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

更多推荐