1. 系统概览
| 维度 | 说明 |
|---|
| 定位 | 面向个人用户的智能金融顾问 |
| 技术栈 | 大型语言模型 + 自然语言处理 + 财务分析 |
| 交互方式 | 友好的 Gradio Web 界面 |
| 核心能力 | 个性化金融规划、投资建议、风险评估 |
2. 核心功能清单
| 模块 | 子功能 | 简述 |
|---|
| 👤 个人资料 | 信息维护、风险偏好设定 | 支持多语言 |
| 📊 投资规划 | 计划生成、目标规划、产品推荐 | 输入金额/期限/风险 |
| 🎯 财务目标 | 购房、退休、教育等目标设定与追踪 | 自动计算所需月供 |
| 🛡 风险评估 | 承受能力 + 市场风险 + 投资选择分析 | 输出量化评分与建议 |
| 💰 预算规划 | 基于 50/30/20 法则 | 可视化收支分布 |
| 📈 投资推荐 | 匹配用户偏好的产品清单 | 含费率/风险/期限 |
| 📄 财务报告 | 整合数据生成 PDF/Markdown 报告 | 一键导出 |
| 💬 智能客服 | 对话式问答、多轮澄清、反馈收集 | 7×24 在线 |
3. 应用场景
- 个人财务管理与规划
- 投资组合构建与优化
- 风险评估与管理
- 财务目标设定与追踪
- 金融知识获取与咨询
4. 系统环境
4.1 硬件
| 项目 | 最低要求 | 推荐配置 |
|---|
| 计算 | x86_64 / ARM64 | 含 NPU 加速卡 |
| 内存 | 16 GB | 32 GB |
| 存储 | 20 GB 可用空间 | 50 GB SSD |
4.2 软件
| 类别 | 选型 |
|---|
| 操作系统 | Windows ≥10 / Ubuntu ≥20.04 / macOS ≥12 |
| Python | 3.9 – 3.11 |
| 核心依赖 | openmind, openmind_hub, gradio>=4.0, torch, transformers |
| 模型 | Qwen2-7B-Instruct(上海昇思开源) |
4.3 网络
- 首次启动需公网下载模型(≈15 GB)
- 运行后可离线使用
- 默认端口
7860,支持局域网/公网访问
5. 系统架构
┌-------------------------┐
│ 用户界面 (Gradio) │
└-----------┬-------------┘
│↑↓
┌-----------┴-------------┐
│ 业务逻辑模块 │
│ 投资/风险/预算/报告… │
└-----------┬-------------┘
│↑↓
┌-----------┴-------------┐
│ 大语言模型推理层 │
│ Qwen2-7B-Instruct │
└-----------┬-------------┘
│↑↓
┌-----------┴-------------┐
│ 数据存储 (JSON) │
│ user_profile / data │
└-------------------------┘
6. 模块划分
| 序号 | 模块 | 职责 |
|---|
| 1 | 用户资料管理 | 增删改查 + 多语言切换 |
| 2 | 投资规划 | 生成计划、推荐产品、目标回溯 |
| 3 | 风险管理 | 问卷评分 + 场景压力测试 |
| 4 | 财务管理 | 预算、流水、报表 |
| 5 | 智能对话 | 提示词工程 + 多轮记忆 |
7. 数据结构设计
7.1 用户资料
{
"name": "投资者",
"age": 35,
"income": "100000",
"risk_tolerance": "中等",
"investment_experience": "3年",
"financial_goals": "退休计划, 子女教育",
"language": "中文"
}
7.2 投资记录
[
["2024-01-01", "指数基金", 10000, 0.052],
["2024-03-01", "国债", 5000, 0.028]
]
7.3 财务目标
[
["购房首付", 600000, "2030-12", 0.15],
["退休基金", 3000000, "2045-01", 0.05]
]
7.4 用户反馈
[
{
"id": 1,
"content": "界面很清晰",
"rating": 5,
"contact_info": "user@example.com",
"timestamp": "2024-01-01 12:00:00"
}
]
8. 关键算法
8.1 财务目标反向计算器(复利)
def calculate_monthly_investment(target, current, years, annual=0.05):
monthly = annual / 12
months = int(years * 12)
fv_cur = current * (1 + monthly) ** months
need = max(0, target - fv_cur)
if need == 0: return 0
return need * monthly / ((1 + monthly) ** months - 1)
8.2 预算规划(50/30/20 法则)
| 类别 | 比例 | 示例(月入 1 万) |
|---|
| 必要支出 | 50 % | 5 000 元 |
| 想要支出 | 30 % | 3 000 元 |
| 储蓄投资 | 20 % | 2 000 元 |
9. 界面设计
- 技术:Gradio 4.x
- 布局:模块化标签页 + 响应式卡片
- 主题:绿色主色调,专业友好
- 国际化:中/英一键切换
10. 核心代码片段
10.1 模型加载
MODEL_NAME = "Shanghai_Ascend/Qwen2-7B-Instruct"
model_path = snapshot_download(MODEL_NAME, resume_download=True)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path, trust_remote_code=True
).to("npu").eval()
10.2 推理封装
def generate_response(prompt, max_new_tokens=768):
inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=4096)
inputs = {k: v.to("npu") for k, v in inputs.items()}
outputs = model.generate(
**inputs,
max_new_tokens=min(max_new_tokens, 2048),
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
use_cache=True
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response.replace(prompt, "").strip()
10.3 投资计划生成
def generate_investment_plan(amount, period, expected_return, purpose, risk_tolerance):
user_info = f"金额:{amount}元,期限:{period}年,预期收益:{expected_return}%,风险:{risk_tolerance}"
prompt = f"你是一位专业金融顾问,请根据以下信息生成详细投资计划:\n{user_info}\n……"
return truncate_response(generate_response(prompt, max_new_tokens=1024))
11. 部署与运行
11.1 一键启动
pip install -r requirements.txt
python app.py
浏览器访问 http://<ip>:7860
11.2 部署选项
| 场景 | 说明 |
|---|
| 本地 | 适合个人试用 |
| 服务器 | 修改 server_name="0.0.0.0",防火墙放行 7860 |
| Docker | 官方 Dockerfile 已提供,docker compose up -d |
| SSL | 支持 ssl_certfile & ssl_keyfile 参数 |
11.3 常用启动参数
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=False,
auth=("user", "pass"),
ssl_certfile=None,
ssl_keyfile=None
)
12. 后续规划
- 接入实时行情与基金 API
- 支持多模型切换(LLM Router)
- 增加语音输入/输出
- 推出移动端小程序
- 构建 RAG 知识库,提升专业问答时效性