AI Interaction Pattern
AI 不确定时反问用户,不瞎猜,减少幻觉
解决的问题:AI 面对模糊输入时会"填补空白"——猜测用户意图并给出看似合理但实际错误的回答。这是幻觉(Hallucination)的主要来源。引用预防错误(尼尔森第五原则)——好的错误提示不如一开始就不让错误发生。在 AI 交互中,"不让错误发生"就是"不确定时先问清楚"。
设计决策:两阶段 Prompt 设计——第一阶段识别模糊点并提出 3-5 个反问,第二阶段基于回答给出精准分析。同时输出「如果不澄清会怎样」做对比,让用户直观感受到澄清的价值。
生活类比:好医生不会你一说"头疼"就开药——先问"哪里疼?疼了多久?什么感觉?"问清楚了才诊断。AI 也一样——说"帮我做个页面"就动手的 AI 是庸医,先问清"什么类型?给谁用?什么风格?"的 AI 才是好医生。
用户提供一段可能模糊、不完整的设计描述或修改请求。System Prompt 指示 AI"你现在的任务不是回答问题,而是找出模糊点"。
/api/clarify 端点接收模糊描述,AI 生成 2-3 个澄清问题,每题附选项。同时生成一段 summary 说明 AI 目前理解了什么。
/api/clarify/refine 端点接收 Q&A 对,输出 refined_analysis(精准回答)和 without_clarify(不澄清 AI 会误解成什么),形成鲜明对比。
# prompts.py - Two-stage clarify prompts
CLARIFY_PROMPT = """你是一个设计顾问。用户的描述可能模糊。
你的任务不是回答问题,而是找出模糊点,生成 2-3 个澄清问题。
每个问题提供几个选项。不要假设用户的意思。"""
CLARIFY_REFINE_PROMPT = """基于原始描述和澄清问答,给出精准分析。
同时输出"如果不澄清,AI 可能会误解成什么"作为对比。"""
# patterns.py
@router.post("/api/clarify")
async def clarify_request(req: ClarifyRequest):
"""Stage 1: generate clarifying questions."""
response = await deepseek_chat(CLARIFY_PROMPT, req.description)
return parse_json_response(response)
@router.post("/api/clarify/refine")
async def clarify_refine(req: ClarifyRefineRequest):
"""Stage 2: refined analysis with Q&A context."""
context = f"原始需求: {req.original_description}\n澄清: {req.qa_pairs}"
response = await deepseek_chat(CLARIFY_REFINE_PROMPT, context)
return parse_json_response(response)