- 在 chatService 中添加模型选择详细日志 - 在 modelServiceManager 中添加请求/响应确认日志 - 创建模型选择验证指南文档 - 帮助用户确认所选模型是否被正确使用 新增日志: - 🎯 用户选择的模型 - ✅ 找到匹配服务 - 🔍 最终选择确认 - 📋 请求体 model 字段 - �� 最终发送确认 - ✅ API 响应模型确认 用户现在可以在控制台清晰看到: - 选择了哪个模型 - 找到了哪个服务 - 实际发送了什么模型参数 - API 返回了什么模型 - 请求模型和响应模型是否一致
273 lines
7.8 KiB
Markdown
273 lines
7.8 KiB
Markdown
# 模型选择验证指南
|
||
|
||
## 问题:切换模型后回答没有变化?
|
||
|
||
这个问题可能有以下几个原因,我已经添加了详细的日志来帮助你诊断。
|
||
|
||
---
|
||
|
||
## 🔍 如何确认模型被正确使用
|
||
|
||
### 方法 1: 查看控制台日志 (推荐)
|
||
|
||
打开浏览器开发者工具 (F12),切换到 Console 标签,发送一条消息后查看日志:
|
||
|
||
#### 关键日志标记
|
||
|
||
1. **用户选择阶段**
|
||
```
|
||
🎯 [callModelStream] 用户选择的模型: qwen-turbo-latest
|
||
✅ [callModelStream] 找到匹配服务: 阿里云通义千问
|
||
```
|
||
|
||
2. **最终确认阶段**
|
||
```
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
🔍 [callModelStream] 最终选择:
|
||
服务: 阿里云通义千问 (dashscope)
|
||
模型: qwen-turbo-latest
|
||
MCP: 未选择
|
||
工具: 0 个
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
```
|
||
|
||
3. **请求准备阶段**
|
||
```
|
||
🎯 [makeChatRequestStream] 准备请求参数:
|
||
服务类型: dashscope
|
||
服务名称: 阿里云通义千问
|
||
使用模型: qwen-turbo-latest
|
||
消息数量: 2
|
||
工具数量: 0
|
||
```
|
||
|
||
4. **最终发送阶段**
|
||
```
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
🚀 [最终确认] 即将发送请求:
|
||
模型: qwen-turbo-latest
|
||
服务: 阿里云通义千问 (dashscope)
|
||
URL: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
```
|
||
|
||
5. **API 响应确认**
|
||
```
|
||
✅ [响应确认] API 返回的模型: qwen-turbo-latest
|
||
请求的模型: qwen-turbo-latest
|
||
模型匹配: ✓ 一致
|
||
```
|
||
|
||
### 方法 2: 测试不同模型的特性
|
||
|
||
#### 测试 qwen-turbo-latest (快速响应)
|
||
```
|
||
提问: "用一句话介绍你自己"
|
||
预期: 快速响应,简洁回答
|
||
```
|
||
|
||
#### 测试 qwq-plus (推理能力)
|
||
```
|
||
提问: "如果 A>B,B>C,那么 A 和 C 的关系是什么?请详细说明推理过程。"
|
||
预期: 详细的逻辑推理步骤
|
||
```
|
||
|
||
#### 测试 qwen-long (长上下文)
|
||
```
|
||
提问: "总结一下我们之前的所有对话"
|
||
预期: 能够回顾更多历史消息
|
||
```
|
||
|
||
#### 测试 qwen3-omni-flash (快速响应)
|
||
```
|
||
提问: "快速回答:1+1=?"
|
||
预期: 极速响应
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 常见问题排查
|
||
|
||
### 问题 1: 模型显示但没有变化
|
||
|
||
**检查点 1**: 确认服务配置正确
|
||
```javascript
|
||
// 在控制台执行
|
||
const providers = JSON.parse(localStorage.getItem('model-providers') || '[]')
|
||
const aliyun = providers.find(p => p.type === 'dashscope')
|
||
console.log('阿里云配置:', aliyun)
|
||
console.log('可用模型:', aliyun?.models)
|
||
```
|
||
|
||
**检查点 2**: 确认模型列表包含目标模型
|
||
```javascript
|
||
// 在控制台执行
|
||
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: 验证服务配置
|
||
|
||
```javascript
|
||
// 在浏览器控制台执行
|
||
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: 重新配置模型列表
|
||
|
||
如果模型列表不正确:
|
||
|
||
```javascript
|
||
// 在浏览器控制台执行
|
||
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: 清空缓存重试
|
||
|
||
```javascript
|
||
// 清空对话历史
|
||
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`
|
||
|
||
---
|
||
|
||
**现在刷新页面,选择不同的模型,查看控制台日志,你应该能看到完整的模型选择和使用流程!** 🔍✨
|