配套案例

案例 4A:财报摘要三步生成

要素 说明
演示模式 提示链(Prompt Chaining)+ 思维链推理(CoT)
案例简述 将财报分析分解为数据提取 → 关键指标计算 → 摘要生成三步
经济学映射 生产流程分工——每个环节专注单一任务
应用衔接 第 13 章研报生成系统的分层设计采用类似思路
预计耗时 20-30 分钟

为什么使用提示链?

财报分析涉及数据提取、数学计算、语言生成三种不同能力。将其拆分为三个独立步骤有以下优势:

  1. 降低单次推理复杂度:每个步骤专注于单一任务
  2. 提高可调试性:每步输出可独立验证
  3. 增强可控性:可以针对每步精确约束输出格式

三步处理流程

财报摘要三步生成流程

第一步:数据提取

你是一位专业的财务数据分析师,擅长从财务报告中提取关键数据。

## 任务

从以下财报文本中提取关键财务数据,输出结构化 JSON 格式。

## 财报文本

<financial_report>
贵州茅台 2024 年第三季度财务报告

报告期内,公司实现营业收入 1231.23 亿元,同比增长 16.02%;
归属于上市公司股东的净利润 606.80 亿元,同比增长 15.04%。

主要财务指标:
- 毛利率:92.71%
- 净利率:49.29%

截至报告期末:
- 总资产:2847.56 亿元
- 总负债:851.23 亿元
- 股东权益:1996.33 亿元
</financial_report>

## 输出格式

直接输出 JSON,不要使用代码块。

{
  "company_info": {
    "name": "公司名称",
    "report_period": "报告期"
  },
  "income_statement": {
    "revenue": {"value": 数值, "unit": "亿元"},
    "revenue_yoy_growth": 百分比数值,
    "net_profit": {"value": 数值, "unit": "亿元"},
    "net_profit_yoy_growth": 百分比数值,
    "gross_margin": 百分比数值,
    "net_margin": 百分比数值
  },
  "balance_sheet": {
    "total_assets": {"value": 数值, "unit": "亿元"},
    "total_liabilities": {"value": 数值, "unit": "亿元"},
    "shareholders_equity": {"value": 数值, "unit": "亿元"}
  }
}

第二步:关键指标计算(CoT)

你是一位资深财务分析师,需要根据提取的财务数据计算关键指标。

## 输入数据

[第一步输出的 JSON]

## 计算要求

请计算以下指标,并展示完整的计算过程:

1. 资产负债率 = 总负债 / 总资产 × 100%
2. ROE (净资产收益率) = 净利润 / 股东权益 × 100%
3. ROA (总资产收益率) = 净利润 / 总资产 × 100%

## 输出格式

对于每个指标,请按以下步骤展示:
1. 公式说明
2. 代入数据
3. 计算过程
4. 最终结果

现在开始计算,请一步一步思考:

预期的 CoT 输出

让我一步一步计算各项财务指标。

### 1. 资产负债率

**公式说明**:资产负债率 = 总负债 / 总资产 × 100%

**代入数据**:
- 总负债 = 851.23 亿元
- 总资产 = 2847.56 亿元

**计算过程**:
851.23 ÷ 2847.56 × 100% = 29.89%

**最终结果**:资产负债率 = 29.89%

### 2. ROE (净资产收益率)

**公式说明**:ROE = 净利润 / 股东权益 × 100%

**代入数据**:
- 净利润 = 606.80 亿元
- 股东权益 = 1996.33 亿元

**计算过程**:
606.80 ÷ 1996.33 × 100% = 30.40%

**最终结果**:ROE = 30.40%

### 3. ROA (总资产收益率)

**公式说明**:ROA = 净利润 / 总资产 × 100%

**代入数据**:
- 净利润 = 606.80 亿元
- 总资产 = 2847.56 亿元

**计算过程**:
606.80 ÷ 2847.56 × 100% = 21.31%

**最终结果**:ROA = 21.31%

第三步:摘要生成

你是一位资深的证券分析师,需要撰写专业的财务分析摘要。

## 原始数据

[第一步输出的 JSON]

## 计算指标

[第二步的计算结果]

## 写作要求

### 结构要求
1. **核心要点**(1-2 句话概括整体表现)
2. **业绩亮点**(2-3 个正面指标,用数据支撑)
3. **关注风险**(1-2 个需要关注的问题)

### 风格要求
- 使用专业但易懂的语言
- 避免堆砌数据,突出关键信息
- 保持客观中立
- 总字数控制在 200-300 字

预期输出

**核心要点**

贵州茅台 2024 年第三季度业绩稳健增长,营收和利润均实现双位数增长,
盈利能力和资产质量保持行业领先水平。

**业绩亮点**

- **盈利能力突出**:ROE 达 30.40%,ROA 达 21.31%,远超白酒行业平均水平
- **财务结构稳健**:资产负债率仅 29.89%,财务风险可控
- **增长势头良好**:营收同比增长 16.02%,净利润同比增长 15.04%

**关注风险**

- 毛利率已处于行业极高水平(92.71%),继续提升空间有限
- 高端白酒消费受宏观经济影响,需关注消费复苏节奏

Skill 配置示例

.opencode/skills/financial-report-analyzer/SKILL.md 中:

---
name: financial-report-analyzer
description: |
  财报分析技能,支持三步生成财报摘要。
  当用户提到以下内容时使用:
  - 分析财报、解读财报、财报摘要
  - 财务分析、业绩分析
  - 提取财务数据、计算财务指标
---

# 财报分析技能

## 功能说明

本技能实现「数据提取 → 指标计算 → 摘要生成」三步财报分析流程。

## 使用方法

当用户提供财报文本时:

1. **第一步:数据提取**
   - 从财报文本中提取结构化数据
   - 输出 JSON 格式的财务数据

2. **第二步:指标计算**
   - 基于提取数据计算关键比率
   - 使用 CoT 展示计算过程

3. **第三步:摘要生成**
   - 综合数据和指标生成分析摘要
   - 包含业绩亮点、风险提示

案例 4B:金融问题分类路由

要素 说明
演示模式 意图路由(Intent Routing)
案例简述 根据用户问题类型自动路由到不同 Skill
经济学映射 专业化分工——不同类型任务交给专业化模块处理
应用衔接 第 11 章舆情分析系统的多 Agent 协作基于类似路由逻辑
预计耗时 20-30 分钟

为什么需要意图路由?

用户问题类型多样,不同类型需要不同的处理方式:

  • 行情查询:需要实时数据接口
  • 财报分析:需要深度分析能力
  • 政策解读:需要政策知识库

如果用单一提示处理所有类型,会面临以下问题:

  1. 提示词过长,消耗大量 token
  2. 专业度不足,难以在每个领域都表现出色
  3. 资源浪费,简单查询不需要复杂推理

路由架构

金融问题分类路由架构

路由器 Skill 设计

---
name: financial-router
description: |
  金融问题智能路由技能。当用户提出金融相关问题时,
  自动分类并路由到合适的专业 Skill。
---

# 金融问题路由技能

## 可用路由目标

### 1. market-query (行情查询)
**触发条件**:用户询问股票价格、指数行情、涨跌情况
**示例问题**:
- 茅台现在多少钱?
- 今天大盘涨了多少?
- 沪深 300 最新点位?

### 2. financial-analysis (财报分析)
**触发条件**:用户询问公司财务状况、业绩表现、财务指标
**示例问题**:
- 帮我分析茅台的财报
- 宁德时代的毛利率是多少?
- 这家公司盈利能力如何?

### 3. policy-interpretation (政策解读)
**触发条件**:用户询问政策内容、政策影响、监管规定
**示例问题**:
- 最新的 LPR 调整对股市有什么影响?
- 央行降准意味着什么?

### 4. general (通用咨询)
**触发条件**:不属于以上类别的金融相关问题
**示例问题**:
- 什么是市盈率?
- 基金和股票有什么区别?

## 路由规则

1. 仔细分析用户问题的核心意图
2. 匹配最合适的路由目标
3. 如果问题涉及多个类别,选择最主要的一个
4. 不确定时选择 general

## 输出格式

{
  "intent": "路由目标",
  "confidence": 0.0-1.0,
  "reasoning": "简短说明分类理由"
}

路由示例

用户问题:茅台今天涨了多少?

{
  "intent": "market-query",
  "confidence": 0.95,
  "reasoning": "用户询问股票涨跌幅,属于实时行情查询"
}

用户问题:宁德时代去年的净利率和 ROE 是多少?

{
  "intent": "financial-analysis",
  "confidence": 0.92,
  "reasoning": "用户询问财务指标,需要分析财报数据"
}

用户问题:最近央行降准对银行股有什么影响?

{
  "intent": "policy-interpretation",
  "confidence": 0.88,
  "reasoning": "用户询问货币政策的市场影响,属于政策解读"
}

子 Skill 设计示例(行情查询):

---
name: market-query
description: |
  股票行情查询技能,处理实时价格、涨跌幅、成交量等行情相关问题。
---

# 行情查询技能

## 功能范围

- 股票实时价格查询
- 指数行情查询
- 涨跌幅计算
- 成交量/成交额查询

## 回答模板

**{股票名称} ({股票代码})** 最新行情:
- 当前价格:{价格} 元
- 涨跌幅:{涨跌幅}%
- 成交量:{成交量} 手
- 成交额:{成交额} 亿元

## 注意事项

- 明确告知数据更新时间
- 提醒用户数据仅供参考
- 如无法获取实时数据,说明原因

目录结构

.opencode/skills/
├── financial-router/
│   └── SKILL.md          # 路由器 Skill
├── market-query/
│   └── SKILL.md          # 行情查询 Skill
├── financial-analysis/
│   └── SKILL.md          # 财报分析 Skill
└── policy-interpretation/
    └── SKILL.md          # 政策解读 Skill