Files
map-client-vue/docs/model-selection-debug.md
douboer cb2f9ea76f feat: 增强模型选择日志和验证
- 在 chatService 中添加模型选择详细日志
- 在 modelServiceManager 中添加请求/响应确认日志
- 创建模型选择验证指南文档
- 帮助用户确认所选模型是否被正确使用

新增日志:
- 🎯 用户选择的模型
-  找到匹配服务
- 🔍 最终选择确认
- 📋 请求体 model 字段
- �� 最终发送确认
-  API 响应模型确认

用户现在可以在控制台清晰看到:
- 选择了哪个模型
- 找到了哪个服务
- 实际发送了什么模型参数
- API 返回了什么模型
- 请求模型和响应模型是否一致
2025-10-15 10:06:42 +08:00

7.8 KiB
Raw Blame History

模型选择验证指南

问题:切换模型后回答没有变化?

这个问题可能有以下几个原因,我已经添加了详细的日志来帮助你诊断。


🔍 如何确认模型被正确使用

方法 1: 查看控制台日志 (推荐)

打开浏览器开发者工具 (F12),切换到 Console 标签,发送一条消息后查看日志:

关键日志标记

  1. 用户选择阶段
🎯 [callModelStream] 用户选择的模型: qwen-turbo-latest
✅ [callModelStream] 找到匹配服务: 阿里云通义千问
  1. 最终确认阶段
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 [callModelStream] 最终选择:
   服务: 阿里云通义千问 (dashscope)
   模型: qwen-turbo-latest
   MCP: 未选择
   工具: 0 个
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1. 请求准备阶段
🎯 [makeChatRequestStream] 准备请求参数:
   服务类型: dashscope
   服务名称: 阿里云通义千问
   使用模型: qwen-turbo-latest
   消息数量: 2
   工具数量: 0
  1. 最终发送阶段
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 [最终确认] 即将发送请求:
   模型: qwen-turbo-latest
   服务: 阿里云通义千问 (dashscope)
   URL: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1. API 响应确认
✅ [响应确认] API 返回的模型: qwen-turbo-latest
   请求的模型: qwen-turbo-latest
   模型匹配: ✓ 一致

方法 2: 测试不同模型的特性

测试 qwen-turbo-latest (快速响应)

提问: "用一句话介绍你自己"
预期: 快速响应,简洁回答

测试 qwq-plus (推理能力)

提问: "如果 A>BB>C那么 A 和 C 的关系是什么?请详细说明推理过程。"
预期: 详细的逻辑推理步骤

测试 qwen-long (长上下文)

提问: "总结一下我们之前的所有对话"
预期: 能够回顾更多历史消息

测试 qwen3-omni-flash (快速响应)

提问: "快速回答1+1=?"
预期: 极速响应

🐛 常见问题排查

问题 1: 模型显示但没有变化

检查点 1: 确认服务配置正确

// 在控制台执行
const providers = JSON.parse(localStorage.getItem('model-providers') || '[]')
const aliyun = providers.find(p => p.type === 'dashscope')
console.log('阿里云配置:', aliyun)
console.log('可用模型:', aliyun?.models)

检查点 2: 确认模型列表包含目标模型

// 在控制台执行
const providers = JSON.parse(localStorage.getItem('model-providers') || '[]')
providers.forEach(p => {
  console.log(`${p.name} (${p.type}):`, p.models)
})

检查点 3: 查看控制台是否有错误

  • 红色错误信息
  • 黄色警告信息
  • 404/401/403 等 HTTP 错误

问题 2: 所有模型回答都一样

可能原因:

  1. 服务类型配置错误: 检查服务类型是否为 dashscope
  2. Base URL 错误: 应该是 https://dashscope.aliyuncs.com/compatible-mode/v1
  3. 模型参数未传递: 查看日志中的 📋 [makeChatRequestStream] 请求体 model 字段
  4. API 不支持该模型: 某些 API Key 可能没有权限使用特定模型

问题 3: API 返回模型不一致

如果看到这样的日志:

✅ [响应确认] API 返回的模型: gpt-3.5-turbo
   请求的模型: qwen-turbo-latest
   模型匹配: ✗ 不一致!

可能原因:

  1. 服务配置错误: 可能连接到了错误的服务
  2. 模型映射问题: API 可能自动映射到了其他模型
  3. API Key 权限: 该 API Key 可能无权使用指定模型

🔧 修复步骤

步骤 1: 验证服务配置

// 在浏览器控制台执行
const providers = JSON.parse(localStorage.getItem('model-providers') || '[]')
const aliyun = providers.find(p => p.type === 'dashscope')

console.log('配置检查:')
console.log('✓ 服务类型:', aliyun.type)
console.log('✓ Base URL:', aliyun.baseUrl)
console.log('✓ API Key:', aliyun.apiKey?.substring(0, 10) + '...')
console.log('✓ 模型列表:', aliyun.models)
console.log('✓ 默认模型:', aliyun.defaultModel)
console.log('✓ 启用状态:', aliyun.enabled)

步骤 2: 重新配置模型列表

如果模型列表不正确:

// 在浏览器控制台执行
const providers = JSON.parse(localStorage.getItem('model-providers') || '[]')
const aliyunIndex = providers.findIndex(p => p.type === 'dashscope')

if (aliyunIndex >= 0) {
  // 更新模型列表
  providers[aliyunIndex].models = [
    'qwen-turbo-latest',
    'qwq-plus',
    'qwen-long',
    'qwen3-omni-flash'
  ]
  
  // 保存
  localStorage.setItem('model-providers', JSON.stringify(providers))
  
  console.log('✅ 模型列表已更新,请刷新页面')
  setTimeout(() => location.reload(), 2000)
}

步骤 3: 测试连接

  1. 进入"模型服务"设置
  2. 找到阿里云服务
  3. 点击"测试连接"
  4. 查看是否成功

步骤 4: 清空缓存重试

// 清空对话历史
localStorage.removeItem('chat-conversations')
localStorage.removeItem('chat-topics')

// 刷新页面
location.reload()

📊 预期日志输出示例

正常情况 (切换模型成功)

🎯 [callModelStream] 用户选择的模型: qwq-plus
✅ [callModelStream] 找到匹配服务: 阿里云通义千问
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 [callModelStream] 最终选择:
   服务: 阿里云通义千问 (dashscope)
   模型: qwq-plus
   MCP: 未选择
   工具: 0 个
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 [makeChatRequestStream] 准备请求参数:
   服务类型: dashscope
   服务名称: 阿里云通义千问
   使用模型: qwq-plus
   消息数量: 2
   工具数量: 0
📋 [makeChatRequestStream] 请求体 model 字段: qwq-plus
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 [最终确认] 即将发送请求:
   模型: qwq-plus
   服务: 阿里云通义千问 (dashscope)
   URL: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ [响应确认] API 返回的模型: qwq-plus
   请求的模型: qwq-plus
   模型匹配: ✓ 一致

异常情况 (服务未找到)

🎯 [callModelStream] 用户选择的模型: unknown-model
⚠️ [callModelStream] 未找到包含该模型的服务,使用默认服务

💡 使用建议

  1. 首次使用: 先用日志确认模型是否正确传递
  2. 测试对比: 用不同模型测试相同问题,对比回答差异
  3. 性能对比: 观察不同模型的响应速度
  4. 功能测试: 用特定模型测试其特长(如 qwq-plus 测试推理)

🆘 仍然有问题?

如果以上方法都无法解决问题,请:

  1. 截图控制台完整日志

  2. 记录以下信息:

    • 选择的模型名称
    • 服务配置(隐藏 API Key
    • 完整的控制台输出
    • 问题描述
  3. 检查以下文件:

    • /web/src/services/chatService.ts
    • /web/src/services/modelServiceManager.ts
    • localStorage 中的 model-providers

现在刷新页面,选择不同的模型,查看控制台日志,你应该能看到完整的模型选择和使用流程! 🔍