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