思维链实践应用 #
实践概览 #
text
┌─────────────────────────────────────────────────────────────┐
│ 思维链实践应用 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 应用领域: │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 数学推理 │ │ 代码生成 │ │ 复杂决策 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 逻辑推理 │ │ 数据分析 │ │ 知识问答 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
案例一:数学推理 #
场景描述 #
解决复杂的数学应用题,需要多步骤推理和计算。
问题示例 #
text
问题:某工厂计划生产一批零件,原计划每天生产 120 个,
20 天完成。实际生产时,前 5 天每天生产 100 个,
后来改进工艺,每天生产 150 个。问:
(1) 实际用了多少天完成?
(2) 比原计划提前了多少天?
思维链解决方案 #
python
def math_reasoning_cot(problem):
"""
数学推理思维链
"""
prompt = f"""
问题:{problem}
让我们一步步思考:
步骤1:理解问题,提取关键信息
- 原计划:每天 120 个,20 天完成
- 实际前 5 天:每天 100 个
- 实际之后:每天 150 个
步骤2:计算总任务量
总任务量 = 120 × 20 = 2400 个
步骤3:计算前 5 天的产量
前 5 天产量 = 100 × 5 = 500 个
步骤4:计算剩余任务量
剩余任务量 = 2400 - 500 = 1900 个
步骤5:计算完成剩余任务需要的天数
需要天数 = 1900 ÷ 150 = 12.67 天
因为不能有部分天,所以需要 13 天
步骤6:计算实际总天数
实际总天数 = 5 + 13 = 18 天
步骤7:计算提前天数
提前天数 = 20 - 18 = 2 天
答案:
(1) 实际用了 18 天完成
(2) 比原计划提前了 2 天
"""
return llm.generate(prompt)
# 执行
result = math_reasoning_cot(problem)
print(result)
输出结果 #
text
让我们一步步思考:
步骤1:理解问题,提取关键信息
- 原计划:每天 120 个,20 天完成
- 实际前 5 天:每天 100 个
- 实际之后:每天 150 个
步骤2:计算总任务量
总任务量 = 120 × 20 = 2400 个
步骤3:计算前 5 天的产量
前 5 天产量 = 100 × 5 = 500 个
步骤4:计算剩余任务量
剩余任务量 = 2400 - 500 = 1900 个
步骤5:计算完成剩余任务需要的天数
需要天数 = 1900 ÷ 150 = 12.67 天
因为不能有部分天,所以需要 13 天
(注:第 13 天只需要生产 1900 - 12×150 = 100 个)
步骤6:计算实际总天数
实际总天数 = 5 + 13 = 18 天
步骤7:计算提前天数
提前天数 = 20 - 18 = 2 天
答案:
(1) 实际用了 18 天完成
(2) 比原计划提前了 2 天
数学推理模板 #
python
MATH_COT_TEMPLATE = """
问题:{problem}
让我们一步步思考:
步骤1:理解问题
- 识别已知条件
- 明确求解目标
步骤2:分析关系
- 找出数量关系
- 确定计算公式
步骤3:逐步计算
- 按逻辑顺序计算
- 记录中间结果
步骤4:验证结果
- 检查计算是否正确
- 验证答案是否合理
答案:{answer}
"""
案例二:代码生成 #
场景描述 #
根据需求描述生成代码,需要分析需求、设计算法、实现代码。
问题示例 #
text
需求:实现一个函数,判断一个字符串是否是回文。
要求忽略大小写和非字母字符。
思维链解决方案 #
python
def code_generation_cot(requirement):
"""
代码生成思维链
"""
prompt = f"""
需求:{requirement}
让我们一步步分析和实现:
步骤1:理解需求
- 输入:一个字符串
- 输出:布尔值(是否是回文)
- 要求:忽略大小写、忽略非字母字符
步骤2:设计算法
1. 预处理字符串:转小写、过滤非字母
2. 使用双指针法判断回文
- 左指针从头开始
- 右指针从尾开始
- 比较对应位置的字符
步骤3:实现代码
```python
def is_palindrome(s: str) -> bool:
# 步骤3.1:预处理字符串
cleaned = ''.join(c.lower() for c in s if c.isalpha())
# 步骤3.2:双指针判断
left, right = 0, len(cleaned) - 1
while left < right:
if cleaned[left] != cleaned[right]:
return False
left += 1
right -= 1
return True
```
步骤4:测试用例
```python
# 测试
assert is_palindrome("A man, a plan, a canal: Panama") == True
assert is_palindrome("race a car") == False
assert is_palindrome(" ") == True
assert is_palindrome("No 'x' in Nixon") == True
```
步骤5:复杂度分析
- 时间复杂度:O(n),其中 n 是字符串长度
- 空间复杂度:O(n),存储预处理后的字符串
完成!
"""
return llm.generate(prompt)
# 执行
result = code_generation_cot(requirement)
print(result)
输出结果 #
text
让我们一步步分析和实现:
步骤1:理解需求
- 输入:一个字符串
- 输出:布尔值(是否是回文)
- 要求:忽略大小写、忽略非字母字符
步骤2:设计算法
1. 预处理字符串:转小写、过滤非字母
2. 使用双指针法判断回文
- 左指针从头开始
- 右指针从尾开始
- 比较对应位置的字符
步骤3:实现代码
```python
def is_palindrome(s: str) -> bool:
cleaned = ''.join(c.lower() for c in s if c.isalpha())
left, right = 0, len(cleaned) - 1
while left < right:
if cleaned[left] != cleaned[right]:
return False
left += 1
right -= 1
return True
步骤4:测试用例
python
assert is_palindrome("A man, a plan, a canal: Panama") == True
assert is_palindrome("race a car") == False
assert is_palindrome(" ") == True
assert is_palindrome("No 'x' in Nixon") == True
步骤5:复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(n)
完成!
text
### 代码生成模板
```python
CODE_COT_TEMPLATE = """
需求:{requirement}
让我们一步步分析和实现:
步骤1:理解需求
- 输入输出分析
- 边界条件识别
- 特殊情况处理
步骤2:设计算法
- 选择合适的数据结构
- 设计算法流程
- 考虑时间和空间复杂度
步骤3:实现代码
```{language}
{code}
步骤4:测试验证
- 设计测试用例
- 验证边界条件
- 确认功能正确
步骤5:优化改进
- 代码优化
- 性能优化
- 可读性优化 “”"
text
## 案例三:复杂决策
### 场景描述
在多个选项中做出最优决策,需要分析各因素的权重和影响。
### 问题示例
问题:小王正在考虑换工作,收到了三个 offer:
A 公司:
- 薪资:月薪 25K
- 通勤:单程 1.5 小时
- 发展:大公司,晋升空间大
- 技术栈:新技术,学习机会多
B 公司:
- 薪资:月薪 22K
- 通勤:单程 30 分钟
- 发展:创业公司,有期权
- 技术栈:成熟技术,稳定
C 公司:
- 薪资:月薪 28K
- 通勤:单程 1 小时
- 发展:中型公司,稳定发展
- 技术栈:主流技术,平衡
请分析并给出建议。
text
### 思维链解决方案
```python
def decision_making_cot(problem):
"""
复杂决策思维链
"""
prompt = f"""
问题:{problem}
让我们一步步分析:
步骤1:确定决策因素
- 薪资待遇
- 通勤时间
- 职业发展
- 技术成长
- 工作生活平衡
步骤2:设定权重(满分 10 分)
- 薪资待遇:权重 8(经济基础)
- 通勤时间:权重 6(生活质量)
- 职业发展:权重 9(长期规划)
- 技术成长:权重 7(能力提升)
- 工作生活平衡:权重 5(个人偏好)
步骤3:对各选项评分
A 公司评分:
- 薪资:7/10(中等偏上)
- 通勤:3/10(较差)
- 发展:9/10(优秀)
- 技术:9/10(优秀)
- 平衡:4/10(较差)
加权总分:7×8 + 3×6 + 9×9 + 9×7 + 4×5 = 56 + 18 + 81 + 63 + 20 = 238
B 公司评分:
- 薪资:6/10(中等)
- 通勤:9/10(优秀)
- 发展:7/10(有潜力)
- 技术:6/10(稳定)
- 平衡:8/10(良好)
加权总分:6×8 + 9×6 + 7×9 + 6×7 + 8×5 = 48 + 54 + 63 + 42 + 40 = 247
C 公司评分:
- 薪资:8/10(较高)
- 通勤:6/10(一般)
- 发展:7/10(稳定)
- 技术:7/10(平衡)
- 平衡:6/10(一般)
加权总分:8×8 + 6×6 + 7×9 + 7×7 + 6×5 = 64 + 36 + 63 + 49 + 30 = 242
步骤4:综合分析
排名:
1. B 公司:247 分
2. C 公司:242 分
3. A 公司:238 分
步骤5:给出建议
推荐选择 B 公司,理由如下:
1. 综合得分最高(247 分)
2. 通勤时间短,生活质量高
3. 创业公司有期权,潜在收益大
4. 工作生活平衡好
但需要考虑:
- 如果更看重短期薪资,选 C 公司
- 如果更看重长期发展,选 A 公司
- 创业公司有风险,需评估公司前景
最终建议:选择 B 公司,同时保持学习新技术。
"""
return llm.generate(prompt)
# 执行
result = decision_making_cot(problem)
print(result)
决策分析模板 #
python
DECISION_COT_TEMPLATE = """
问题:{problem}
让我们一步步分析:
步骤1:确定决策因素
- 列出所有相关因素
- 识别关键因素
步骤2:设定权重
- 根据重要性分配权重
- 确保权重总和合理
步骤3:评估各选项
- 对每个选项评分
- 计算加权得分
步骤4:比较分析
- 比较各选项得分
- 分析优劣势
步骤5:给出建议
- 综合考虑给出建议
- 说明理由和注意事项
"""
案例四:逻辑推理 #
场景描述 #
解决逻辑推理问题,需要分析条件、推导结论。
问题示例 #
text
问题:有五栋不同颜色的房子,每栋房子住着不同国籍的人,
每个人喝不同的饮料,抽不同的烟,养不同的宠物。
已知条件:
1. 英国人住在红房子里
2. 瑞典人养狗
3. 丹麦人喝茶
4. 绿房子在白房子的左边
5. 绿房子的主人喝咖啡
6. 抽 Pall Mall 的人养鸟
7. 黄房子的主人抽 Dunhill
8. 住在中间房子的人喝牛奶
9. 挪威人住在第一栋房子
10. 抽 Blends 的人住在养猫人的隔壁
11. 养马的人住在抽 Dunhill 的人隔壁
12. 抽 Blue Master 的人喝啤酒
13. 德国人抽 Prince
14. 挪威人住在蓝房子隔壁
15. 抽 Blends 的人有个喝水的邻居
问:谁养鱼?
思维链解决方案 #
python
def logic_reasoning_cot(problem):
"""
逻辑推理思维链
"""
prompt = f"""
问题:{problem}
让我们一步步推理:
步骤1:建立表格框架
位置:1, 2, 3, 4, 5
属性:颜色、国籍、饮料、香烟、宠物
步骤2:应用直接条件
由条件9:挪威人住在第1栋
| 位置 | 国籍 |
| 1 | 挪威 |
由条件14:挪威人住在蓝房子隔壁
所以第2栋是蓝房子
| 位置 | 颜色 |
| 2 | 蓝色 |
由条件8:中间房子喝牛奶
| 位置 | 饮料 |
| 3 | 牛奶 |
步骤3:推导颜色
由条件4和5:绿房子在白房子左边,绿房子主人喝咖啡
绿房子和白房子必须相邻,且绿房子在左
可能位置:(3,4) 或 (4,5)
但第3栋喝牛奶,所以绿房子不能是第3栋
所以:第4栋是绿色,第5栋是白色
| 位置 | 颜色 |
| 4 | 绿色 |
| 5 | 白色 |
由条件1:英国人住红房子
挪威人住第1栋,不是英国人
第2栋蓝色,第4栋绿色,第5栋白色
所以:第1栋或第3栋是红色
但英国人住红房子,挪威人住第1栋
所以:第3栋是红色,住英国人
| 位置 | 颜色 | 国籍 |
| 1 | 黄色 | 挪威 |
| 3 | 红色 | 英国 |
步骤4:继续推导...
(详细推导过程省略)
最终结果:
| 位置 | 颜色 | 国籍 | 饮料 | 香烟 | 宠物 |
| 1 | 黄色 | 挪威 | 水 | Dunhill | 猫 |
| 2 | 蓝色 | 丹麦 | 茶 | Blends | 马 |
| 3 | 红色 | 英国 | 牛奶 | Pall Mall | 鸟 |
| 4 | 绿色 | 德国 | 咖啡 | Prince | 鱼 |
| 5 | 白色 | 瑞典 | 啤酒 | Blue Master | 狗 |
答案:德国人养鱼。
"""
return llm.generate(prompt)
案例五:数据分析 #
场景描述 #
分析数据并得出结论,需要理解数据、发现规律、给出建议。
问题示例 #
text
问题:以下是某电商平台过去 6 个月的销售数据(单位:万元):
月份 销售额 订单数 客单价
1月 120 2400 500
2月 98 1960 500
3月 150 3000 500
4月 180 3600 500
5月 210 4200 500
6月 195 3900 500
请分析销售趋势并给出建议。
思维链解决方案 #
python
def data_analysis_cot(problem):
"""
数据分析思维链
"""
prompt = f"""
问题:{problem}
让我们一步步分析:
步骤1:数据概览
- 销售额范围:98-210 万元
- 订单数范围:1960-4200 单
- 客单价:稳定在 500 元
步骤2:趋势分析
销售额变化:
- 1月→2月:下降 18.3%(春节影响)
- 2月→3月:增长 53.1%(节后恢复)
- 3月→4月:增长 20.0%
- 4月→5月:增长 16.7%
- 5月→6月:下降 7.1%
整体趋势:
- 2月低谷(春节)
- 3-5月持续增长
- 6月略有回落
步骤3:关键发现
发现1:客单价稳定
说明产品定位清晰,客户群体稳定
发现2:订单数与销售额完全正相关
增长主要来自订单量增加
发现3:增长趋势放缓
3月增长53% → 5月增长17%
步骤4:问题诊断
问题1:2月销售低谷
原因:春节假期影响
建议:提前备货、节日促销
问题2:6月销售回落
原因:可能是季节性因素或竞争加剧
建议:分析具体原因、针对性优化
问题3:增长放缓
原因:市场趋于饱和
建议:开拓新渠道、增加产品线
步骤5:建议总结
短期建议:
1. 分析6月回落原因
2. 优化夏季营销策略
3. 提升客户复购率
长期建议:
1. 拓展产品品类
2. 开拓新市场渠道
3. 建立会员体系
4. 优化供应链降低成本
"""
return llm.generate(prompt)
最佳实践总结 #
通用原则 #
text
┌─────────────────────────────────────────────────────────────┐
│ 思维链最佳实践 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 清晰的问题陈述 │
│ ├── 明确输入和期望输出 │
│ ├── 列出所有已知条件 │
│ └── 说明约束和限制 │
│ │
│ 2. 合理的步骤划分 │
│ ├── 每步一个明确的操作 │
│ ├── 步骤间有逻辑连接 │
│ └── 避免过度细分或过度概括 │
│ │
│ 3. 完整的推理过程 │
│ ├── 展示所有中间步骤 │
│ ├── 说明每步的理由 │
│ └── 包含必要的验证 │
│ │
│ 4. 清晰的结论呈现 │
│ ├── 明确标注最终答案 │
│ ├── 提供必要的解释 │
│ └── 给出后续建议 │
│ │
└─────────────────────────────────────────────────────────────┘
领域特定建议 #
text
数学推理:
├── 先列出已知条件
├── 明确求解目标
├── 选择合适的公式
├── 逐步计算验证
└── 检查答案合理性
代码生成:
├── 分析需求细节
├── 设计算法流程
├── 实现代码
├── 编写测试用例
└── 优化和重构
决策分析:
├── 确定决策因素
├── 设定权重
├── 评估各选项
├── 比较分析
└── 给出建议
逻辑推理:
├── 建立推理框架
├── 应用已知条件
├── 逐步推导
├── 验证结论
└── 排除矛盾
数据分析:
├── 数据概览
├── 趋势分析
├── 发现规律
├── 问题诊断
└── 提出建议
总结 #
通过这些实战案例,我们可以看到思维链在各种复杂任务中的强大能力。关键在于:
- 理解问题:准确把握问题的本质
- 分解步骤:将复杂问题分解为简单步骤
- 逐步推理:每一步都要有明确的逻辑
- 验证结果:确保推理过程的正确性
继续探索和实践,你会发现思维链在更多场景中的价值!
最后更新:2026-04-05