This commit is contained in:
oficcejo
2026-02-27 12:08:00 +08:00
parent bce3b9645f
commit f3af15ddc8
25 changed files with 203 additions and 132 deletions
+49 -24
View File
@@ -7,8 +7,7 @@ from datetime import datetime
import time
import base64
import os
# 从新的配置文件导入model_options
from model_config import model_options
import config
from stock_data import StockDataFetcher
from ai_agents import StockAnalysisAgents
@@ -32,22 +31,13 @@ st.set_page_config(
initial_sidebar_state="expanded"
)
# 模型选择器
def model_selector():
"""模型选择器"""
# 在侧边栏显示当前模型信息(统一使用.env配置)
def show_current_model_info():
"""显示当前使用的AI模型信息"""
st.sidebar.markdown("---")
st.sidebar.subheader("🤖 AI模型选择")
selected_model = st.sidebar.selectbox(
"选择AI模型",
options=list(model_options.keys()),
format_func=lambda x: model_options[x],
help="DeepSeek Reasoner提供更强的推理能力,但响应时间可能更长"
)
return selected_model
st.sidebar.subheader("🤖 AI模型")
st.sidebar.info(f"当前模型: **{config.DEFAULT_MODEL_NAME}**")
st.sidebar.caption("可在「环境配置」中修改模型名称")
# 自定义CSS样式 - 专业版
st.markdown("""
@@ -416,9 +406,9 @@ def main():
st.markdown("---")
# 模型选择器
selected_model = model_selector()
st.session_state.selected_model = selected_model
# 显示当前模型信息
show_current_model_info()
st.session_state.selected_model = config.DEFAULT_MODEL_NAME
st.markdown("---")
@@ -825,18 +815,22 @@ def parse_stock_list(stock_input):
return unique_list
def analyze_single_stock_for_batch(symbol, period, enabled_analysts_config=None, selected_model='deepseek-chat'):
def analyze_single_stock_for_batch(symbol, period, enabled_analysts_config=None, selected_model=None):
"""单个股票分析(用于批量分析)
Args:
symbol: 股票代码
period: 数据周期
enabled_analysts_config: 分析师配置字典
selected_model: 选择的AI模型
selected_model: 选择的AI模型,默认从 .env 的 DEFAULT_MODEL_NAME 读取
返回分析结果或错误信息
"""
try:
# 使用默认模型
if selected_model is None:
selected_model = config.DEFAULT_MODEL_NAME
# 使用默认配置
if enabled_analysts_config is None:
enabled_analysts_config = {
@@ -983,7 +977,7 @@ def run_batch_analysis(stock_list, period, batch_mode="顺序分析"):
'sentiment': st.session_state.get('enable_sentiment', False),
'news': st.session_state.get('enable_news', False)
}
selected_model = st.session_state.get('selected_model', 'deepseek-chat')
selected_model = st.session_state.get('selected_model', config.DEFAULT_MODEL_NAME)
# 创建进度显示
st.subheader(f"📊 批量分析进行中 ({batch_mode})")
@@ -1256,7 +1250,7 @@ def run_stock_analysis(symbol, period):
# 6. 初始化AI分析系统
status_text.text("🤖 正在初始化AI分析系统...")
# 使用选择的模型
selected_model = st.session_state.get('selected_model', 'deepseek-chat')
selected_model = st.session_state.get('selected_model', config.DEFAULT_MODEL_NAME)
agents = StockAnalysisAgents(model=selected_model)
progress_bar.progress(55)
@@ -2154,6 +2148,37 @@ def display_config_manager():
)
st.session_state.temp_config["DEEPSEEK_BASE_URL"] = new_base_url
st.markdown("---")
# AI模型名称
model_name_info = config_info["DEFAULT_MODEL_NAME"]
current_model_name = st.session_state.temp_config.get("DEFAULT_MODEL_NAME", "deepseek-chat")
new_model_name = st.text_input(
f"🤖 {model_name_info['description']}",
value=current_model_name,
help="输入OpenAI兼容的模型名称,修改后重启生效",
key="input_default_model_name"
)
st.session_state.temp_config["DEFAULT_MODEL_NAME"] = new_model_name
if new_model_name:
st.success(f"✅ 当前模型: **{new_model_name}**")
else:
st.warning("⚠️ 未设置模型名称,将使用默认值 deepseek-chat")
st.markdown("""
**常用模型名称参考:**
- `deepseek-chat` — DeepSeek Chat(默认)
- `deepseek-reasoner` — DeepSeek Reasoner(推理增强)
- `qwen-plus` — 通义千问 Plus
- `qwen-turbo` — 通义千问 Turbo
- `gpt-4o` — OpenAI GPT-4o
- `gpt-4o-mini` — OpenAI GPT-4o Mini
> 💡 使用非 DeepSeek 模型时,请同时修改上方的 API地址 和 API密钥
""")
st.info("💡 如何获取DeepSeek API密钥?\n\n1. 访问 https://platform.deepseek.com\n2. 注册/登录账号\n3. 进入API密钥管理页面\n4. 创建新的API密钥\n5. 复制密钥并粘贴到上方输入框")
with tab2: