思维链实践应用 #

实践概览 #

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
数学推理:
├── 先列出已知条件
├── 明确求解目标
├── 选择合适的公式
├── 逐步计算验证
└── 检查答案合理性

代码生成:
├── 分析需求细节
├── 设计算法流程
├── 实现代码
├── 编写测试用例
└── 优化和重构

决策分析:
├── 确定决策因素
├── 设定权重
├── 评估各选项
├── 比较分析
└── 给出建议

逻辑推理:
├── 建立推理框架
├── 应用已知条件
├── 逐步推导
├── 验证结论
└── 排除矛盾

数据分析:
├── 数据概览
├── 趋势分析
├── 发现规律
├── 问题诊断
└── 提出建议

总结 #

通过这些实战案例,我们可以看到思维链在各种复杂任务中的强大能力。关键在于:

  1. 理解问题:准确把握问题的本质
  2. 分解步骤:将复杂问题分解为简单步骤
  3. 逐步推理:每一步都要有明确的逻辑
  4. 验证结果:确保推理过程的正确性

继续探索和实践,你会发现思维链在更多场景中的价值!

最后更新:2026-04-05