2.AI大模型-链式思考TOC让AI实现思考-优秀提示词设计技巧

内容参考于:图灵AI大模型全栈

提示词:

提示词相当于编程语言,ai环境的编程语言,提示词学好了才可以把ai的能力榨干

比如:下方是一个学校管理的数据库,有老师、学生、学校等信息,学生有学科和分数和所属老师(班主任),老师有教学科目和工资和所属学校、学校有、学校名、学校排名,并添加一些数据等信息

mysql 复制代码
-- 1. 创建数据库(不存在则创建)
CREATE DATABASE IF NOT EXISTS school_management 
DEFAULT CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE school_management;

-- 2. 创建学校信息表
CREATE TABLE IF NOT EXISTS schools (
    school_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学校唯一ID',
    school_name VARCHAR(50) NOT NULL COMMENT '学校名称',
    school_ranking INT NOT NULL COMMENT '学校排名',
    school_address VARCHAR(100) COMMENT '学校地址(扩展字段)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校信息表';

-- 3. 创建教师信息表
CREATE TABLE IF NOT EXISTS teachers (
    teacher_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '教师唯一ID',
    teacher_name VARCHAR(20) NOT NULL COMMENT '教师姓名',
    teach_subject VARCHAR(20) NOT NULL COMMENT '教学科目',
    salary DECIMAL(10,2) NOT NULL COMMENT '工资',
    school_id INT NOT NULL COMMENT '所属学校ID',
    -- 外键关联学校表
    FOREIGN KEY (school_id) REFERENCES schools(school_id) 
    ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师信息表';

-- 4. 创建学生信息表
CREATE TABLE IF NOT EXISTS students (
    student_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学生唯一ID',
    student_name VARCHAR(20) NOT NULL COMMENT '学生姓名',
    grade VARCHAR(10) NOT NULL COMMENT '年级',
    class VARCHAR(10) NOT NULL COMMENT '班级',
    headteacher_id INT NOT NULL COMMENT '班主任ID',
    -- 外键关联教师表(班主任)
    FOREIGN KEY (headteacher_id) REFERENCES teachers(teacher_id) 
    ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';

-- 5. 创建学生成绩表(存储学科+分数)
CREATE TABLE IF NOT EXISTS scores (
    score_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '成绩记录ID',
    student_id INT NOT NULL COMMENT '学生ID',
    subject_name VARCHAR(20) NOT NULL COMMENT '学科名称',
    score INT NOT NULL COMMENT '考试分数',
    -- 外键关联学生表
    FOREIGN KEY (student_id) REFERENCES students(student_id) 
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生成绩表';

-- ==============================================
-- 6. 插入测试数据
-- ==============================================
-- 插入学校数据
INSERT INTO schools (school_name, school_ranking, school_address)
VALUES 
('市第一中学', 1, '市城区文化路1号'),
('市第二中学', 2, '市城区解放路58号'),
('实验中学', 3, '市城区学府路22号');

-- 插入教师数据(关联学校)
INSERT INTO teachers (teacher_name, teach_subject, salary, school_id)
VALUES 
('张敏', '语文', 8500.00, 1),
('李强', '数学', 9200.00, 1),
('王芳', '英语', 8800.00, 2),
('赵刚', '科学', 9000.00, 2),
('刘杰', '物理', 9500.00, 3);

-- 插入学生数据(关联班主任)
INSERT INTO students (student_name, grade, class, headteacher_id)
VALUES 
('陈小明', '高一', '1班', 1),
('李小红', '高一', '1班', 1),
('王浩宇', '高二', '2班', 2),
('张雨晴', '高二', '2班', 2),
('周子豪', '高一', '3班', 3),
('刘思雅', '高一', '3班', 3),
('吴俊凯', '高二', '4班', 4),
('郑欣怡', '高二', '4班', 4);

-- 插入学生成绩数据(学科+分数)
INSERT INTO scores (student_id, subject_name, score)
VALUES 
-- 陈小明
(1, '语文', 92), (1, '数学', 88), (1, '英语', 95),
-- 李小红
(2, '语文', 85), (2, '数学', 96), (2, '英语', 90),
-- 王浩宇
(3, '数学', 98), (3, '物理', 94), (3, '英语', 82),
-- 张雨晴
(4, '数学', 90), (4, '物理', 89), (4, '英语', 93),
-- 周子豪
(5, '语文', 87), (5, '英语', 91), (5, '科学', 84),
-- 刘思雅
(6, '语文', 94), (6, '英语', 86), (6, '科学', 97),
-- 吴俊凯
(7, '英语', 83), (7, '科学', 92), (7, '物理', 88),
-- 郑欣怡
(8, '英语', 96), (8, '科学', 85), (8, '物理', 91);

提示词的使用:

你是一位经验丰富的数据库管理员,擅长编写高效、准确的SQL语句。我的数据库中,建表语句如下:【

CREATE TABLE IF NOT EXISTS schools (

school_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学校唯一ID',

school_name VARCHAR(50) NOT NULL COMMENT '学校名称',

school_ranking INT NOT NULL COMMENT '学校排名',

school_address VARCHAR(100) COMMENT '学校地址(扩展字段)'

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校信息表';

-- 3. 创建教师信息表

CREATE TABLE IF NOT EXISTS teachers (

teacher_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '教师唯一ID',

teacher_name VARCHAR(20) NOT NULL COMMENT '教师姓名',

teach_subject VARCHAR(20) NOT NULL COMMENT '教学科目',

salary DECIMAL(10,2) NOT NULL COMMENT '工资',

school_id INT NOT NULL COMMENT '所属学校ID',

-- 外键关联学校表

FOREIGN KEY (school_id) REFERENCES schools(school_id)

ON DELETE RESTRICT ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师信息表';

-- 4. 创建学生信息表

CREATE TABLE IF NOT EXISTS students (

student_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学生唯一ID',

student_name VARCHAR(20) NOT NULL COMMENT '学生姓名',

grade VARCHAR(10) NOT NULL COMMENT '年级',

class VARCHAR(10) NOT NULL COMMENT '班级',

headteacher_id INT NOT NULL COMMENT '班主任ID',

-- 外键关联教师表(班主任)

FOREIGN KEY (headteacher_id) REFERENCES teachers(teacher_id)

ON DELETE RESTRICT ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';

-- 5. 创建学生成绩表(存储学科+分数)

CREATE TABLE IF NOT EXISTS scores (

score_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '成绩记录ID',

student_id INT NOT NULL COMMENT '学生ID',

subject_name VARCHAR(20) NOT NULL COMMENT '学科名称',

score INT NOT NULL COMMENT '考试分数',

-- 外键关联学生表

FOREIGN KEY (student_id) REFERENCES students(student_id)

ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生成绩表';

我的问题是:【统计每科目最高的学生】

你帮我写一个能够在MySQL8 .0版本中顺利执行的SQL语句。这个SQL语句只使用上述建表语句中的表和字段,并且只写出Select查询语句。如果这些表不足以解决当前的问题,直接告诉我信息不够,无法解决。如果根据用户的问题写出了update、 delete、insert这些语句,那么直接告诉我无法解决这样的问题。不要使用WITH窗口函数。

如下图使用上方的提示词,ai生成的内容

如下图,可以正常运行

通过上方的示例,我们就可以写一个sql查询代码的应用,让代码去调用大模型,然后获取大模型返回的内容(sql),然后执行sql,然后把查询到的数据进行返回

提示词的模版:我们只需要把{schema}替换成表结构,然后{question}替换成要查询什么东西,也就是业务,就可以通用了

你是一位经验丰富的数据库管理员,擅长编写高效、准确的SQL语句。我的数据库中,建表语句如下:【{schema}】

我的问题是:【{question}】

你帮我写一个能够在MySQL8 .0版本中顺利执行的SQL语句。这个SQL语句只使用上述建表语句中的表和字段,并且只写出Select查询语句。如果这些表不足以解决当前的问题,直接告诉我信息不够,无法解决。如果根据用户的问题写出了update、 delete、insert这些语句,那么直接告诉我无法解决这样的问题。不要使用WITH窗口函数。

通用提示词框架

一个好的提示词要包含 任务目标(Object)、上下文(Context)、角色(Role)、受众(Audience)、样例(Sample)、输出格式(Output Format)这6个标准,当然简单的业务可以包含其中的几个,但是复杂业务一定要包含这6个标准,这6个标准是底线并不是上线,根据业务复杂度可以继续添加标准

我们上方提示词的实例中待人通用提示词框架,我们的提示词模板没有用到样例、受众,因为是一个简单的业务就是生成select语句

1. 角色(Role)

你是一位经验丰富的数据库管理员,擅长编写高效、准确的 SQL 语句。

2. 上下文(Context)

  1. 我的数据库中,建表语句如下:【schools、teachers、students、scores 完整建表代码】
  2. 我的问题是:【统计每科目最高的学生】

3. 任务目标(Object)

帮我编写适配需求、可正常运行的 SQL 查询语句,实现统计每科目分数最高的学生

4. 样例(Sample)

无(本次对话没有提供任何参考示例、参照样例

5. 受众(Audience)

无(原文未指定特定受众人群)

6. 输出格式(Output Format)

  1. 能够在 MySQL8.0 版本中顺利执行;
  2. 只使用上述建表语句中的表和字段;
  3. 只写出 Select 查询语句;
  4. 不要使用 WITH 窗口函数;
  5. 表不足以解决问题时,直接回复:信息不够,无法解决;
  6. 不能写 update、delete、insert 语句,若涉及这类需求直接回复:无法解决这样的问题。

玩ai就是玩提示词,一些框架里面就是封装了好多提示词让我们使用,才变得简单

提示词中的分隔符,分隔符也很重要,常用分隔符有 三连反引号、三连短横线、三连井号、双大括号、左右尖括号、中文方括号

1、分隔符:``` 三连反引号

核心作用

隔离指令和正文,包裹纯文本、代码、陌生内容;防止原文被 AI 误当成新指令,防御提示词注入。

转义示例

帮我总结下面这段话,控制 30 字以内:

```

成年人最好的自律:克制情绪、管住嘴巴、沉淀自己、默默努力。

```

实例拆解

  • 任务要求:帮我总结下面这段话,控制 30 字以内
  • 待处理原文:成年人最好的自律:克制情绪、管住嘴巴、沉淀自己、默默努力。

2、分隔符:--- 三连短横线

核心作用

简单切割两大内容区块,区分「任务要求」和「待处理原文」,上下隔离、结构不混杂。

转义示例

帮我把下面文案改写成朋友圈温柔风格


每天忙忙碌碌,却也在平凡日子里慢慢治愈自己。


实例拆解

  • 任务要求:帮我把下面文案改写成朋友圈温柔风格
  • 待处理原文:每天忙忙碌碌,却也在平凡日子里慢慢治愈自己。

3、分隔符:### 三连井号

核心作用

多模块层级分区,拆分角色设定、任务规则、待处理内容、输出格式,适合复杂长提示词。

转义示例

角色设定

你是专业小学语文老师

任务要求

把下面句子缩句,保留主干

待处理句子

金黄的落叶缓缓飘落在宽阔的马路边上。

实例拆解

  • 任务要求模块:角色设定 + 把下面句子缩句,保留主干
  • 待处理原文模块:金黄的落叶缓缓飘落在宽阔的马路边上。

4、分隔符:{{}} 双大括号

核心作用

模板占位分隔,固定提示词句式,用括号框住可替换变量,快速套用模板改参数即可。

转义示例

请用 {{幽默风格}},帮我写一条 {{早安朋友圈文案}},字数控制 {{20 字}} 左右。

实例拆解

  • 固定任务要求:请用、帮我写一条、字数控制 左右
  • 占位待替换内容:{{幽默风格}}、{{早安朋友圈文案}}、{{20 字}}

5、分隔符:>>> <<< 左右尖括号

核心作用

强物理边界分隔,强制锁定中间内容为唯一处理对象,彻底隔绝前后文字干扰,识别精度极高。

转义示例

分析下面这段文字的核心观点,一句话概括:

>>>

现在年轻人更看重工作氛围和情绪价值,不再只追求高薪稳定。

<<<

实例拆解

  • 任务要求:分析下面这段文字的核心观点,一句话概括
  • 待处理原文:现在年轻人更看重工作氛围和情绪价值,不再只追求高薪稳定。

6、分隔符:【 】中文方括号

核心作用

标签式分隔,单独分隔风格、用途、字数、限制条件等约束要求,让 AI 快速抓取规则。

转义示例

帮我写 3 句短句文案

【风格】治愈文艺

【用途】小红书配文

【字数】每句 15 字以内

实例拆解

  • 基础任务要求:帮我写 3 句短句文案
  • 分隔约束条件:【风格】治愈文艺、【用途】小红书配文、【字数】每句 15 字以内

提示词工程基础

https://www.promptingguide.ai/zh

什么是提示词工程呢?ai是没有思考的,但是我们的现在接触到的ai都有思考模式,这个模式是基于链式思考(CoT)来实现的,就是再程序中写好隐藏提示词,把我们问的问题搞成多个步骤,比如上方学校管理的数据库,步骤一让ai检查有没有给表结构,给的表结构够不够用,步骤二让ai生成sql语句,步骤三检查sql语句是否正常,这样就是一个思考的过程,实际上ai的思考就是通过我们实现准备好的提示词来实现的

ReAct框架(推理+行动框架),它是基于链式思考实现的,链式思考让ai有了思考,但是有些数据它是得不到的,比如说今天天气怎么样,这个需要去调用我们国家的天气接口来获取,就要在程序中的提示词(这个提示词对我们来说是隐藏的)中写好让ai去调用天气接口,然后给我们结果,这个调用接口的操作就可以看成行动,然后里面用到的链式思考就是思考

检索增强生成RAG模型,它在输入的时候会先调用我们实现准备的数据,比如我们数据库中今天天气是晴天,我们问ai程序,今天天气怎么样,这时ai它会先去访问我们设定好的专用数据库得到晴天这个数据,然后返回,但是在高级智能体(高级AI)中通过数据库得到晴天后会再次调用ReAct

到这应该很清晰的认知到玩ai就是玩提示词,我们现在接触到的ai都通过提示词来实现各种功能的,比如DeepSeek 它的思考就是通过COT链式思考来实现的


相关推荐
Daydream.V1 小时前
从零搭建 AI Agent:LLM Agent+Function Calling+Dify 本地部署 + Coze 实战全攻略
人工智能·langchain·ollama·functioncalling·大模型部署
数据智研1 小时前
【数据分享】中国第三产业统计年鉴(1991-2025)(1993-1994、2001-2005末出版)
大数据·人工智能·信息可视化·数据分析
HyperAI超神经1 小时前
在线教程丨单卡即可爆改,面壁智能等开源MiniCPM-V-4.6,1.3B端侧模型支持图像理解/视频理解/OCR/多轮多模态对话
人工智能·ai·ocr
m0_624578591 小时前
SQL数据更新时如何减少锁表时间_合理控制事务边界与并发
jvm·数据库·python
黄金矿工Kingliu1 小时前
基于大数据平台技术实现计算任务应用案例(思考版)
大数据
科技测评-阿博2 小时前
律师案源开发指南:精准获客方法,附实操模板
大数据·人工智能
Wanderer X2 小时前
【入门】搜索
人工智能
2401_867623982 小时前
如何提取SQL日期中的月份_使用MONTH函数快速过滤
jvm·数据库·python
TG_yunshuguoji2 小时前
云代理商:Hermes Agent如何通过技能沉淀降低长期算力消耗
人工智能·云计算·ai 智能体·hermes agent