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 自动生成,仅供参考,不构成投资建议。*
"""注意事项
- Prompt 迭代:根据输出质量持续优化 Prompt
- 温度参数:财务分析建议使用较低温度(0.2-0.4)
- 数据验证:AI 输出需要与原始数据交叉验证
- 免责声明:报告需注明 AI 生成,不构成投资建议
下一步
AI 分析完成,开始进行数据可视化。