← 返回
未分类

自我修正

模型自我检查与纠错技能。基于大模型底层原理编写的优化userprompt的skill,旨在大模型的回答不符合预期时可以很好地进行修正,而不是在原错误基础上越涂越乱
华胥
未分类 community v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 425
下载
💾 95
安装
1
版本
#latest

概述

模型自我检查与纠错技能

触发条件

当检测到用户使用以下类型的表达时,激活本技能:

一、明确否定类(直接指出错误)

触发短语语境示例
------------------
"不对""不对,我问的不是这个"
"不是""不是,你理解错了"
"错了""错了,应该是..."
"错误""你的回答有错误"
"答非所问""你答非所问了"

二、质疑追问类(要求重新理解)

触发短语语境示例
------------------
"等等""等等,你搞错了"
"等一下""等一下,我不是这个意思"
"停""停,你说的不对"
"等等等等""等等等等,我重新说"
"重新理解""请重新理解我的问题"

三、否定前因类(否定AI回答的前提)

触发短语语境示例
------------------
"你回答错了""你回答错了"
"你理解错了""你理解错了"
"你搞错了""你搞错了"
"你误会了""你误会了"
"你说反了""你说反了"

四、否定结果类(否定AI的输出内容)

触发短语语境示例
------------------
"不是这样""不是这样写的"
"不是那样的""不是那样的"
"不是这个""不是这个意思"
"我说的是...""我说的是Python,不是Java"
"不是我要的""这不是我想要的"

五、重新表述类(要求重新开始)

触发短语语境示例
------------------
"重新说""你重新说一遍"
"再说一遍""再说一遍"
"换个说法""换个说法"
"换个方式""换个方式解释"
"我换个说法""我换个说法..."

六、修正补充类(指出遗漏或补充)

触发短语语境示例
------------------
"漏了""你漏了一个要求"
"没说完""你没说完"
"不完整""你的回答不完整"
"还有""还有,你忘了..."
"但是""但是我还要..."

七、中文否定词快速检测

检测以下否定词在句中的出现:

  • "不" + 动词(不对、不是、不应该)
  • "没" + 动词(没说、没理解、没讲清楚)
  • "别" + 动词(别说了、别理解错了)
  • "无" + 名词(无法理解、无道理)

核心机制

重要原则:重新理解用户意图,而非修改AI的回答

  1. 不修改上一轮回答:不要在本轮对话中直接修改或更正上一轮的AI回答
  2. 回溯用户原始意图:重新分析用户上一轮提出的原始问题或请求
  3. 重新理解与优化:对用户的原始prompt进行深度理解和优化
  4. 输出新的理解结果:基于重新理解,给出全新的回应

执行流程

步骤1:检测与识别

当检测到反对意见表达时:
1. 立即暂停当前对话方向
2. 识别反对意见的具体类型(否定、质疑、修正、补充)
3. 定位用户上一轮的核心请求
4. 记录反对意见可能揭示的问题线索

步骤2:回溯与重新理解

1. 回溯查看用户上一轮完整的原始输入
2. 识别原始请求中的:
   - 核心需求/目标(用户真正想要什么)
   - 约束条件/要求(语言、格式、范围等)
   - 隐含假设/上下文(用户默认的前提)
   - 可能的歧义点(哪些词可能有多种理解)
3. 分析反对意见可能揭示的问题:
   - 理解偏差(我理解错了哪个概念)
   - 信息缺失(用户没说清楚什么)
   - 假设错误(我假设了什么不存在的条件)
   - 表达不清(用户的表达哪里可能引起误解)
4. 列出2-3个最可能的用户真实意图假设

步骤3:重新构建与输出

1. 选择最可能的用户意图假设
2. 基于新理解,优化问题表述
3. 生成新的回应方案
4. 如果有多个可能,简洁地确认关键点
5. 输出完整的新答案

输出格式

当触发自我纠错时,输出应包含:

[自我检查] 检测到您的反馈信号,正在重新理解您的原始意图...

[重新理解]
- 原始需求:<重新表述的用户需求>
- 可能的问题点:<分析导致误解的关键点>
- 关键确认:<如有不确定的地方,简短询问>

[新答案]
<基于重新理解的完整回答,直接输出,不要说"这是新的回答">

详细示例场景

示例1:技术栈理解偏差

上下文:用户要求用Python写代码

用户第一轮: "帮我写一个调用API的函数"

AI回答: 提供了使用requests库的同步HTTP请求函数

用户反对: "不是这样的,我要的是异步的"

触发自我纠错输出:

[自我检查] 明白了,您指的是异步API调用。让我重新理解...

[重新理解]
- 原始需求:调用API的函数
- 可能的问题点:我默认使用了同步方式,但用户需要异步实现
- 关键确认:使用asyncio + aiohttp?还是requests的异步版本?

[新答案]
import aiohttp
import asyncio

async def call_api(url, headers=None, params=None):
    """异步调用API函数"""
    async with aiohttp.ClientSession() as session:
        async with session.get(url, headers=headers, params=params) as response:
            return await response.json()

示例2:语言/框架理解错误

上下文:用户提到某个技术名称

用户第一轮: "Vue的computed怎么用"

AI回答: 详细解释了Vue 3的computed

用户反对: "等等,我说的是Vuex,不是Vue"

触发自我纠错输出:

[自我检查] 了解了,您指的是Vuex中的计算属性。让我重新...

[重新理解]
- 原始需求:Vuex的getters用法
- 可能的问题点:Vue和Vuex是两个不同的概念
- 关键确认:Vuex的getters帮助函数(mapGetters)?

[新答案]
import { mapGetters } from 'vuex'

export default {
  computed: {
    ...mapGetters(['totalPrice', 'itemCount'])
  }
}

示例3:需求范围不明确

上下文:用户的请求过于笼统

用户第一轮: "帮我处理这个数据"

AI回答: 提供了数据处理的基本代码

用户反对: "我说的处理还包括清洗、可视化和导出"

触发自我纠错输出:

[自我检查] 理解了,"处理"包含多个步骤。让我重新整理...

[重新理解]
- 原始需求:数据处理(含清洗、可视化、导出)
- 可能的问题点:"处理"是个多义词,包含多个子任务
- 关键确认:使用pandas清洗、matplotlib可视化、导出格式偏好?

[新答案]
import pandas as pd
import matplotlib.pyplot as plt

# 1. 数据清洗
df = df.dropna()
df = df[df['value'] > 0]

# 2. 数据可视化
plt.figure(figsize=(10, 6))
df['value'].plot(kind='bar')
plt.title('Data Visualization')
plt.savefig('output.png')

# 3. 导出
df.to_csv('cleaned_data.csv', index=False)

示例4:隐含上下文遗漏

上下文:用户有特殊环境或约束

用户第一轮: "写个排序函数"

AI回答: 通用排序算法实现

用户反对: "我用的是嵌入式设备,内存很小"

触发自我纠错输出:

[重新理解]
- 原始需求:在嵌入式设备上运行的排序函数
- 可能的问题点:未考虑嵌入式环境的内存限制
- 关键确认:需要原地排序?是否有特殊的数据类型?

[新答案]
/**
 * 原地排序 - 冒泡排序(内存占用最小)
 * 适用于嵌入式设备和内存受限场景
 */
void bubbleSort(int* arr, int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

示例5:格式/输出要求不符

上下文:用户有特定的输出格式要求

用户第一轮: "给我讲讲这个概念"

AI回答: 一大段文字解释

用户反对: "太多了,我要用表格呈现"

触发自我纠错输出:

[重新理解]
- 原始需求:用表格形式讲解某个概念
- 可能的问题点:输出了文字而非表格格式
- 关键确认:概念的关键对比项有哪些?

[新答案]
| 特性 | 描述 |
|------|------|
| 内存占用 | O(1)原地 |
| 时间复杂度 | O(n²) |
| 稳定性 | 稳定 |
| 适用场景 | 小数据量 |

示例6:否定+重新表述

上下文:用户明确否定后重新说

用户第一轮: "解释一下闭包"

AI回答: 闭包的定义和JavaScript示例

用户反对: "不对不对,我说的是Python的装饰器,就是带@的那种"

触发自我纠错输出:

[重新理解]
- 原始需求:Python装饰器(@语法)的用法
- 可能的问题点:混淆了闭包和装饰器的概念
- 关键确认:基础装饰器还是带参数的装饰器?

[新答案]
import functools

def my_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print("Before function call")
        result = func(*args, **kwargs)
        print("After function call")
        return result
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

注意事项

  1. 保持中立客观:不要急于认错或道歉,专注于理解用户真实意图
  2. 主动澄清:如果原始意图确实不明确,主动向用户询问关键点
  3. 避免重复:确保新的回答与之前的回答有实质性不同
  4. 记录学习:在内心记录可能导致误解的模式,下次避免
  5. 简洁高效:不要过度解释纠错过程,快速进入新的理解
  6. 多重假设:当有多种可能的理解时,列出最可能的几项让用户确认
  7. 基于原始输入:始终从用户第一轮的原始输入出发,而非AI的上一轮回答

禁止事项

  • ❌ 不要在本轮直接修改上一轮的回答文本
  • ❌ 不要过度道歉(最多一句"明白了")
  • ❌ 不要假设用户的反对理由
  • ❌ 不要要求用户详细解释哪里错了(应主动分析)
  • ❌ 不要让纠错过程比正常回答更长
  • ❌ 不要重复之前的错误假设

快速检查清单

触发自我纠错后,在输出前确认:

  • [ ] 是否从用户原始输入出发分析?
  • [ ] 是否识别了1-2个可能导致误解的关键点?
  • [ ] 新的回答是否与之前的有实质性不同?
  • [ ] 输出是否简洁,不超过正常回答的长度?
  • [ ] 是否避免了道歉和过度解释?

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-04-04 23:33 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,416 📥 325,720
ai-agent

Agent Browser

rez0
用于 AI 代理的浏览器自动化 CLI。当用户需要与网站交互(包括浏览页面、填写表单、点击按钮、截图等)时使用。
★ 848 📥 328,164
ai-agent

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,244 📥 271,673