OL-LearnPlatform-Frontend/docs/ai-model-api-debug.md

149 lines
3.6 KiB
Markdown
Raw Normal View History

# AI模型字典API调试指南
## 问题描述
在调用AI模型字典API时遇到错误
```
Sign签名校验失败时间戳为空
```
## 已实施的修复措施
### 1. **添加时间戳参数到URL**
```typescript
// 修改前
return request.get('/sys/dict/getDictItems/airag_model%20where%20model_type%20=%20\'LLM\',name,id')
// 修改后
const timestamp = Date.now()
return request.get(`/sys/dict/getDictItems/airag_model%20where%20model_type%20=%20'LLM',name,id?_t=${timestamp}`)
```
### 2. **增强请求头时间戳**
```typescript
// 添加多种时间戳格式
const timestamp = Date.now().toString()
config.headers['X-Request-Time'] = timestamp
config.headers['timestamp'] = timestamp
config.headers['X-Timestamp'] = timestamp
```
### 3. **增强错误调试**
- 在AiAppSetting.vue中添加详细的调试日志
- 在AiModelTest.vue中添加直接请求测试功能
- 显示完整的错误信息和响应数据
## 测试步骤
### 1. 访问测试页面
```
http://localhost:5173/ai-model-test
```
### 2. 检查登录状态
- 确保用户已登录并有有效的token
- 在测试页面中查看"用户Token"状态
### 3. 测试API调用
1. 点击"加载AI模型列表"按钮使用封装的API
2. 点击"直接请求测试"按钮使用原生axios
3. 查看控制台日志和响应数据
### 4. 检查AI应用设置
1. 访问 `/ai/app` 页面
2. 点击任意AI应用卡片
3. 切换到"模型配置"选项卡
4. 查看控制台日志
## 调试信息
### 请求信息
- **URL**: `/sys/dict/getDictItems/airag_model%20where%20model_type%20=%20'LLM',name,id?_t={timestamp}`
- **方法**: GET
- **Base URL**: `/jeecgboot` (或环境变量配置)
### 请求头
```javascript
{
'Content-Type': 'application/json',
'X-Access-Token': '{user_token}',
'X-Request-Time': '{timestamp}',
'timestamp': '{timestamp}',
'X-Timestamp': '{timestamp}'
}
```
### 预期响应格式
```json
{
"success": true,
"message": "",
"code": 0,
"result": [
{
"value": "1890232564262739969",
"text": "OpenAI",
"color": null,
"jsonObject": null,
"label": "OpenAI",
"title": "OpenAI"
}
],
"timestamp": 1759136645858
}
```
## 可能的解决方案
### 1. **检查后端签名算法**
如果问题仍然存在,可能需要:
- 检查后端期望的签名算法
- 添加必要的签名参数
- 确认时间戳格式要求
### 2. **检查接口权限**
- 确认该接口是否需要特定的用户权限
- 检查token是否有效
- 验证用户角色权限
### 3. **检查接口路径**
- 确认接口路径是否正确
- 检查URL编码是否正确
- 验证查询参数格式
## 备用方案
如果API调用仍然失败系统会自动使用备用数据
```typescript
modelOptions.value = [
{ label: 'GPT-3.5 Turbo', value: 'gpt-3.5-turbo' },
{ label: 'GPT-4', value: 'gpt-4' },
{ label: 'Claude-3', value: 'claude-3' }
]
```
## 下一步调试
1. **查看网络请求**
- 打开浏览器开发者工具
- 查看Network选项卡
- 检查实际发送的请求和响应
2. **检查后端日志**
- 查看后端服务器日志
- 确认请求是否到达后端
- 检查签名验证逻辑
3. **联系后端开发**
- 确认接口的正确调用方式
- 获取签名算法详细信息
- 确认必需的请求参数
## 文件修改记录
- `src/api/modules/system.ts`: 添加字典API和时间戳参数
- `src/api/request.ts`: 增强时间戳请求头
- `src/views/Ai/component/AiAppSetting.vue`: 添加详细调试日志
- `src/views/AiModelTest.vue`: 创建专门的测试页面
- `src/router/index.ts`: 添加测试页面路由