logo
P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

Open domain Q&A

open-domain question answering prompt example

开放域问答是指让 AI 仅依靠其预训练知识(即“大脑”里记下的东西)来回答问题,而不提供额外的文档或上下文。

这就像是让一个博学多才的学者参加“百科全书问答比赛”。

核心挑战:知识截止与幻觉

在进行开放域问答时,你必须时刻警惕两个风险:

  1. 知识截止 (Knowledge Cutoff):AI 的记忆停留在训练结束的那一天。问它“今天东京的天气”或“最新的奥运冠军”,它答不上来。
  2. 幻觉 (Hallucination):当被问到它不知道的细节时,AI 倾向于自信地胡编乱造(一本正经地胡说八道)。

❌ 错误的示范 (Bad Prompt)

User: 告诉我关于量子力学的一切。

后果:话题太大,AI 会输出一大堆泛泛而谈的废话,或者随机挑选几个知识点展开,无法满足用户具体需求。


✅ 进阶技巧:设定边界与拒绝机制

为了让开放域问答更可靠,我们需要在 Prompt 中显式植入“拒绝机制”

优化后的 Prompt 模板

你是一个诚实、博学的 AI 助手。请回答用户的问题。

重要规则:

1. **诚实原则**:如果你不知道答案,或者不确定(例如涉及最新的实时信息),请直接回答 "我不知道" 或 "无论是我的知识库中没有相关信息",**绝对不要编造**2. **知识截止**:请留意你的知识截止日期。对于显然发生在截止日期之后的新闻(如 2026 年的事件),请明确告知用户你无法回答。
3. **风格**:回答要简洁明了,适合普通大众阅读。

用户问题:
{user_question}

实战演练:不同类型的测试

我们可以用不同类型的问题来测试 AI 的边界:

1. 通用常识 (General Knowledge)

Q: "太阳系中最大的行星是哪一颗?"

预期 A: 木星。 (这是 AI 最擅长的,通常准确无误)

2. 实时信息 (Real-time Info) - 高风险

Q: "昨晚的超级碗决赛谁赢了?"

预期 A: "我不知道/无法回答。" (除非该模型联网,否则纯离线模型必须拒绝回答,如果它编造了一个队伍,那就是严重的幻觉)

3. 冷门/虚构知识 (Obscure/Fake Facts) - 幻觉陷阱

Q: "请介绍一下 18 世纪著名的'火星殖民计划'的领导人。"

预期 A: "历史上 18 世纪并没有火星殖民计划。" (如果 AI 开始编造领导人名字,说明它通过不了测试)


迭代建议 (How to Iterate)

  1. 增加置信度评分:要求 AI 在回答后附上 Confidence Score: (0-100%)。如果低于 80%,建议人工复核。
  2. 思维链 (CoT):对于复杂问题,让 AI 先打印 Thinking Process,再给出 Answer。这能显著减少逻辑错误。
  3. 联网插件:对于“实时信息”类问题,开放域问答通常无解。唯一的解法是接入 Search Tool (Google/Bing),将任务转化为 RAG。

代码示例 (Python / OpenAI)

from openai import OpenAI

client = OpenAI()

system_prompt = """
You are a helpful and honest AI assistant.
If you do not know the answer to a question, or if it requires real-time information you don't have, say "I don't know".
Do not make up facts.
"""

user_question = "Can I get McDonald's at the SeaTac airport?"

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_question}
    ],
    temperature=0.7, # 稍微保留一点创造力,但不要太高
    max_tokens=300
)

print(response.choices[0].message.content)