
- 新增AI知识库管理功能模块 - 实现知识库的增删改查功能 - 实现文档管理(文本/文件/链接) - 实现向量化功能和测试 - 支持卡片式布局展示 - 完整的响应式设计 - 修复所有TypeScript类型错误 - 添加依赖:marked@^16.4.0, less@^4.2.2 - 打包测试通过 主要文件: - src/views/teacher/ai-knowledge-naive-ui/ - AI知识库管理模块 - docs/ - 相关API文档 - package.json - 新增依赖配置
149 lines
3.6 KiB
Markdown
149 lines
3.6 KiB
Markdown
# 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`: 添加测试页面路由
|