OL-LearnPlatform-Frontend/docs/ai-model-api-debug.md
小张 5455490811 feat: 集成AI知识库管理系统
- 新增AI知识库管理功能模块
- 实现知识库的增删改查功能
- 实现文档管理(文本/文件/链接)
- 实现向量化功能和测试
- 支持卡片式布局展示
- 完整的响应式设计
- 修复所有TypeScript类型错误
- 添加依赖:marked@^16.4.0, less@^4.2.2
- 打包测试通过

主要文件:
- src/views/teacher/ai-knowledge-naive-ui/ - AI知识库管理模块
- docs/ - 相关API文档
- package.json - 新增依赖配置
2025-10-14 17:33:25 +08:00

149 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`: 添加测试页面路由