ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TradingAgents-CN 模型推荐功能优化:从强制验证警告到友好推荐提示的完整实现解析

TradingAgents-CN 模型推荐功能优化:从强制验证警告到友好推荐提示的完整实现解析 TradingAgents-CN 模型推荐功能优化从强制验证警告到友好推荐提示的完整实现解析【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN导读本文档解析 TradingAgents-CN基于多智能体 LLM 的中文金融交易框架中模型推荐功能优化的完整改造将原先强制校验用户所选模型并弹警告的方案重构为以信息提示形式给出模型推荐建议、由用户自主决策的交互模式。读者将掌握该功能的前端组件实现checkModelSuitability/applyRecommendedModels、后端推荐与验证 API/api/model-capabilities/recommend、五级分析深度与模型能力等级映射关系以及一键应用推荐配置的完整调用链可直接用于理解或复现该项目中分析深度 × 模型推荐的核心机制。 功能概述与优化目标在单股分析页面中用户需要为快速分析与深度决策分别选择 LLM 模型而不同的分析深度15 级对模型能力有不同要求。旧版交互会在用户所选模型不满足要求时强制弹出黄色警告框并阻断操作本次优化将其改为信息型推荐提示核心目标如下❌移除强制模型验证和警告提示✅改为友好的推荐说明和建议✅保留一键应用推荐配置功能。即系统不再替用户做决定而是告诉用户推荐什么、为什么推荐把最终选择权交还给用户。 前端实现详解SingleAnalysis.vue推荐提示的渲染载体推荐提示使用 Element Plus 的el-alert组件渲染位于模型选择区域下方frontend/src/views/Analysis/SingleAnalysis.vueel-alert v-ifmodelRecommendation :titlemodelRecommendation.title :typemodelRecommendation.type :closablefalse template #default div styledisplay: flex; justify-content: space-between; align-items: flex-start; gap: 12px; div stylefont-size: 13px; line-height: 1.8; flex: 1; white-space: pre-line; {{ modelRecommendation.message }} /div el-button v-ifmodelRecommendation.quickModel modelRecommendation.deepModel typeprimary sizesmall clickapplyRecommendedModels 应用推荐 /el-button /div /template /el-alert推荐提示的状态对象定义如下SingleAnalysis.vueconst modelRecommendation ref{ title: string message: string type: success | warning | info | error quickModel?: string deepModel?: string } | null(null)修改前验证模型并显示警告旧逻辑先调用validateModels校验当前所选模型对是否满足分析深度要求若校验不通过则显示warning类型的警告框语气强制性、带有不达标的负面表达// 旧逻辑验证模型是否合适 const validateRes await validateModels(...) if (!validateRes.data.valid) { // 显示警告模型不合适 modelRecommendation.value { title: ⚠️ 模型选择建议, type: warning, ... } }修改后直接显示推荐说明新逻辑不再校验用户当前选择而是调用后端推荐接口获取针对当前分析深度的最优模型对无论用户选了什么模型都展示一份正向的推荐说明类型固定为info蓝色信息框// 新逻辑直接显示推荐说明 const recommendRes await recommendModels(depthName) modelRecommendation.value { title: 模型推荐, type: info, // 改为信息提示不是警告 message: 快速浏览获取基本信息\n\n推荐模型配置..., ... }checkModelSuitability 完整流程实际实现的checkModelSuitability()函数SingleAnalysis.vue包含三条分支推荐成功将researchDepth1~5映射为中文深度名快速/基础/标准/深度/全面调用recommendModels(depthName)成功后将推荐模型名映射为显示名model_display_name拼接深度用途说明、推荐配置与推荐理由后写入提示框同时保留quickModel/deepModel供一键应用使用const depthNames: Recordnumber, string { 1: 快速, 2: 基础, 3: 标准, 4: 深度, 5: 全面 } const depthName depthNames[analysisForm.researchDepth] || 标准 const recommendRes await recommendModels(depthName) const responseData recommendRes?.data?.data ... const message ${depthDescriptions[analysisForm.researchDepth] || 标准分析}\n\n推荐模型配置\n• 快速模型${quickDisplayName}\n• 深度模型${deepDisplayName}\n\n${reason} modelRecommendation.value { title: 模型推荐, message, type: info, quickModel, deepModel }推荐接口返回空数据回退到内置的generalDescriptions通用说明见下文降级说明。接口异常catch同样回退到generalDescriptions通用说明保证任何情况下用户都能看到有意义的推荐文案。触发时机有三处SingleAnalysis.vue页面onMounted初始化、analysisForm.researchDepth变化watch 监听、快速/深度模型选择变化watch 监听即用户切换分析深度或模型时推荐提示会即时刷新。applyRecommendedModels 一键应用const applyRecommendedModels () { if (modelRecommendation.value?.quickModel modelRecommendation.value?.deepModel) { modelSettings.value.quickAnalysisModel modelRecommendation.value.quickModel modelSettings.value.deepAnalysisModel modelRecommendation.value.deepModel // 清除推荐提示 modelRecommendation.value null ElMessage.success(已应用推荐的模型配置) } }点击应用推荐后推荐模型对直接写入modelSettings.quickAnalysisModel/modelSettings.deepAnalysisModel提示框随即消失并弹出成功消息。值得注意的是由于模型选择变化会被 watch 监听并重新触发checkModelSuitability()应用后推荐提示会再次出现这在设计上是持续给出建议、永不强制的体现。前端 API 封装前端通过 frontend/src/api/modelCapabilities.ts 统一封装模型能力相关接口其中推荐与验证接口定义如下export function recommendModels(researchDepth: string) { return request({ url: /api/model-capabilities/recommend, method: post, data: { research_depth: researchDepth } }) } export function validateModels(quickModel: string, deepModel: string, researchDepth: string) { return request({ url: /api/model-capabilities/validate, method: post, data: { quick_model: quickModel, deep_model: deepModel, research_depth: researchDepth } }) }对应 TypeScript 类型ModelRecommendationResponse包含quick_model、deep_model、quick_model_info、deep_model_info与reason五个字段ModelValidationResponse则保留valid、warnings、recommendations字段旧验证逻辑的残留后端接口仍可用。⚙️ 后端实现详解model_capabilities.py推荐接口 /api/model-capabilities/recommend后端路由位于 app/routers/model_capabilities.py。核心流程为通过get_model_capability_service()获取服务单例调用capability_service.recommend_models_for_depth(request.research_depth)得到(quick_model, deep_model)推荐对调用get_model_config()获取两个模型的完整能力信息按能力等级生成推荐理由并返回ok(response_data, 模型推荐成功)。本次优化中推荐理由的格式发生了关键变化# 修改前 reason ( f{request.research_depth}分析推荐\n f快速模型 {quick_model}等级{quick_info[capability_level]}适合数据收集 f深度模型 {deep_model}等级{deep_info[capability_level]}适合推理决策。\n f{depth_req[description]} ) # 修改后 reason ( f• 快速模型{quick_level_desc}注重速度和成本适合数据收集\n f• 深度模型{deep_level_desc}注重质量和推理适合分析决策 )新格式用项目符号罗列能力等级描述 用途定位不再夹杂模型名与等级数字文案更简洁、更贴近建议的语气。其中能力等级描述映射与文档/常量保持一致capability_desc { 1: 基础级, 2: 标准级, 3: 高级, 4: 专业级, 5: 旗舰级 }服务层推荐算法推荐逻辑核心在 app/services/model_capability_service.py 的recommend_models_for_depth()可分四步读取启用模型从unified_config.get_llm_configs()中过滤enabled的模型候选筛选快速模型候选需满足角色为quick_analysis或both、能力等级 ≥quick_model_min、且支持tool_calling特性数据收集必需深度模型候选需满足角色为deep_analysis或both、能力等级 ≥deep_model_min性价比排序快速模型候选按能力等级降序 成本升序排序深度模型候选按能力等级降序 质量降序排序兜底若无候选回退到系统默认模型unified_config.get_quick_analysis_model()/get_deep_analysis_model()再兜底为qwen-turbo/qwen-plus。另外服务还支持聚合渠道模型映射_parse_aggregator_model_name与_get_model_capability_with_mapping见 model_capability_service.py对于形如openai/gpt-4、anthropic/claude-3-sonnet的聚合渠道302.AI、OpenRouter、One API 等模型名会拆出provider/model并映射到原厂模型的能力配置从而复用同一套能力分级体系。保留的验证接口 /api/model-capabilities/validate虽然前端已不再强制调用验证逻辑后端validate_model_pair()model_capability_service.py仍然保留用于排查问题时手动校验模型对是否满足某深度要求。它返回valid、warnings、recommendations三要素检查项包括快速模型能力等级是否达标、角色是否适配、是否支持工具调用、深度模型能力等级与推理特性等。 分析深度与能力等级映射五级分析深度说明深度等级说明推荐配置1级 - 快速快速浏览获取基本信息快速模型基础级深度模型基础级2级 - 基础基础分析了解主要指标快速模型基础级深度模型标准级3级 - 标准标准分析全面评估股票快速模型基础级深度模型标准级以上4级 - 深度深度研究挖掘投资机会快速模型标准级深度模型高级以上需要推理能力5级 - 全面全面分析专业投资决策快速模型标准级深度模型专业级以上强推理能力深度要求的底层定义上述表格的实际数据源是 app/constants/model_capabilities.py 中的ANALYSIS_DEPTH_REQUIREMENTSANALYSIS_DEPTH_REQUIREMENTS { 快速: { min_capability: 1, quick_model_min: 1, deep_model_min: 1, required_features: [ModelFeature.TOOL_CALLING], description: 1级快速分析任何模型都可以优先选择快速响应的模型 }, 基础: { min_capability: 1, quick_model_min: 1, deep_model_min: 2, required_features: [ModelFeature.TOOL_CALLING], description: 2级基础分析快速模型可用基础级深度模型建议标准级以上 }, 标准: { min_capability: 2, quick_model_min: 1, deep_model_min: 2, required_features: [ModelFeature.TOOL_CALLING], description: 3级标准分析快速模型可用基础级深度模型需要标准级以上 }, 深度: { min_capability: 3, quick_model_min: 2, deep_model_min: 3, required_features: [ModelFeature.TOOL_CALLING, ModelFeature.REASONING], description: 4级深度分析快速模型需标准级深度模型需高级以上需要推理能力 }, 全面: { min_capability: 4, quick_model_min: 2, deep_model_min: 4, required_features: [ModelFeature.TOOL_CALLING, ModelFeature.REASONING], description: 5级全面分析快速模型需标准级深度模型需专业级以上强推理能力 } }可见深度 4、5 级额外要求reasoning强推理特性quick_model_min从 1 升到 2 意味着深度/全面分析的快速模型也至少需要标准级。能力等级、角色与特性体系同一常量文件中定义了完整的模型元数据体系能力等级ModelCapabilityLevel15基础/标准/高级/专业/旗舰对应描述见CAPABILITY_DESCRIPTIONS角色ModelRolequick_analysis快速分析数据收集、工具调用、deep_analysis深度分析推理、决策、both两者皆宜特性标签ModelFeaturetool_calling工具调用必需、long_context长上下文、reasoning强推理、vision视觉、fast_response快速响应、cost_effective成本效益高。DEFAULT_MODEL_CAPABILITIESmodel_capabilities.py为常见模型预置了能力配置覆盖通义千问qwen-turbo/plus/max/qwen3-max、OpenAIgpt-3.5-turbo/gpt-4/gpt-4-turbo/gpt-4o-mini/o1/o1-mini/o4-mini、DeepSeekdeepseek-chat、文心ernie-3.5/4.0/4.0-turbo、智谱glm-3-turbo/glm-4/glm-4-plus、Claudehaiku/sonnet/opus/3.5-sonnet、Geminigemini-pro/1.5-pro/1.5-flash/2.0-flash/2.5-flash-lite以及 Moonshot 系列每个模型均带capability_level、suitable_roles、features、recommended_depths、performance_metrics与description。例如qwen-turbo: { capability_level: 1, suitable_roles: [ModelRole.QUICK_ANALYSIS], features: [ModelFeature.TOOL_CALLING, ModelFeature.FAST_RESPONSE, ModelFeature.COST_EFFECTIVE], recommended_depths: [快速, 基础], performance_metrics: {speed: 5, cost: 5, quality: 3}, description: 通义千问轻量版快速响应适合数据收集 }能力配置可存于 MongoDBsystem_configs集合服务读取时优先级为数据库配置 → 默认映射表 → 聚合渠道映射 → 兜底默认配置等级 2、both角色、tool_calling特性。 UI 效果前后对比修改前警告样式⚠️ 模型选择建议 当前快速模型能力等级(2)低于标准分析要求(3)。 当前深度模型能力等级(2)低于标准分析要求(4)。 建议切换为 • 快速模型通义千问 Plus • 深度模型通义千问 Max [应用推荐]类型warning黄色警告框语气强制性、警告性聚焦于你选错了修改后信息样式 模型推荐 标准分析全面评估股票 推荐模型配置 • 快速模型通义千问-Turbo • 深度模型通义千问-Plus • 快速模型基础级注重速度和成本适合数据收集 • 深度模型标准级注重质量和推理适合分析决策 [应用推荐]类型info蓝色信息框语气建议性、友好性聚焦于什么最适合你两版对比的核心差异新版先说明该分析深度的用途再给出推荐配置最后解释推荐理由用户无需先犯错再被纠正。 降级说明如果推荐接口 API 调用失败网络异常、后端未启动等前端会回退到内置的通用说明保证推荐功能不因接口故障而缺失。前端维护的generalDescriptions与五级深度一一对应SingleAnalysis.vueconst generalDescriptions: Recordnumber, string { 1: 快速分析使用基础模型即可注重速度和成本, 2: 基础分析快速模型用基础级深度模型用标准级, 3: 标准分析快速模型用基础级深度模型用标准级以上, 4: 深度分析快速模型用标准级深度模型用高级以上需要推理能力, 5: 全面分析快速模型用标准级深度模型用专业级以上强推理能力 }注意该降级文案与后端常量文件中的description语义一致两者共同构成前后端双保险的文案兜底策略。✅ 优化带来的四方面优势用户体验更好不再有警告和强制性提示改为友好的建议和说明用户可以自主决策信息更清晰直接说明分析深度的用途清楚展示推荐的模型配置并解释推荐理由能力等级定位 用途匹配保留便捷功能仍然可以一键应用推荐配置降低用户操作成本更加灵活用户可以根据实际情况选择不强制使用推荐配置适应不同使用场景如成本敏感、追求速度、混合厂商模型等。 测试与验证手动测试步骤刷新前端页面进入单股分析页面选择不同的分析深度1-5 级查看推荐提示应该显示蓝色信息框不是黄色警告框标题为 模型推荐内容包含分析深度说明和推荐配置点击应用推荐按钮模型配置应该自动切换提示消失显示成功消息接口级验证仓库自带集成测试 tests/test_model_config.py 的test_model_capability_service直接对/api/model-capabilities/recommend发起 POST 请求并断言响应结构async with session.post( f{BASE_URL}/api/model-capabilities/recommend, json{research_depth: 标准}, headers{Content-Type: application/json} ) as response: if response.status 200: result await response.json() print(f✅ 模型推荐成功:) print(f - 快速模型: {result.get(data, {}).get(quick_model)}) print(f - 深度模型: {result.get(data, {}).get(deep_model)}) print(f - 推荐理由: {result.get(data, {}).get(reason)})测试覆盖了recommend接口的请求/响应协议请求体为research_depth响应包含quick_model、deep_model、reason可作为手工验证或回归测试的参考模板。 本次修改涉及的文件清单✅frontend/src/views/Analysis/SingleAnalysis.vue修改checkModelSuitability()函数移除模型验证逻辑改为显示推荐说明✅app/routers/model_capabilities.py优化推荐理由格式使用能力等级描述简化说明文字✅docs/MODEL_RECOMMENDATION_UI_UPDATE.md新增功能说明文档 总结本次优化将强制性的模型验证改为友好的推荐说明前端从校验不达标就警告转向始终给出基于当前分析深度的正向推荐后端同步将推荐理由从等级数字对比精简为能力定位 用途匹配的清单式文案。整个链路建立在统一的五级分析深度 × 五级模型能力 × 角色/特性元数据体系之上app/constants/model_capabilities.py由 app/services/model_capability_service.py 完成候选筛选、性价比排序与聚合渠道映射最终通过 app/routers/model_capabilities.py 暴露 REST 接口前端经 frontend/src/api/modelCapabilities.ts 接入并在单股分析页以el-alert信息框呈现。该方案提升了用户体验让用户可以根据自己的需求自主选择模型配置同时保留了一键应用推荐的便捷功能。【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表