logo
P
Prompt Master

Prompt 大师

掌握和 AI 对话的艺术

Q&A prompts

question answering prompts(overview)

问答 (QA) 是 LLM 最基础也最核心的能力之一。从通用百科问答,到企业内部知识库助手,QA 系统贯穿了 AI 应用的主流程。

本章的核心目标:让 AI 在可控范围内回答,能引用证据,信息不足时知道拒答


学习路径(建议顺序)

  1. 入门:写出“问题 + 输出格式”的最小 QA Prompt
  2. 进阶:加入引用与“不知道”规则
  3. 实战:将问题限定在给定文档范围内(RAG/Closed QA)

两大核心场景

1. 开放域问答 (Open-Domain QA)

  • 定义:利用模型预训练知识回答问题
  • 场景:百科问答、通用助手、闲聊机器人
  • 挑战:知识时效性与幻觉

2. 封闭域问答 (Closed-Domain QA / RAG)

  • 定义仅基于提供的上下文回答问题
  • 场景:企业知识库、合同审查、客服
  • 挑战:让模型“只说文档里有的”

业务产出(PM 视角)

使用 QA Prompt 可以交付:

  • 可上线的最小问答功能(FAQ/知识库)
  • 结构化回答模板(可解析、可复核)
  • 可追溯答复(带引用与来源编号)

完成标准(建议):

  • 读完本页 + 完成 1 个练习 + 自检 1 次

核心 Prompt 结构

目标:回答问题
范围:是否限制在给定文档
格式:输出结构(结论/依据/引用)
输入:问题 + 文档(可选)

通用模板(开放域)

请回答以下问题,输出简洁结论。

问题:
{question}

输出格式:
- 答案:
- 关键点(1-3 条):

通用模板(封闭域)

你是企业知识库助手,仅能使用提供的文档回答。

文档:
{context}

问题:
{question}

要求:
1) 只能引用文档内容
2) 若文档无答案,输出“信息不足,无法回答”
3) 输出包含引用编号

输出格式:
- 答案:
- 引用:

Quick Start:开放域 QA

问题:为什么天空是蓝色?

输出格式:
- 答案:
- 关键点(1-3 条):

示例 1:开放域问答

问题:光合作用的核心反应是什么?

输出格式:
- 答案:
- 关键点(1-3 条):

示例 2:封闭域问答(带引用)

文档:
[Doc 1] 产品保修期为 24 个月,仅覆盖非人为损坏。
[Doc 2] 电池属于易耗品,保修期为 6 个月。

问题:电池用了一年坏了,能保修吗?

要求:只用文档回答,每句话带 [Doc] 引用。

示例 3:歧义问题澄清

问题:能不能退?

要求:如果问题不清晰,先提出澄清问题,再给出“默认假设版”答案。

迁移模板(替换变量即可复用)

问题:{question}
文档:{context}
输出:答案 + 引用编号 + 关键信息

自检清单(提交前自查)

  • 是否明确了回答范围(开放/封闭)?
  • 是否要求“信息不足就拒答”?
  • 引用是否可追溯?
  • 输出格式是否稳定?

技巧与最佳实践

  1. “I don't know” 规则
    明确写入:无答案 → “信息不足,无法回答”。

  2. 引用来源
    强制引用文档编号,便于复核。

  3. 处理歧义
    要求先反问澄清,再回答。

  4. 结构化输出
    用列表/表格组织答案,提升可读性。

  5. 参数设置
    QA 任务建议 temperature=0~0.3 提高一致性。


常见问题与解决方案

问题原因解决方案
回答过度发挥未限制范围明确“只用文档”
无法追溯没有引用强制引用编号
逻辑混乱输出无格式固定输出字段
不拒答规则缺失加“信息不足”兜底

API 调用示例

Python (OpenAI)

from openai import OpenAI

client = OpenAI()

def closed_qa(context: str, question: str) -> str:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": "你是知识库助手,只能使用提供的文档回答。"
            },
            {
                "role": "user",
                "content": f"""文档:\n{context}\n\n问题:{question}\n\n要求:\n- 仅使用文档\n- 无答案则返回“信息不足,无法回答”\n- 输出包含引用编号"""
            }
        ],
        temperature=0,
        max_tokens=300
    )
    return response.choices[0].message.content.strip()

Python (Claude)

import anthropic

client = anthropic.Anthropic()

def closed_qa(context: str, question: str) -> str:
    message = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=300,
        messages=[
            {
                "role": "user",
                "content": f"""你是知识库助手,只能使用文档回答。
文档:{context}
问题:{question}
要求:无答案则返回“信息不足,无法回答”,输出包含引用编号。"""
            }
        ]
    )
    return message.content[0].text.strip()

动手练习

练习 1:开放域

问题:为什么月球会有潮汐锁定?
输出格式:答案 + 关键点(1-3 条)

练习 2:封闭域

文档:
[Doc 1] 课程 A 时长为 12 周,包含 8 次直播课。
[Doc 2] 课程 A 提供 1 次免费补课机会。

问题:课程 A 有几次直播课?能补课吗?

练习评分标准(学生自评)

维度合格标准
范围明确清楚说明开放或封闭
引用正确引用编号一致
拒答规则信息不足时拒答
格式稳定输出字段一致

相关阅读


小结

  1. QA 需要明确“开放/封闭”范围。
  2. 引用与拒答机制是可信 QA 的基础。
  3. 固定输出格式便于工程落地。
  4. 低温度提升一致性。
  5. 用模板快速复用到不同业务场景。