
前面几篇内容重点讨论了智能体的相关知识点,特别对反应式和深思式做了深入的探讨,今天结合智能金融分析的实例,继续深入探讨基于反应式与深思熟虑式两种架构的实现方式,重点讨论两种架构的设计理念、技术实现和应用场景。
通过详细的对比分析和实际案例展示,进一步揭示两种架构在用户体验、处理深度和商业价值方面的差异化优势,同时为构建新一代金融示例系统提供了全面的技术参考和实践指南。

1. 金融示例的市场需求背景
在数字经济时代,大家面临着前所未有的复杂金融环境。全球资产配置的多元化、金融产品的复杂化以及市场波动性的加剧,使得传统咨询模式难以满足现代的金融需求。
2. 架构演进的技术驱动
金融示例系统的架构演进主要受到三方面技术发展的推动:
这些技术进步共同催生了不同架构取向的金融示例系统。
反应式架构秉承"感知-行动"的经典AI范式,其核心设计理念是快速响应、规则驱动、结果导向。这种架构将金融服务视为一个条件反射系统:当接收到用户查询时,系统通过预定义的规则集快速分类问题类型,然后调用相应的处理模块生成回答。
反应式架构的三大核心特征包括:

执行步骤说明:
阶段1:输入解析
步骤1.1 - 快速意图识别
├── 输入: 用户原始查询文本
├── 处理: Qwen快速分析 + 规则引擎
├── 输出: 结构化意图信息
└── 示例输出:
{
"primary_intent": "风险评估",
"risk_keywords": ["保守", "稳健"],
"amount_mentioned": true,
"time_horizon": "中期",
"urgency_level": "中"
}阶段2:规则分类
步骤2.1 - 规则引擎分类
├── 输入: 意图信息
├── 处理: 并行规则匹配
├── 输出: 处理类别和参数
└── 分类逻辑:
IF 意图=风险评估 → 类别="快速风险评估"
IF 意图=资产配置 AND 有金额 → 类别="标准资产配置"
IF 意图=产品推荐 → 类别="产品推荐"
ELSE → 类别="一般咨询"阶段3:Qwen针对性处理
步骤3.1 - 针对性Prompt构造
├── 风险评估Prompt:
"作为专业顾问,请基于用户描述快速评估风险承受能力..."
├── 资产配置Prompt:
"作为专业顾问,请提供简洁的资产配置建议..."
├── 产品推荐Prompt:
"作为专业顾问,请推荐适合的产品..."
└── 通用咨询Prompt:
"作为专业顾问,请回答以下相关问题..."阶段4:结果格式化
步骤4.1 - 统一格式化
├── 添加响应头信息
├── 插入风险提示
├── 标准化输出格式
└── 最终输出示例:
快速风险评估结果
────────────────
风险评估:平衡型
依据:经验丰富,能承受适度波动
建议:可配置50-60%权益类资产阶段5:记忆更新
步骤5.1 - 对话记忆管理
├── 存储用户ID和交互记录
├── 维护最近10次对话
├── 为后续交互提供上下文
└── 存储结构:
{
"user_001": [
{
"timestamp": "2024-01-20 10:30:00",
"intent": "风险评估",
"category": "快速风险评估",
"risk_level": "平衡型"
}
]
}反应式流程总结:
反应式架构采用经典的流水线处理模式,包含四个核心模块:
class ReactiveArchitecture:
def process_query(self, user_input: str) -> str:
# 1. 意图识别模块
intent_info = self._quick_intent_analysis(user_input)
# 2. 规则分类模块
category = self._rule_based_classification(intent_info)
# 3. 针对性处理模块
response = self._targeted_processing(user_input, category)
# 4. 输出格式化模块
final_advice = self._format_output(response, category)
return final_advice规则引擎是反应式架构的大脑,通过条件-动作规则实现智能路由:
class RuleEngine:
def apply_rules(self, intent_info: Dict) -> str:
rules = [
{
"condition": lambda i: i["primary_intent"] == "风险评估",
"action": "quick_risk_assessment"
},
{
"condition": lambda i: i["primary_intent"] == "资产配置" and i["amount_mentioned"],
"action": "portfolio_advice"
},
# ... 更多规则
]
for rule in rules:
if rule["condition"](intent_info):
return rule["action"]在实际部署中,反应式架构表现出优异的性能特征:
优化策略主要包括
"""
基于Qwen的反应式智能金融 - 结合规则引擎与大模型快速响应
"""class QwenReactiveAdvisor:
def __init__(self):
self.llm = Tongyi(
model_name="qwen-turbo",
dashscope_api_key=os.getenv('DASHSCOPE_API_KEY', '')
)
self.rule_engine = RuleEngine()
self.conversation_memory = {}def process_query(self, user_id: str, user_input: str) -> str:
"""处理用户查询的完整反应式流程"""
print("开始Qwen反应式处理流程...")
# 步骤1: 快速解析用户意图
print("步骤1: 解析用户意图和关键信息")
intent_info = self._quick_intent_analysis(user_input)
print(f" 意图分析: {intent_info}")
# 步骤2: 应用规则引擎进行初步分类
print("步骤2: 规则引擎快速分类")
rule_result = self.rule_engine.apply_rules(intent_info)
print(f" 规则分类: {rule_result['category']}")
# 步骤3: 基于分类调用相应的Qwen处理
print("步骤3: Qwen针对性处理")
qwen_response = self._qwen_targeted_processing(user_input, rule_result)
# 步骤4: 生成格式化的最终建议
print("步骤4: 生成最终建议")
final_advice = self._format_final_advice(qwen_response, rule_result)
# 更新对话记忆
self._update_conversation_memory(user_id, intent_info, rule_result)
return final_advicedef _quick_intent_analysis(self, user_input: str) -> Dict[str, Any]:
"""使用Qwen快速分析用户意图"""
prompt = PromptTemplate(
input_variables=["user_input"],
template="""请快速分析以下咨询的意图和关键信息,用JSON格式返回:
用户输入:{user_input}
请返回JSON格式:
{
"primary_intent": "风险评估|资产配置|产品推荐|知识问答",
"risk_keywords": ["关键词1", "关键词2"],
"amount_mentioned": true/false,
"time_horizon": "短期|中期|长期|未提及",
"urgency_level": "高|中|低"
}
只返回JSON,不要其他内容。"""
)def _fallback_intent_analysis(self, user_input: str) -> Dict[str, Any]:
"""备用规则意图分析"""
input_lower = user_input.lower()
intent_info = {
"primary_intent": "知识问答",
"risk_keywords": [],
"amount_mentioned": False,
"time_horizon": "未提及",
"urgency_level": "中"
}
# 意图判断 - 基于关键词匹配
if any(word in input_lower for word in ['风险', '保守', '激进', '承受']):
intent_info["primary_intent"] = "风险评估"
elif any(word in input_lower for word in ['配置', '分配', '比例', '组合']):
intent_info["primary_intent"] = "资产配置"
# ... 更多规则class RuleEngine:
def _initialize_rules(self):
"""初始化规则"""
return [
{
"name": "风险评估规则",
"condition": lambda intent: intent.get("primary_intent") == "风险评估",
"action": lambda intent: {
"category": "快速风险评估",
"risk_profile": self._assess_risk_profile(intent),
"priority": "high"
}
},
{
"name": "资产配置规则",
"condition": lambda intent: intent.get("primary_intent") == "资产配置" and intent.get("amount_mentioned"),
"action": lambda intent: {
"category": "标准资产配置",
"amount": self._extract_amount(intent),
"time_horizon": intent.get("time_horizon", "中期"),
"priority": "high"
}
},
# ... 更多规则
]def apply_rules(self, intent_info: Dict) -> Dict:
"""应用规则"""
for rule in self.rules:
if rule["condition"](intent_info):
result = rule["action"](intent_info)
print(f" 触发规则: {rule['name']}")
return result
return {"category": "一般咨询", "priority": "low"}def _qwen_targeted_processing(self, user_input: str, rule_result: Dict) -> str:
"""基于分类的Qwen针对性处理"""
category = rule_result['category']
if category == "快速风险评估":
return self._qwen_risk_assessment(user_input, rule_result)
elif category == "标准资产配置":
return self._qwen_portfolio_advice(user_input, rule_result)
elif category == "产品推荐":
return self._qwen_product_recommendation(user_input, rule_result)
else:
return self._qwen_general_advice(user_input)def _qwen_risk_assessment(self, user_input: str, rule_result: Dict) -> str:
"""Qwen风险评估"""
prompt = PromptTemplate(
input_variables=["user_input", "risk_profile"],
template="""作为专业顾问,请基于以下用户描述快速评估风险承受能力:
用户描述:{user_input}
初步风险画像:{risk_profile}
请用简洁的语言回答:
1. 风险等级评估(保守型/稳健型/平衡型/成长型/积极型)
2. 主要依据(1-2个关键因素)
3. 简要建议
回答格式:
风险评估:[等级]
依据:[简要说明]
建议:[1-2条核心建议]"""
)Prompt设计特点:
def _qwen_portfolio_advice(self, user_input: str, rule_result: Dict) -> str:
"""Qwen资产配置建议"""
prompt = PromptTemplate(
input_variables=["user_input", "amount", "time_horizon"],
template="""作为专业顾问,请提供简洁的资产配置建议:
用户需求:{user_input}
金额:{amount}
期限:{time_horizon}
请提供:
1. 推荐的资产配置比例(股票、债券、现金等)
2. 配置逻辑简述
3. 预期风险水平
格式:
配置比例:[具体比例]
配置逻辑:[简要说明]
预期风险:[低/中/高]"""
)def _format_final_advice(self, qwen_response: str, rule_result: Dict) -> str:
"""格式化最终建议"""
category = rule_result['category']
header = {
"快速风险评估": "快速风险评估结果",
"标准资产配置": "资产配置建议",
"产品推荐": "产品推荐",
"一般咨询": "建议"
}.get(category, "建议")
return f"""
{header}
────────────────
{qwen_response}
生成方式:Qwen大模型 + 规则引擎快速响应
响应时间:< 2秒
温馨提示:以上建议仅供参考,需谨慎
"""格式化内容:
def _update_conversation_memory(self, user_id: str, intent_info: Dict, rule_result: Dict):
"""更新对话记忆"""
if user_id not in self.conversation_memory:
self.conversation_memory[user_id] = []
self.conversation_memory[user_id].append({
"timestamp": self._get_current_time(),
"intent": intent_info["primary_intent"],
"category": rule_result["category"],
"risk_level": rule_result.get("risk_level", "未知")
})
# 保持最近10次对话记录
if len(self.conversation_memory[user_id]) > 10:
self.conversation_memory[user_id] = self.conversation_memory[user_id][-10:]记忆设计:
def _assess_risk_profile(self, intent: Dict) -> str:
"""评估风险画像"""
keywords = intent.get("risk_keywords", [])
text = " ".join(keywords).lower()
if any(word in text for word in ['保守', '稳健', '保本']):
return "保守型,偏好低风险产品"
elif any(word in text for word in ['平衡', '稳健']):
return "平衡型,接受适度风险"
# ... 更多风险等级风险等级映射:
def _infer_risk_level(self, intent: Dict) -> str:
"""推断风险等级"""
time_horizon = intent.get("time_horizon", "中期")
if time_horizon == "长期":
return "成长型"
elif time_horizon == "短期":
return "保守型"
else:
return "平衡型"期限与风险关系:
test_cases = [
"我30岁,想评估一下自己的风险承受能力", # 风险评估
"有20万元资金,想做中期,请帮我配置资产", # 资产配置
"推荐一些适合新手的基金产品", # 产品推荐
"当前市场环境下,资股票基金合适吗?" # 知识问答
]测试覆盖:
=== 基于Qwen的反应式智能顾问 === 特点: 快速响应,规则引导,Qwen增强
案例1: 我30岁,想评估一下自己的风险承受能力 ────────────────────────────────────────────────── 开始Qwen反应式处理流程... 步骤1: 解析用户意图和关键信息 意图分析: {'primary_intent': '风险评估', 'risk_keywords': ['风险承受能力', '评估'], 'amount_mentioned': False, 'time_horizon': '未提及', 'urgency_level': '中'} 步骤2: 规则引擎快速分类 触发规则: 风险评估规则 规则分类: 快速风险评估 步骤3: Qwen针对性处理 步骤4: 生成最终建议
快速风险评估结果 ──────────────── 风险评估:平衡型 依据:年龄30岁,处于职业和收入稳定上升期,具备一定风险承受能力,但需结合具体财务状况和风险偏好进一步确认。 建议:可配置部分权益类资产以提升长期收益,同时保持适度稳健;建议完成详细风险测评问卷以精准定位风险等级。
生成方式:Qwen大模型 + 规则引擎快速响应 响应时间:< 2秒 温馨提示:以上建议仅供参考,需谨慎
案例2: 有20万元资金,想做中期,请帮我配置资产 ────────────────────────────────────────────────── 开始Qwen反应式处理流程... 步骤1: 解析用户意图和关键信息 意图分析: {'primary_intent': '资产配置', 'risk_keywords': [], 'amount_mentioned': True, 'time_horizon': '中期', 'urgency_level': '中'} 步骤2: 规则引擎快速分类 触发规则: 资产配置规则 规则分类: 标准资产配置 步骤3: Qwen针对性处理 步骤4: 生成最终建议
资产配置建议 ──────────────── 配置比例:股票60%、债券30%、现金10% 配置逻辑:中期(3-5年)可适度承担波动以追求增长。股票部分提供资本增值潜力,侧重优质权益资产;债券增强稳定性并带来收益,降低组合整体波动;现金保留流动性,应对市场机会或短期需求。 预期风险:中
生成方式:Qwen大模型 + 规则引擎快速响应 响应时间:< 2秒 温馨提示:以上建议仅供参考,需谨慎
案例3: 推荐一些适合新手的基金产品 ────────────────────────────────────────────────── 开始Qwen反应式处理流程... 步骤1: 解析用户意图和关键信息 意图分析: {'primary_intent': '产品推荐', 'risk_keywords': ['新手', '基金产品'], 'amount_mentioned': False, 'time_horizon': '未提及', 'urgency_level': '低'} 步骤2: 规则引擎快速分类 触发规则: 产品推荐规则 规则分类: 产品推荐 步骤3: Qwen针对性处理 步骤4: 生成最终建议
产品推荐 ──────────────── 推荐产品: 1. 偏债混合型基金 - 该类基金以债券资产为主,搭配部分权益类资产(如股票),整体波动相对较小,长期收益优于纯债基金。适合平衡型风险承受能力的新手者,在控制风险的同时争取稳健增值。
2. 指数增强型基金(如沪深300增强) - 跟踪主流宽基指数,具备分散能力、透明度高、费用低的特点,同时通过量化策略适度增强收益。长期持有可分享经济增长红利,适合缺乏选股能力但希望参与股市的新手。
3. “固收+”策略基金 - 以固定收益类资产为底仓,辅以打新、可转债或小比例权益增厚收益,年化波动率适中,历史回撤可控 ,契合平衡型对稳健与收益的双重需求。
风险提示:有风险,选择需谨慎
生成方式:Qwen大模型 + 规则引擎快速响应 响应时间:< 2秒 温馨提示:以上建议仅供参考,需谨慎
案例4: 当前市场环境下,股票基金合适吗? ────────────────────────────────────────────────── 开始Qwen反应式处理流程... 步骤1: 解析用户意图和关键信息 意图分析: {'primary_intent': '风险评估', 'risk_keywords': ['市场环境', '规划'], 'amount_mentioned': False, 'time_horizon': '未提及', 'urgency_level': '中'} 步骤2: 规则引擎快速分类 触发规则: 风险评估规则 规则分类: 快速风险评估 步骤3: Qwen针对性处理 步骤4: 生成最终建议
快速风险评估结果 ──────────────── 风险评估:平衡型 依据:提问关注市场环境下的基金,显示一定风险意识但愿意考虑权益类资产 建议:当前市场波动较大,建议定投方式分批布局;配置股票基金比例不宜超过资产的50%
生成方式:Qwen大模型 + 规则引擎快速响应 响应时间:< 2秒 温馨提示:以上建议仅供参考,需谨慎

深思熟虑式架构基于BDI(信念-愿望-意图)智能体模型,强调深度推理、多轮分析、个性化服务。这种架构将顾问视为一个具有内部认知状态的智能体,能够进行复杂的推理和规划。
深思熟虑式架构的四大核心特征:

执行步骤说明:
阶段1:深度用户理解
步骤1.1 - Qwen多维度用户画像分析
├── 输入: 用户描述 + 历史上下文
├── 处理: 8个维度深度分析
├── 输出: 结构化用户档案
└── 分析维度:
1. demographics: 人口统计特征
2. financial_situation: 财务状况
3. risk_profile: 风险承受能力
4. investment_knowledge: 知识
5. psychological_factors: 心理特征
6. investment_goals: 目标
7. constraints: 约束条件
8. lifecycle_stage: 生命周期阶段
步骤1.2 - 备用分析机制
├── 触发条件: Qwen分析失败
├── 处理: 基于规则的推断
└── 输出: 简化版用户档案阶段2:市场环境分析
步骤2.1 - Qwen综合市场分析
├── 输入: 市场背景数据
├── 处理: 5个方面分析
├── 输出: 市场评估报告
└── 分析内容:
1. investment_opportunities: 机会
2. risk_factors: 风险因素
3. suitable_assets: 适合资产
4. market_trend: 市场趋势
5. allocation_tone: 配置基调
步骤2.2 - 默认市场分析
├── 触发条件: 市场分析失败
├── 处理: 预设市场情景
└── 输出: 保守市场评估阶段3:策略生成
步骤3.1 - Qwen多策略生成
├── 输入: 用户档案 + 市场分析
├── 处理: 生成3个风险等级策略
├── 输出: 策略选项数组
└── 策略类型:
1. 保守型策略: 本金安全优先
2. 平衡型策略: 风险收益均衡
3. 进取型策略: 追求较高收益
步骤3.2 - 默认策略模板
├── 触发条件: 策略生成失败
├── 处理: 基于用户风险偏好的模板匹配
└── 输出: 标准化策略选项阶段4:风险评估优化
步骤4.1 - Qwen风险评估优化
├── 输入: 策略选项 + 用户档案
├── 处理: 风险匹配度评估
├── 输出: 优化后建议
└── 优化内容:
1. recommended_strategy: 推荐策略
2. risk_match_score: 风险匹配度
3. adjustment_suggestions: 调整建议
4. risk_controls: 风险控制措施
步骤4.2 - 默认风险优化
├── 触发条件: 风险评估失败
├── 处理: 简单策略匹配算法
└── 输出: 基础优化建议阶段5:个性化建议生成
步骤5.1 - Qwen个性化建议生成
├── 输入: 优化建议 + 用户档案
├── 处理: 生成完整建议书
├── 输出: 个性化文本建议
└── 包含内容:
1. 目标明确
2. 具体配置方案
3. 实施步骤
4. 风险提示
5. 后续跟踪建议
步骤5.2 - 模板化建议生成
├── 触发条件: 个性化生成失败
├── 处理: 基于模板的建议填充
└── 输出: 标准化建议文本阶段6:结果整合与上下文更新
步骤6.1 - 综合结果整合
├── 整合所有阶段输出
├── 生成最终建议报告
└── 输出结构:
{
"reasoning_process": {...},
"user_profile_summary": {...},
"recommended_strategy": {...},
"personalized_advice": "...",
"implementation_plan": {...},
"risk_management": [...],
"monitoring_schedule": "..."
}
步骤6.2 - 对话上下文更新
├── 存储用户交互历史
├── 维护用户风险偏好
├── 为长期服务提供基础
└── 更新内容:
{
"last_interaction": "2024-01-20T10:30:00",
"last_advice_type": "均衡增长策略",
"user_risk_profile": "平衡型"
}深思熟虑架构总结:
深思熟虑式架构采用五阶段推理流程,每个阶段都包含完整的处理和质量保证:
class DeliberativeArchitecture:
def deliberate_advice(self, user_input: str, context: Dict) -> Dict:
stages = [
("用户理解", self._deep_user_analysis),
("市场分析", self._comprehensive_market_analysis),
("策略生成", self._generate_strategy_options),
("风险优化", self._risk_optimization),
("建议生成", self._generate_personalized_advice)
]
results = {}
for stage_name, stage_func in stages:
try:
results[stage_name] = stage_func(user_input, context, results)
except Exception as e:
results[stage_name] = self._fallback_processing(stage_name, e)
return self._integrate_results(results)深度用户理解是深思熟虑架构的基石:
def _deep_user_analysis(self, user_input: str, context: Dict) -> Dict:
"""八维度用户画像分析"""
analysis_dimensions = [
"demographics", # 人口统计特征
"financial_situation", # 财务状况
"risk_profile", # 风险承受能力
"investment_knowledge", # 知识水平
"psychological_factors", # 心理特征
"investment_goals", # 目标
"constraints", # 约束条件
"lifecycle_stage" # 生命周期阶段
]
user_profile = {}
for dimension in analysis_dimensions:
user_profile[dimension] = self._analyze_dimension(
dimension, user_input, context
)
return user_profile为保证系统可靠性,深思熟虑架构设计了多层容错机制:
"""
基于Qwen的深思熟虑型智能顾问
"""class QwenDeliberativeAdvisor:
def __init__(self):
self.llm = Tongyi(
model_name="qwen-turbo",
dashscope_api_key=os.getenv('DASHSCOPE_API_KEY', 'your-api-key-here')
)
self.analysis_depth = "deep"
self.conversation_context = {}def deliberate_advice(self, user_id: str, user_input: str, market_context: Dict = None) -> Dict[str, Any]:
"""深度推理生成建议"""
print("\n🧠 开始Qwen深度推理流程...")
# 获取对话上下文
context = self._get_conversation_context(user_id)
try:
# 阶段1: 深度用户理解
print(f"\n📊 阶段1: 深度用户理解")
user_analysis = self._deep_user_analysis(user_input, context)
# 阶段2: 多维度市场分析
print(f"\n🌐 阶段2: 市场环境分析")
market_analysis = self._comprehensive_market_analysis(market_context)
# 阶段3: 策略生成
print(f"\n🎯 阶段3: 策略生成")
strategy_options = self._generate_strategy_options(user_analysis, market_analysis)
# 阶段4: 风险评估与优化
print(f"\n⚖️ 阶段4: 风险评估优化")
optimized_advice = self._risk_optimization(strategy_options, user_analysis)
# 阶段5: 个性化建议生成
print(f"\n💫 阶段5: 个性化建议生成")
final_advice = self._generate_personalized_advice(optimized_advice, user_analysis)
# 更新对话上下文
self._update_conversation_context(user_id, user_input, final_advice)
return final_advice五阶段处理流程:
def _deep_user_analysis(self, user_input: str, context: Dict) -> Dict[str, Any]:
"""深度用户分析 - 修复版"""
print(" 步骤1.1: Qwen多维度用户画像分析")
prompt_template = """作为专业顾问,请对用户进行深度分析:
当前输入:{user_input}
历史上下文:{previous_context}
请从以下维度分析用户画像,返回JSON格式:
1. demographics: 年龄区间、职业阶段
2. financial_situation: 财务状况评估
3. risk_profile: 风险承受能力(保守/稳健/平衡/成长/积极)
4. investment_knowledge: 知识水平(新手/有经验/资深)
5. psychological_factors: 心理特征(损失厌恶、耐心程度等)
6. investment_goals: 目标识别
7. constraints: 约束条件识别
8. lifecycle_stage: 生命周期阶段(积累/巩固/维持/支出)
请返回纯JSON格式,不要其他内容。"""八维度用户画像:
def _fallback_user_analysis(self, user_input: str) -> Dict[str, Any]:
"""备用用户分析 - 增强版"""
print(" 🔄 使用备用用户分析")
# 从用户输入中提取更多信息
input_lower = user_input.lower()
# 年龄推断
age_match = re.search(r'(\d+)岁', user_input)
age = int(age_match.group(1)) if age_match else 35
# 风险偏好推断
if any(word in input_lower for word in ['保守', '保本', '稳健', '安全']):
risk_profile = "保守型"
# ... 更多推断逻辑备用分析策略:
def _comprehensive_market_analysis(self, market_context: Optional[Dict]) -> Dict[str, Any]:
"""综合市场分析 - 修复版"""
print(" 步骤2.1: Qwen市场环境深度分析")
current_context = market_context or {
"economic_cycle": "复苏",
"market_valuation": "合理",
"interest_rate_environment": "稳定",
"geopolitical_factors": "平稳"
}
prompt_template = """作为专业分析师,请分析当前市场环境:
市场背景:{market_context}
请从规划角度分析:
1. 主要机会领域
2. 需要警惕的风险因素
3. 适合当前环境的资产类别
4. 市场趋势判断
5. 配置建议基调(进攻/防守/平衡)
返回纯JSON格式。"""市场分析维度:
def _generate_strategy_options(self, user_analysis: Dict, market_analysis: Dict) -> List[Dict]:
"""生成策略选项 - 修复版"""
print(" 步骤3.1: Qwen多策略生成")
prompt_template = """基于用户画像和市场分析,生成3个不同风险收益特征的策略:
用户画像:{user_profile}
市场分析:{market_analysis}
请生成3个策略选项:
1. 保守型策略:注重本金安全
2. 平衡型策略:风险收益均衡
3. 进取型策略:追求较高收益
每个策略包含:
- 资产配置比例
- 预期年化收益
- 最大回撤估计
- 适合的类型
- 核心逻辑
返回JSON数组格式。"""策略类型设计:
def _generate_default_strategies(self, user_analysis: Dict) -> List[Dict]:
"""生成默认策略 - 基于用户画像"""
risk_profile = user_analysis.get("risk_profile", "平衡型")
base_strategies = [
{
"name": "稳健收益策略",
"type": "保守型",
"allocation": {"债券": "60%", "货币基金": "20%", "股票": "20%"},
"expected_return": "4-6%",
"max_drawdown": "8-12%",
"suitable_for": "风险厌恶型",
"logic": "以固收类资产为主,控制回撤"
},
# ... 更多策略
]策略排序逻辑:
def _risk_optimization(self, strategies: List[Dict], user_analysis: Dict) -> Dict[str, Any]:
"""风险评估与优化 - 修复版"""
print(" 步骤4.1: Qwen风险评估与策略优化")
prompt_template = """作为风险管理专家,请评估以下策略与用户风险偏好的匹配度:
策略选项:{strategies}
用户风险画像:{user_profile}
请分析:
1. 推荐策略及理由
2. 风险匹配度评估
3. 必要的策略调整建议
4. 风险控制措施
返回JSON格式。"""风险评估内容:
def _generate_personalized_advice(self, optimized_advice: Dict, user_analysis: Dict) -> Dict[str, Any]:
"""生成个性化建议 - 修复版"""
print(" 步骤5.1: Qwen个性化建议生成")
prompt_template = """作为资深顾问,请生成完整的个性化建议:
优化后的建议:{optimized_advice}
用户详细画像:{user_profile}
请生成包含以下内容的建议书:
1. 目标明确
2. 具体配置方案
3. 实施步骤
4. 风险提示
5. 后续跟踪建议
请用专业但易懂的语言,针对用户特点个性化表达。"""建议书结构:
def _generate_fallback_advice(self, user_input: str) -> Dict[str, Any]:
"""生成完全备用的建议"""
print(" 🆘 启用完全备用建议模式")
return {
"reasoning_process": {
"analysis_stages": ["备用模式"],
"qwen_inference_used": False,
"processing_time": "快速响应",
"note": "主推理流程失败,使用备用方案"
},
# ... 简化版建议内容
}容错层级:
def _extract_json_response(self, response: str) -> Any:
"""提取JSON响应 - 增强版"""
if not response:
raise ValueError("空响应")
# 多种方式尝试提取JSON
json_patterns = [
r'\{[^{}]*\{[^{}]*\}[^{}]*\}', # 嵌套对象
r'\{.*\}', # 简单对象
r'\[.*\]', # 数组
]JSON解析策略:
def _update_conversation_context(self, user_id: str, user_input: str, advice: Dict):
"""更新对话上下文"""
if user_id not in self.conversation_context:
self.conversation_context[user_id] = {}
self.conversation_context[user_id].update({
"last_interaction": datetime.now().isoformat(),
"last_advice_type": advice.get("recommended_strategy", {}).get("type", "未知"),
"user_risk_profile": advice.get("user_profile_summary", {}).get("risk_profile", "未知")
})上下文信息:
=== 基于Qwen的深思熟虑型智能顾问测试 ===
测试案例 1: 我35岁,年收入50万,有100万存款,想做一些规划 ============================================================
开始Qwen深度推理流程...
阶段1: 深度用户理解 步骤1.1: Qwen多维度用户画像分析 调用Qwen进行用户分析... Qwen响应: { "demographics": { "年龄区间": "30-39岁", "职业阶段": "职业中期,收入稳定并处于上升或平台期" }, "financial_situation": { "年收入水平": "较高(50万元)", "储蓄情况": "良好(100万元存款)", "财务状况评估": "具备较强的基础,流动性充足,无明显财务压力,... 用户画像分析完成
阶段2: 市场环境分析 步骤2.1: Qwen市场环境深度分析 调用Qwen进行市场分析... 市场分析完成: 平衡基调
阶段3: 策略生成 步骤3.1: Qwen多策略生成 调用Qwen生成策略... 生成3个策略选项
阶段4: 风险评估优化 步骤4.1: Qwen风险评估与策略优化 调用Qwen进行风险评估... 风险评估完成: 匹配度中
阶段5: 个性化建议生成 步骤5.1: Qwen个性化建议生成 调用Qwen生成个性化建议... 深度推理过程中出错: 'str' object has no attribute 'get' 启用完全备用建议模式 建议生成成功! 推荐策略: 平衡型策略 风险匹配: ['分散', '定期调整'] 建议摘要: 基于您的咨询内容,我们建议采用平衡型策略:
资产配置: • 股票类资产:50% • 债券类资产:40% • 现金储备:10%
预期收益:年化6-8% 风险水平:中等
后续步骤: 1. 分散到不同资产类别 2. 定期定额降低时机风险 3. 长期持有,避免频繁交易
温馨提示:我35岁,年收入50万,有100万存款,想做一些规划... 建议咨询专业理财师获取更精准的建...

用户查询: "我35岁,年收入50万,有房有车无负债,现有100万存款想做规划,能承受中等风险,希望5年内资产增长50%"
反应式架构处理方式:
def _quick_intent_analysis(self, user_input: str) -> Dict[str, Any]:
"""快速意图识别 - 反应式"""
print(" 反应式: 快速关键词提取")
# 基于规则的快速解析
intent_info = {
"primary_intent": "资产配置", # 因为有金额和意向
"risk_keywords": ["中等风险"],
"amount_mentioned": True, # 检测到"100万"
"time_horizon": "中期", # 检测到"5年内"
"urgency_level": "中"
}
# 简单金额提取
amount_match = re.search(r'(\d+)万', user_input)
if amount_match:
intent_info["amount"] = f"{amount_match.group(1)}万元"
return intent_info
# 处理时间: 0.1秒
# 输出: {"primary_intent": "资产配置", "amount": "100万元", ...}深思熟虑架构处理方式:
def _deep_user_analysis(self, user_input: str, context: Dict) -> Dict[str, Any]:
"""深度用户理解 - 深思熟虑式"""
print(" 深思熟虑: Qwen多维度分析")
prompt = """
作为专业顾问,深度分析用户画像:
用户描述:{user_input}
请从8个维度返回JSON格式分析:
1. demographics: 年龄、职业阶段、家庭状况
2. financial_situation: 收入稳定性、负债水平、资产结构
3. risk_profile: 风险承受能力等级和依据
4. investment_knowledge: 经验水平评估
5. psychological_factors: 损失厌恶、耐心等心理特征
6. investment_goals: 具体目标和可行性
7. constraints: 约束条件
8. lifecycle_stage: 生命周期阶段判断
"""
# Qwen深度分析调用
response = self.llm.invoke(prompt.format(user_input=user_input))
# 输出示例
return {
"demographics": {
"age": 35,
"career_stage": "职业发展期",
"family_status": "稳定,有房有车",
"lifecycle_stage": "积累阶段"
},
"financial_situation": {
"income_stability": "高",
"debt_level": "无负债",
"asset_structure": "存款为主",
"emergency_fund": "充足"
},
"risk_profile": {
"level": "平衡型",
"basis": "明确表达中等风险承受意愿",
"max_drawdown_tolerance": "15-20%"
},
"investment_goals": {
"primary": "5年内资产增长50%",
"feasibility": "年化约8.4%,有一定挑战性",
"time_horizon": "中期(5年)"
}
# ... 其他维度
}
# 处理时间: 2-3秒
# 输出: 完整的8维度用户画像环节对比总结:
方面 | 反应式 | 深思熟虑式 |
|---|---|---|
分析方法 | 关键词匹配 + 简单规则 | Qwen大模型深度语义分析 |
输出维度 | 5个基础意图维度 | 8个详细用户画像维度 |
处理深度 | 表层信息提取 | 深层特征推断 |
时间消耗 | 0.1秒 | 2-3秒 |
准确性 | 依赖关键词质量 | 理解上下文语义 |
反应式架构处理方式:
def _qwen_risk_assessment(self, user_input: str, rule_result: Dict) -> str:
"""快速风险评估 - 反应式"""
print(" 反应式: 针对性风险评估")
prompt = """
基于用户描述快速评估风险承受能力:
用户描述:{user_input}
请用简洁语言回答:
1. 风险等级(保守/稳健/平衡/成长/积极)
2. 主要依据
3. 简要建议
"""
response = self.llm.invoke(prompt)
# 输出示例: "风险评估:平衡型\n依据:能承受中等风险...\n建议:..."
return response
# 处理时间: 1秒
# 输出: 简洁的三段式风险评估深思熟虑架构处理方式:
def _comprehensive_risk_assessment(self, user_profile: Dict) -> Dict[str, Any]:
"""综合风险评估 - 深思熟虑式"""
print(" 深思熟虑: 多维度风险评估")
prompt = """
基于完整用户画像进行综合风险评估:
用户档案:{user_profile}
请从以下维度评估并返回JSON:
1. risk_capacity: 风险承担能力(财务角度)
2. risk_willingness: 风险承担意愿(心理角度)
3. composite_risk_score: 综合风险分数(0-100)
4. suitable_risk_level: 适合的风险等级
5. risk_misalignment: 风险偏好与实际能力匹配度
6. recommendation: 个性化风险建议
"""
response = self.llm.invoke(prompt)
return {
"risk_capacity": {
"score": 75,
"factors": ["收入稳定", "无负债", "充足应急资金"],
"assessment": "财务风险承担能力强"
},
"risk_willingness": {
"score": 65,
"factors": ["明确中等风险偏好", "合理收益目标"],
"assessment": "风险意愿与能力匹配"
},
"composite_risk_score": 70,
"suitable_risk_level": "成长型",
"risk_misalignment": "低",
"recommendation": "可适当提高风险暴露至成长型水平"
}
# 处理时间: 2秒
# 输出: 结构化的多维度风险评估环节对比总结:
方面 | 反应式 | 深思熟虑式 |
|---|---|---|
评估维度 | 单一风险等级 | 能力+意愿双维度 |
分析依据 | 用户描述文本 | 完整用户画像 |
输出形式 | 简洁文本 | 结构化评分和建议 |
处理深度 | 表面风险偏好 | 风险匹配度分析 |
时间消耗 | 1秒 | 2秒 |
反应式架构处理方式:
def _qwen_portfolio_advice(self, user_input: str, rule_result: Dict) -> str:
"""快速资产配置 - 反应式"""
print(" 反应式: 标准配置建议")
prompt = """
提供简洁的资产配置建议:
用户需求:{user_input}
金额:{amount}
请提供:
1. 资产配置比例
2. 配置逻辑简述
3. 预期风险水平
"""
response = self.llm.invoke(prompt)
# 输出示例: "配置比例:股票60%、债券30%、现金10%..."
return response
# 处理时间: 1.5秒
# 输出: 文本格式的配置建议深思熟虑架构处理方式:
def _generate_strategy_options(self, user_analysis: Dict, market_analysis: Dict) -> List[Dict]:
"""多策略生成 - 深思熟虑式"""
print(" 深思熟虑: 生成3个策略选项")
prompt = """
基于用户画像和市场分析生成3个策略:
用户画像:{user_profile}
市场分析:{market_analysis}
要求每个策略包含:
- 策略名称和类型
- 详细资产配置比例
- 预期收益区间
- 最大回撤估计
- 适合画像
- 核心逻辑
- 风险收益特征
"""
response = self.llm.invoke(prompt)
return [
{
"name": "稳健平衡策略",
"type": "平衡型",
"allocation": {
"A股蓝筹": "30%",
"港股科技": "15%",
"利率债": "25%",
"信用债": "20%",
"货币基金": "10%"
},
"expected_return": "6-8%",
"max_drawdown": "12-15%",
"suitable_for": "风险偏好平衡",
"logic": "股债均衡,侧重优质蓝筹和利率债",
"risk_return": "中等风险中等收益"
},
{
"name": "成长增值策略",
"type": "成长型",
"allocation": {
"科技成长股": "40%",
"消费龙头": "20%",
"可转债": "15%",
"高收益债": "15%",
"黄金": "5%",
"现金": "5%"
},
"expected_return": "8-10%",
"max_drawdown": "18-22%",
"suitable_for": "能承受较高波动的成长型",
"logic": "侧重成长板块,搭配可转债增强收益",
"risk_return": "中高风险中高收益"
},
# ... 第三个策略
]
# 处理时间: 3-4秒
# 输出: 3个完整的策略选项环节对比总结:
方面 | 反应式 | 深思熟虑式 |
|---|---|---|
策略数量 | 1个标准建议 | 3个对比选项 |
配置细节 | 大类资产比例 | 细分资产类别 |
考虑因素 | 用户风险偏好 | 用户画像+市场环境 |
输出形式 | 文本建议 | 结构化策略对象 |
决策支持 | 直接采纳 | 多方案比较选择 |
反应式架构处理方式:
# 反应式架构无独立风险优化环节
# 风险考虑直接融入策略生成过程
def _format_final_advice(self, qwen_response: str, rule_result: Dict) -> str:
"""格式化输出 - 包含基础风险提示"""
advice = f"""
{qwen_response}
风险提示:有风险,入市需谨慎
"""
return advice
# 处理时间: 0.1秒
# 输出: 添加标准风险提示深思熟虑架构处理方式:
def _risk_optimization(self, strategies: List[Dict], user_analysis: Dict) -> Dict[str, Any]:
"""风险评估优化 - 深思熟虑式"""
print(" 深思熟虑: 策略风险评估优化")
prompt = """
作为风险管理专家,评估策略与用户匹配度:
策略选项:{strategies}
用户风险画像:{user_profile}
请分析:
1. 推荐策略及匹配理由
2. 风险收益匹配度评分
3. 具体调整建议
4. 风险控制措施
5. 压力测试情景
"""
response = self.llm.invoke(prompt)
return {
"recommended_strategy": "成长增值策略",
"risk_match_score": "85/100",
"matching_reason": "用户风险承受能力与成长型策略匹配度高",
"adjustment_suggestions": [
"建议将科技股比例从40%降至35%",
"增加5%的防御性消费板块",
"设置15%的整体止损线"
],
"risk_controls": [
"单一个股不超过组合5%",
"行业集中度不超过25%",
"保留5-10%现金应对波动"
],
"stress_test": {
"market_crash": "最大回撤预计22%",
"rate_hike": "债券部分可能下跌3-5%",
"recession": "整体收益可能降至2-4%"
}
}
# 处理时间: 2秒
# 输出: 详细的风险优化建议环节对比总结:
方面 | 反应式 | 深思熟虑式 |
|---|---|---|
风险处理 | 标准风险提示 | 个性化风险评估 |
优化程度 | 无实质性优化 | 具体调整建议 |
风险测量 | 定性描述 | 定量压力测试 |
控制措施 | 通用提示 | 具体风控规则 |
处理深度 | 表面风险告知 | 深度风险管理 |
反应式架构处理方式:
def _format_final_advice(self, qwen_response: str, rule_result: Dict) -> str:
"""快速格式化输出 - 反应式"""
print(" 反应式: 标准化输出格式化")
return f"""
资产配置建议
────────────────
{qwen_response}
生成方式:Qwen快速响应
响应时间:< 2秒
温馨提示:有风险,决策需谨慎
"""
# 最终输出示例:
"""
资产配置建议
────────────────
配置比例:股票60%、债券30%、现金10%
配置逻辑:基于中等风险偏好,侧重权益资产追求增长
预期风险:中等
生成方式:Qwen快速响应
响应时间:< 2秒
温馨提示:有风险,决策需谨慎
"""深思熟虑架构处理方式:
def _generate_personalized_advice(self, optimized_advice: Dict, user_analysis: Dict) -> Dict[str, Any]:
"""个性化建议生成 - 深思熟虑式"""
print(" 深思熟虑: 生成完整建议书")
prompt = """
生成完整的个性化建议书:
优化建议:{optimized_advice}
用户画像:{user_profile}
请包含以下章节:
1. 目标回顾与可行性分析
2. 推荐策略详细说明
3. 具体实施计划和时间表
4. 风险管理和控制措施
5. 绩效评估和调整机制
6. 后续服务和跟踪安排
"""
final_text = self.llm.invoke(prompt)
return {
"reasoning_process": {
"analysis_stages": ["用户画像", "市场分析", "策略生成", "风险优化", "个性化"],
"total_qwen_calls": 5,
"processing_time": "8秒"
},
"user_profile_summary": user_analysis,
"recommended_strategy": optimized_advice["recommended_strategy"],
"personalized_advice": final_text,
"implementation_plan": {
"phase1": "第1个月:建立60%核心仓位",
"phase2": "第2-3个月:逐步加仓至目标配置",
"phase3": "第4-6个月:优化调整,完成建仓"
},
"risk_management": optimized_advice["risk_controls"],
"monitoring_schedule": "月度表现回顾,季度策略调整"
}
# 最终输出: 完整的结构化建议报告环节对比总结:
方面 | 反应式 | 深思熟虑式 |
|---|---|---|
输出形式 | 简洁文本 | 结构化报告 |
内容深度 | 核心建议 | 完整实施方案 |
个性化 | 中等程度 | 高度个性化 |
可操作性 | 基础指导 | 详细执行计划 |
后续跟踪 | 无 | 完整的监控安排 |
选择反应式架构当:
# 用户需要即时答案
if query_complexity == "simple" and response_time_requirement == "fast":
use_reactive_architecture()
# 标准化咨询场景
elif scenario in ["customer_service", "quick_consultation"]:
use_reactive_architecture()
# 资源受限环境
elif computational_resources == "limited":
use_reactive_architecture()选择深思熟虑架构当:
# 重大决策
if decision_importance == "high" and investment_amount == "large":
use_deliberative_architecture()
# 复杂个人情况
elif user_situation_complexity == "high":
use_deliberative_architecture()
# 长期财务规划
elif time_horizon == "long_term" and planning_depth == "comprehensive":
use_deliberative_architecture()反应式与深思熟虑式智能顾问架构代表了AI在咨询领域应用的两种不同哲学和实践路径。反应式架构以其快速响应、高可扩展性的特点,适合标准化、高并发的咨询场景;而深思熟虑式架构通过深度推理、个性化服务为复杂决策提供专业支持。
未来智能投顾的发展方向不是二选一,而是通过混合架构实现优势互补。金融机构应根据自身业务特点、客户群体和技术能力,选择合适的架构组合策略。对于追求极致用户体验的机构,可以优先部署反应式架构快速获客;对于服务高净值客户的机构,则应重点建设深思熟虑式架构提供深度服务。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。