logo
P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

Information Extraction

information extraction prompts(overview)

信息提取 (IE) 是 Prompt Engineering 中最具商业价值的应用场景之一。它的核心目标是将非结构化文本(如简历、合同、新闻、对话日志)转化为计算机可处理的结构化数据(如 JSON, SQL, CSV)。

在 AI 时代,以前需要写几千行正则表达式(Regex)才能解决的问题,现在只需要一个精心设计的 Prompt。


核心应用场景

  1. 简历解析:从 PDF 文本中提取候选人姓名、学历、技能栈、最近一份工作。
  2. 财务报销:从发票 OCR 文本中提取商家名称、金额、税号、日期。
  3. 舆情分析:从用户评论中提取“产品优缺点”、“情感倾向”、“具体诉求”。
  4. 医疗结构化:从医生病历手记中提取“诊断结果”、“用药清单”、“过敏史”。

技巧 1:定义严格的 Schema (Schema Definition)

不要只说“提取关键信息”,要明确告诉 AI 你想要的数据结构。用 JSON 是最通用的做法。

❌ 错误的 Prompt

帮我看看这份简历,把他的学校和技能列出来。

✅ 正确的 Prompt (使用 JSON Schema)

你是一个专业的数据提取助手。请从以下简历文本中提取信息,并严格按照 JSON 格式输出。

输出格式要求 (Schema):
{
"candidate_name": "string (全名)",
"education": [
{
"school": "string",
"degree": "string (e.g., Bachelor, Master)",
"year_graduated": "integer or null"
}
],
"skills": ["string (提取技术栈关键词)"],
"years_of_experience": "integer (估算总工作年限)"
}

规则:

1. 如果某项信息缺失,请返回 null,不要编造。
2. 只要返回 JSON,不要包含任何解释性文字。

简历文本:
{resume_text}

技巧 2:提供示例 (One-Shot Extraction)

对于复杂的提取任务(例如需要标准化字段),提供一个“输入-输出”对(One-shot)效果显著。

Prompt 示例:

任务:从客服对话中提取用户的“投诉原因”和“情绪强度”。

示例输入:
用户:我买的这款耳机才用了三天左边就不响了!你们这什么质量啊,赶紧给我退钱!
示例输出:
{
"issue_category": "Product Defect",
"issue_detail": "Left earbud stopped working",
"sentiment_score": 9,
"action_required": "Refund"
}

当前输入:
用户:你好,请问我的订单发货了吗?我都等了一周了,如果是缺货麻烦告诉我一声。
当前输出:

技巧 3:先推理,后提取 (Reasoning Extraction)

在处理需要“判断”的信息时(例如:这份合同是否存在法律风险?),直接让 AI 输出 JSON 容易导致错误。让它先思考,再输出

Prompt 示例:

请分析以下新闻,提取其中提到的所有公司及其股价变动原因。

输出格式:
{
"reasoning": "string (在这里简要分析文中的逻辑关系)",
"entities": [
{
"company": "string",
"stock_change": "string (e.g., +5%)",
"reason": "string"
}
]
}

💡 最佳实践 (Best Practices)

  1. 处理“无数据” (Handling Nulls)

    • 明确指示 AI:当信息不存在时,是返回 null"N/A" 还是空字符串 ""
    • 推荐:使用 null,方便后续代码处理。
  2. 强制 JSON 模式 (JSON Mode)

    • 如果你使用的是 GPT-4o 或 Gemini 1.5 Pro 的 API,请在 API 调用中开启 response_format: { type: "json_object" }
    • 这能从底层保证输出的一定是合法 JSON,杜绝缺少括号的错误。
  3. 使用 TypeScript 定义 (Advanced)

    • 对于拥有强代码能力的模型(如 Claude 3.5 Sonnet, GPT-4),直接把 TypeScript Interface 扔给它作为 Schema,往往比用自然语言描述更准确。
    Extract data following this TypeScript interface:
    
    interface Invoice {
    id: string;
    total: number; // excluding tax
    items: { name: string; qty: number; price: number }[];
    }
    

案例库