最小可行性提问原则

  1. 明确核心需求
    提问需聚焦单一功能或问题,避免多目标混杂。例如直接说明“如何用Python实现JSON数据解析”而非笼统提问“如何处理数据”。

  2. 精简输入输出
    提供简洁的输入示例和期望输出格式。例如:

    # 输入  
    data = '{"name": "Alice", "age": 30}'  
    # 期望输出  
    {'name': 'Alice', 'age': 30}  
    

  3. 约束条件前置
    限定技术栈或特殊要求。例如:“需使用标准库json,禁止第三方依赖”。

  4. 避免冗余描述
    删除背景故事或非技术细节,保留关键信息。错误示例:“我在做一个项目,需要解析用户数据…”,正确示例:“如何将JSON字符串转为Python字典?”

代码实现示例

以下为根据上述原则生成的代码模板,满足“先求对再求优”:

import json  

def parse_json(input_str):  
    """最小可行性实现:JSON字符串转字典"""  
    try:  
        return json.loads(input_str)  
    except json.JSONDecodeError as e:  
        raise ValueError(f"Invalid JSON: {e}")  

# 测试用例  
input_data = '{"name": "Alice", "age": 30}'  
output = parse_json(input_data)  
assert output == {'name': 'Alice', 'age': 30}  

关键点

  • 函数仅完成核心功能(解析),异常处理覆盖基础错误场景。
  • 测试用例直接验证输入输出是否符合预期。
  • 后续优化可扩展为类或增加缓存机制,但初始版本保持极简。

最小可行性提问原则

  1. 明确核心需求
    提问需聚焦单一功能或问题,避免多任务混杂。例如:

    # 错误示例:同时请求优化代码性能和可读性  
    # 正确示例:仅请求优化循环结构以提升性能  
    

  2. 提供必要上下文
    包含输入/输出示例、关键约束条件或异常场景。例如:

    # 输入要求  
    def sum_even_numbers(lst: list[int]) -> int:  
        """仅对偶数求和,忽略奇数与非整数输入"""  
        pass  
    

  3. 分阶段验证
    首轮验证基础逻辑正确性,次轮优化扩展性。例如:

    # 阶段1:基础功能实现  
    def sum_even_numbers_v1(lst):  
        return sum(x for x in lst if isinstance(x, int) and x % 2 == 0)  
    
    # 阶段2:添加异常处理  
    def sum_even_numbers_v2(lst):  
        try:  
            return sum(x for x in lst if isinstance(x, int) and x % 2 == 0)  
        except TypeError:  
            return 0  
    

代码实现模板

def minimal_viable_ask(code_requirements: str) -> str:  
    """  
    根据最小可行性原则生成提示词  
    Args:  
        code_requirements: 用户输入的原始需求描述  
    Returns:  
        结构化提问模板  
    """  
    # 提取核心需求(示例:正则匹配关键动词)  
    import re  
    core_action = re.search(r"实现|编写|优化|修复", code_requirements).group()  

    # 构建最小化提问  
    prompt = f"""  
    请{core_action}一个Python函数,要求:  
    1. 输入:{code_requirements.split('输入')[1].split('输出')[0]}  
    2. 输出:{code_requirements.split('输出')[1]}  
    3. 首要目标:确保基础逻辑正确性  
    """  
    return prompt.strip()  

# 示例调用  
requirements = "输入代码要求:列表包含数字与字符串,输出所有整数的平方和"  
print(minimal_viable_ask(requirements))  

优化方向

  • 增量式改进:在基础版本通过测试后,追加边界条件处理需求
  • 反馈闭环:根据执行结果动态调整提问粒度,如补充异常类型说明
  • 正交分解:将复杂需求拆分为独立子问题(如先处理类型过滤,再处理计算逻辑)

要点:通过原子化提问降低调试成本,优先验证核心路径再逐步扩展。

大模型提示词的“最小可行性提问”原则

核心思想:在向大模型提问时,优先确保问题清晰、简洁且可执行(“对”),再逐步优化细节或扩展复杂性(“优”)。该原则能有效减少无效交互,提升回答质量。

实现方法

1. 明确核心需求

  • 删除冗余信息,聚焦关键问题。例如,避免“我想写一篇关于气候变化的文章,但不确定结构,你能帮我规划吗?”改为“请列出气候变化文章的3种常见结构”。
  • 使用动词开头直接表达意图,如“总结”“对比”“生成”等。

2. 限制问题范围

  • 单次提问仅覆盖一个子任务。例如拆分“解释量子计算并给出代码示例”为两个独立问题。
  • 添加约束条件(如字数、格式)。例:“用50字概括深度学习的特点”。

3. 逐步迭代优化

  • 基于初始回答补充细节。首轮提问“写一首七言诗”,后续追加“每句包含‘春’字”。
  • 通过反馈修正结果。例:“调整第三句的韵脚为‘ang’”。
优化技巧

结构化模板

任务类型:[摘要/生成/推理等]  
主题:[明确对象]  
要求:[格式/长度/风格等]  
示例:  
- 任务类型:生成  
- 主题:碳中和  
- 要求:列出5条企业可采取的措施,每条不超过10字  

避免模糊表述

  • 错误示例:“告诉我一些科技新闻”(范围过广)。
  • 正确示例:“提供2024年Q1人工智能领域的三项突破性进展,每项用一句话描述”。

实验与验证

  • 对同一问题尝试不同表述,对比模型输出的差异。
  • 记录高回复率提问模式,建立个人提示词库。
典型应用场景
  • 信息检索:先问“ChatGPT是什么?”,再追问“它与GPT-4有何区别?”。
  • 内容创作:首轮生成大纲,次轮填充章节内容。
  • 代码编写:先描述功能需求,再逐步添加异常处理或性能优化条件。

该原则通过降低初期复杂度,减少因表述不清导致的重复沟通,尤其适合非技术用户快速上手大模型交互。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐