update
This commit is contained in:
parent
f1656e8189
commit
fe472d9343
@ -139,11 +139,17 @@ class QuestionAnalyzer:
|
||||
请分析以下维度:
|
||||
|
||||
1. **问题类型**
|
||||
- stock_analysis: 针对特定股票的分析(如"贵州茅台怎么样"、"分析比亚迪"、"AAPL走势")
|
||||
- market_overview: 市场整体分析(如"最近有什么投资机会"、"现在适合买股票吗")
|
||||
- stock_analysis: 针对**特定单只股票**的分析(如"贵州茅台怎么样"、"分析比亚迪"、"AAPL走势")
|
||||
**注意**:如果用户问的是"板块"、"行业"、"概念股"等,这不是stock_analysis,而是market_overview
|
||||
- market_overview: 市场整体分析、行业板块分析、投资机会(如"最近有什么投资机会"、"商业航天板块怎么样"、"新能源行业走势"、"现在适合买股票吗")
|
||||
- knowledge: 金融知识问答(如"什么是MACD"、"如何看K线图")
|
||||
- chat: 一般对话(如"你好"、"在吗")
|
||||
|
||||
**重要**:判断是stock_analysis还是market_overview的关键:
|
||||
- 如果提到具体的公司名称或股票代码 → stock_analysis
|
||||
- 如果提到"板块"、"行业"、"概念"、"赛道"、"领域" → market_overview
|
||||
- 如果问"哪些股票"、"什么机会" → market_overview
|
||||
|
||||
2. **用户关注维度**(如果是stock_analysis)
|
||||
分析用户想了解哪些方面:
|
||||
- price_trend: 价格走势、涨跌情况、最新价格
|
||||
|
||||
@ -1197,40 +1197,27 @@ MA60:{f"{ma['ma60']:.2f}" if ma['ma60'] else '计算中'}
|
||||
intent_analysis: Dict[str, Any],
|
||||
message: str
|
||||
) -> Dict[str, Any]:
|
||||
"""处理宏观金融问题"""
|
||||
keywords = intent_analysis.get('keywords', [])
|
||||
"""处理宏观金融问题(智能模式)"""
|
||||
description = intent_analysis.get('description', '')
|
||||
keywords = intent_analysis.get('keywords', [])
|
||||
|
||||
logger.info(f"处理宏观问题: {description}")
|
||||
logger.info(f"[智能模式] 处理宏观问题: {description}")
|
||||
|
||||
try:
|
||||
# 使用LLM进行分析(基于Tushare数据和公开信息)
|
||||
# 使用智能、自然的prompt
|
||||
prompt = f"""你是一位专业的金融分析师。用户询问了宏观金融问题。
|
||||
|
||||
用户问题:{message}
|
||||
|
||||
问题分析:{description}
|
||||
关键词:{', '.join(keywords)}
|
||||
请用自然、专业的语言回答用户的问题。不要使用固定的格式或标题,而是像和朋友聊天一样,直接回答用户关心的内容。
|
||||
|
||||
请基于你的金融知识和市场经验,给出专业且易懂的分析:
|
||||
|
||||
## 市场现状分析
|
||||
简要说明当前市场整体情况和主要影响因素(分段说明,每个要点独立成段)
|
||||
|
||||
## 趋势判断
|
||||
- 短期趋势(1-2周)
|
||||
- 中期展望(1-3个月)
|
||||
|
||||
## 投资建议
|
||||
- 具体的投资策略建议
|
||||
- 需要关注的风险点
|
||||
|
||||
写作要求:
|
||||
1. 语言简洁专业但易懂,避免过度修饰
|
||||
2. 分析要客观理性,基于事实和数据
|
||||
3. 每个分析点独立成段,段落之间用空行分隔
|
||||
4. 控制在400-500字
|
||||
5. 最后声明:"以上分析仅供参考,不构成投资建议。股市有风险,投资需谨慎。"
|
||||
要求:
|
||||
- 直接回答用户的问题,不要添加"【宏观市场分析】"等标题
|
||||
- 根据问题的具体内容调整回答的重点
|
||||
- 语言自然、专业但易懂
|
||||
- 如果用户问的是短期趋势,重点讲短期;如果问的是投资机会,重点讲机会
|
||||
- 控制在300-500字
|
||||
- 最后声明:"以上分析仅供参考,不构成投资建议。"
|
||||
"""
|
||||
|
||||
analysis = await self._call_llm_async(
|
||||
@ -1241,29 +1228,17 @@ MA60:{f"{ma['ma60']:.2f}" if ma['ma60'] else '计算中'}
|
||||
|
||||
if analysis:
|
||||
return {
|
||||
"message": f"【宏观市场分析】\n\n{analysis}",
|
||||
"message": analysis,
|
||||
"metadata": {"type": "macro_analysis"}
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"宏观问题处理失败: {e}")
|
||||
|
||||
# 降级方案:提供友好的引导
|
||||
# 降级方案
|
||||
return {
|
||||
"message": f"""我理解您想了解:{description}
|
||||
|
||||
目前我可以帮您:
|
||||
• 📊 分析具体股票的走势和投资价值
|
||||
• 📈 查看大盘指数(如上证指数、深证成指)
|
||||
• 📚 解答金融投资相关问题
|
||||
|
||||
您可以更具体地问我,比如:
|
||||
• "现在上证指数怎么样"
|
||||
• "分析一下创业板的走势"
|
||||
• "最近哪些行业比较热门"
|
||||
|
||||
请告诉我您想了解什么?""",
|
||||
"metadata": {"type": "guide"}
|
||||
"message": f"抱歉,我暂时无法回答这个问题。您可以问我具体股票或指数的分析。",
|
||||
"metadata": {"type": "error"}
|
||||
}
|
||||
|
||||
async def _handle_knowledge_question(
|
||||
@ -1271,34 +1246,24 @@ MA60:{f"{ma['ma60']:.2f}" if ma['ma60'] else '计算中'}
|
||||
intent_analysis: Dict[str, Any],
|
||||
message: str
|
||||
) -> Dict[str, Any]:
|
||||
"""处理金融知识问答"""
|
||||
"""处理金融知识问答(智能模式)"""
|
||||
description = intent_analysis.get('description', '')
|
||||
keywords = intent_analysis.get('keywords', [])
|
||||
|
||||
logger.info(f"处理知识问答: {description}")
|
||||
logger.info(f"[智能模式] 处理知识问答: {description}")
|
||||
|
||||
# 直接使用LLM回答
|
||||
# 使用智能、自然的prompt
|
||||
prompt = f"""你是一位专业的金融教育专家。用户询问了金融知识问题。
|
||||
|
||||
用户问题:{message}
|
||||
|
||||
请用通俗易懂的语言解释这个概念或回答这个问题:
|
||||
请用自然、通俗的语言回答用户的问题。不要使用固定的格式(如"## 核心概念"),而是像老师给学生讲解一样,直接、清晰地解释。
|
||||
|
||||
## 核心概念
|
||||
- 清晰定义和解释
|
||||
|
||||
## 实际应用
|
||||
- 如何在投资中应用
|
||||
- 注意事项
|
||||
|
||||
## 举例说明
|
||||
- 用简单的例子帮助理解
|
||||
|
||||
写作要求:
|
||||
1. 语言通俗易懂,避免过多专业术语
|
||||
2. 如果使用专业术语,要简单解释
|
||||
3. 控制在300-400字
|
||||
4. 重点是帮助用户理解,而不是炫耀知识
|
||||
要求:
|
||||
- 直接回答问题,不要添加"【金融知识解答】"等标题
|
||||
- 用通俗易懂的语言,避免过多专业术语
|
||||
- 如果必须用专业术语,简单解释一下
|
||||
- 可以举例子帮助理解
|
||||
- 控制在200-400字
|
||||
"""
|
||||
|
||||
try:
|
||||
@ -1310,7 +1275,7 @@ MA60:{f"{ma['ma60']:.2f}" if ma['ma60'] else '计算中'}
|
||||
|
||||
if answer:
|
||||
return {
|
||||
"message": f"【金融知识解答】\n\n{answer}",
|
||||
"message": answer,
|
||||
"metadata": {"type": "knowledge"}
|
||||
}
|
||||
|
||||
@ -1327,46 +1292,35 @@ MA60:{f"{ma['ma60']:.2f}" if ma['ma60'] else '计算中'}
|
||||
intent_analysis: Dict[str, Any],
|
||||
message: str
|
||||
) -> Dict[str, Any]:
|
||||
"""处理一般对话,智能引导用户"""
|
||||
"""处理一般对话(智能模式)"""
|
||||
description = intent_analysis.get('description', '')
|
||||
|
||||
logger.info(f"处理一般对话: {description}")
|
||||
logger.info(f"[智能模式] 处理一般对话: {description}")
|
||||
|
||||
# 使用LLM生成友好的引导回复
|
||||
prompt = f"""你是一位专业且友好的金融智能助手。用户发来了一条消息,但不够具体。
|
||||
# 使用智能、自然的prompt
|
||||
prompt = f"""你是一位专业且友好的金融智能助手。用户发来了一条消息。
|
||||
|
||||
用户消息:{message}
|
||||
问题分析:{description}
|
||||
|
||||
你的任务是:
|
||||
1. 如果是问候(如"你好"、"在吗"),友好回应并介绍你的能力
|
||||
2. 如果问题不明确(如"帮我"、"看看"),礼貌地询问用户想了解什么
|
||||
3. 如果可能与金融相关但不具体,给出具体的提问示例引导用户
|
||||
请用自然、友好的语言回应用户。不要使用固定的格式,而是像真人对话一样。
|
||||
|
||||
你可以提供的服务:
|
||||
• 📊 股票分析 - 分析个股走势、技术指标、基本面
|
||||
• 📈 市场观察 - 解读大盘走势、行业热点、投资机会
|
||||
• 📚 知识问答 - 解答金融投资相关问题
|
||||
|
||||
回复要求:
|
||||
1. 语气友好、专业但不生硬
|
||||
2. 简洁明了,不要太长(150字以内)
|
||||
3. 给出2-3个具体的提问示例
|
||||
4. 不要使用"抱歉"、"无法理解"等负面词汇
|
||||
5. 用emoji让回复更友好(但不要过度使用)
|
||||
|
||||
直接返回回复内容,不要有其他格式。"""
|
||||
要求:
|
||||
- 如果是问候(如"你好"),友好回应并简单介绍你能做什么
|
||||
- 如果问题不明确,礼貌地询问用户想了解什么
|
||||
- 语言自然、友好,不要太正式
|
||||
- 控制在100-200字
|
||||
"""
|
||||
|
||||
try:
|
||||
reply = await self._call_llm_async(
|
||||
response = await self._call_llm_async(
|
||||
messages=[{"role": "user", "content": prompt}],
|
||||
temperature=0.8,
|
||||
max_tokens=400
|
||||
max_tokens=500
|
||||
)
|
||||
|
||||
if reply:
|
||||
if response:
|
||||
return {
|
||||
"message": reply,
|
||||
"message": response,
|
||||
"metadata": {"type": "chat"}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user