Skip to content

AI 分析

概述

AI 分析是财报分析 Agent 的核心亮点。通过 LLM 将枯燥的财务数据转化为易懂的分析洞察,帮助用户快速理解公司财务状况。

LLM 选择

模型优势适用场景成本
GPT-4推理能力强复杂分析较高
Claude 3.5长文本处理好财报解读中等
GPT-3.5速度快、成本低简单摘要

推荐:Claude 3.5 Sonnet,在财务分析任务上表现优秀,支持长文本输入。

Prompt 设计

财务分析 Prompt 模板

python
ANALYSIS_PROMPT = """
你是一位专业的财务分析师。请根据以下财务数据,生成一份结构化的分析报告。

## 公司信息
- 公司名称:{company_name}
- 股票代码:{symbol}
- 所属行业:{industry}

## 财务指标
{metrics_json}

## 分析要求
请从以下维度进行分析:

1. **财务健康度**:评估公司的偿债能力和财务稳定性
2. **盈利能力**:分析公司的盈利水平和效率
3. **成长性**:判断公司的增长潜力
4. **估值水平**:评估当前股价是否合理
5. **风险提示**:指出潜在的财务风险
6. **投资建议**:给出综合评价

请用简洁专业的语言,避免过于技术化的表述。
"""

风险提示 Prompt

python
RISK_PROMPT = """
根据以下财务指标,识别潜在风险:

{metrics}

请列出:
1. 高风险项(需要立即关注)
2. 中风险项(需要持续观察)
3. 低风险项(暂无明显问题)

对每个风险项,说明原因和可能的影响。
"""

LangChain 集成

基础配置

python
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.output_parsers import PydanticOutputParser

# 初始化 LLM
llm = ChatOpenAI(
    model="gpt-4",
    temperature=0.3,  # 财务分析需要稳定输出
)

# 创建 Prompt 模板
prompt = ChatPromptTemplate.from_template(ANALYSIS_PROMPT)

结构化输出

python
from pydantic import BaseModel, Field
from typing import List

class RiskItem(BaseModel):
    level: str = Field(description="风险等级:高/中/低")
    item: str = Field(description="风险项")
    reason: str = Field(description="原因")
    impact: str = Field(description="可能影响")

class FinancialAnalysis(BaseModel):
    summary: str = Field(description="一句话总结")
    health_score: int = Field(description="财务健康评分 1-100")
    profitability: str = Field(description="盈利能力分析")
    growth: str = Field(description="成长性分析")
    valuation: str = Field(description="估值分析")
    risks: List[RiskItem] = Field(description="风险列表")
    recommendation: str = Field(description="投资建议")

# 使用 Parser
parser = PydanticOutputParser(pydantic_object=FinancialAnalysis)

完整分析流程

python
class AIAnalyzer:
    """AI 财务分析器"""

    def __init__(self, model="gpt-4"):
        self.llm = ChatOpenAI(model=model, temperature=0.3)

    def analyze(self, company_data: dict) -> FinancialAnalysis:
        """执行 AI 分析"""
        # 构建 Prompt
        prompt = ANALYSIS_PROMPT.format(
            company_name=company_data["name"],
            symbol=company_data["symbol"],
            industry=company_data["industry"],
            metrics_json=json.dumps(company_data["metrics"], indent=2, ensure_ascii=False)
        )

        # 调用 LLM
        response = self.llm.invoke(prompt)

        # 解析结果
        return parser.parse(response.content)

# 使用示例
analyzer = AIAnalyzer()
result = analyzer.analyze({
    "name": "苹果公司",
    "symbol": "AAPL",
    "industry": "消费电子",
    "metrics": metrics_data
})

print(f"健康评分: {result.health_score}")
print(f"投资建议: {result.recommendation}")

报告生成

Markdown 报告模板

python
REPORT_TEMPLATE = """
# {company_name} 财务分析报告

> 生成时间:{date}
> 数据来源:{data_source}

## 一、概要

{summary}

**财务健康评分:{health_score}/100**

## 二、盈利能力分析

{profitability}

## 三、成长性分析

{growth}

## 四、估值分析

{valuation}

## 五、风险提示

{risks}

## 六、投资建议

{recommendation}

---
*免责声明:本报告由 AI 自动生成,仅供参考,不构成投资建议。*
"""

注意事项

  1. Prompt 迭代:根据输出质量持续优化 Prompt
  2. 温度参数:财务分析建议使用较低温度(0.2-0.4)
  3. 数据验证:AI 输出需要与原始数据交叉验证
  4. 免责声明:报告需注明 AI 生成,不构成投资建议

下一步

AI 分析完成,开始进行数据可视化。

继续:可视化 →


← 返回数据分析 | 返回项目三

最近更新

基于 Apache 2.0 许可发布