
- 新增AI知识库管理功能模块 - 实现知识库的增删改查功能 - 实现文档管理(文本/文件/链接) - 实现向量化功能和测试 - 支持卡片式布局展示 - 完整的响应式设计 - 修复所有TypeScript类型错误 - 添加依赖:marked@^16.4.0, less@^4.2.2 - 打包测试通过 主要文件: - src/views/teacher/ai-knowledge-naive-ui/ - AI知识库管理模块 - docs/ - 相关API文档 - package.json - 新增依赖配置
235 lines
5.4 KiB
Markdown
235 lines
5.4 KiB
Markdown
# AI模型字典API集成
|
||
|
||
## 概述
|
||
|
||
本文档说明如何在AI应用设置弹窗中集成真实的AI模型字典API,替换原有的模拟数据。
|
||
|
||
## API接口信息
|
||
|
||
### 获取AI模型字典
|
||
- **接口地址**: `/sys/dict/getDictItems/airag_model%20where%20model_type%20=%20'LLM',name,id`
|
||
- **请求方法**: GET
|
||
- **接口说明**: 获取LLM类型的AI模型字典数据
|
||
|
||
### 响应格式
|
||
```json
|
||
{
|
||
"success": true,
|
||
"message": "",
|
||
"code": 0,
|
||
"result": [
|
||
{
|
||
"value": "1890232564262739969",
|
||
"text": "OpenAI",
|
||
"color": null,
|
||
"jsonObject": null,
|
||
"label": "OpenAI",
|
||
"title": "OpenAI"
|
||
},
|
||
{
|
||
"value": "1897481367743143938",
|
||
"text": "deepseek",
|
||
"color": null,
|
||
"jsonObject": null,
|
||
"label": "deepseek",
|
||
"title": "deepseek"
|
||
},
|
||
{
|
||
"value": "1897883052995006466",
|
||
"text": "智谱",
|
||
"color": null,
|
||
"jsonObject": null,
|
||
"label": "智谱",
|
||
"title": "智谱"
|
||
},
|
||
{
|
||
"value": "1970031008335876097",
|
||
"text": "测试",
|
||
"color": null,
|
||
"jsonObject": null,
|
||
"label": "测试",
|
||
"title": "测试"
|
||
}
|
||
],
|
||
"timestamp": 1759136645858
|
||
}
|
||
```
|
||
|
||
## 实现的功能
|
||
|
||
### 1. **API模块扩展** (`src/api/modules/system.ts`)
|
||
|
||
添加了字典相关的API接口:
|
||
|
||
```typescript
|
||
// 字典项接口
|
||
export interface DictItem {
|
||
value: string
|
||
text: string
|
||
color: string | null
|
||
jsonObject: any | null
|
||
label: string
|
||
title: string
|
||
}
|
||
|
||
export const SystemApi = {
|
||
// 获取字典项
|
||
getDictItems(dictCode: string, params?: string): Promise<ApiResponse<DictItem[]>>
|
||
|
||
// 获取AI模型字典项(LLM类型)
|
||
getAiModelDict(): Promise<ApiResponse<DictItem[]>>
|
||
}
|
||
```
|
||
|
||
### 2. **AI应用设置组件更新** (`src/views/Ai/component/AiAppSetting.vue`)
|
||
|
||
修改了 `loadModelOptions` 函数:
|
||
|
||
```typescript
|
||
// 加载模型选项
|
||
const loadModelOptions = async () => {
|
||
loadingModels.value = true
|
||
try {
|
||
const response = await SystemApi.getAiModelDict()
|
||
if (response.data.code === 200 || response.data.code === 0) {
|
||
modelOptions.value = response.data.data.map(item => ({
|
||
label: item.text,
|
||
value: item.value
|
||
}))
|
||
console.log('✅ AI模型列表加载成功:', modelOptions.value)
|
||
} else {
|
||
throw new Error(response.data.message || '获取模型列表失败')
|
||
}
|
||
} catch (error: any) {
|
||
console.error('❌ 加载模型列表失败:', error)
|
||
message.error(error.message || '加载模型列表失败')
|
||
|
||
// 失败时使用备用数据
|
||
modelOptions.value = [
|
||
{ label: 'GPT-3.5 Turbo', value: 'gpt-3.5-turbo' },
|
||
{ label: 'GPT-4', value: 'gpt-4' },
|
||
{ label: 'Claude-3', value: 'claude-3' }
|
||
]
|
||
} finally {
|
||
loadingModels.value = false
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. **测试页面** (`src/views/AiModelTest.vue`)
|
||
|
||
创建了专门的测试页面来验证API调用:
|
||
- 实时加载AI模型数据
|
||
- 显示API响应状态
|
||
- 测试选择器功能
|
||
- 查看原始数据
|
||
|
||
## 使用流程
|
||
|
||
### 1. 点击AI应用卡片
|
||
在AI应用列表页面,点击任意应用卡片:
|
||
```vue
|
||
<n-card
|
||
class="app-card"
|
||
hoverable
|
||
@click="handleEditApp(item)"
|
||
>
|
||
```
|
||
|
||
### 2. 打开设置弹窗
|
||
系统会调用 `handleEditApp` 函数,打开应用设置弹窗:
|
||
```typescript
|
||
const handleEditApp = (app: AiApp) => {
|
||
isEditMode.value = true
|
||
currentApp.value = { ...app }
|
||
showSettingModal.value = true
|
||
}
|
||
```
|
||
|
||
### 3. 自动加载模型数据
|
||
弹窗打开时,会自动调用 `loadModelOptions()` 函数加载AI模型数据:
|
||
```typescript
|
||
onMounted(() => {
|
||
loadModelOptions() // 自动加载模型选项
|
||
loadFlowOptions()
|
||
loadSelectedKnowledges()
|
||
})
|
||
```
|
||
|
||
### 4. 显示模型选择器
|
||
在"模型配置"选项卡中,用户可以看到从后端加载的真实AI模型列表:
|
||
- OpenAI
|
||
- deepseek
|
||
- 智谱
|
||
- 测试
|
||
|
||
## 测试方法
|
||
|
||
### 1. 访问测试页面
|
||
```
|
||
http://localhost:5173/ai-model-test
|
||
```
|
||
|
||
### 2. 测试功能
|
||
- 点击"加载AI模型列表"按钮
|
||
- 查看加载状态和结果
|
||
- 测试选择器功能
|
||
- 查看原始API响应数据
|
||
|
||
### 3. 验证AI应用设置
|
||
- 访问 `/ai/app` 页面
|
||
- 点击任意AI应用卡片
|
||
- 在弹窗中切换到"模型配置"选项卡
|
||
- 验证AI模型下拉选择器是否显示真实数据
|
||
|
||
## 错误处理
|
||
|
||
系统包含完整的错误处理机制:
|
||
|
||
1. **网络请求失败**: 显示错误消息并使用备用数据
|
||
2. **API响应错误**: 解析错误信息并提示用户
|
||
3. **数据格式错误**: 容错处理,确保界面正常显示
|
||
4. **加载状态**: 显示加载指示器,提升用户体验
|
||
|
||
## 数据映射
|
||
|
||
API返回的字典项会被映射为选择器选项:
|
||
|
||
```typescript
|
||
// API数据格式
|
||
{
|
||
"value": "1890232564262739969",
|
||
"text": "OpenAI",
|
||
"label": "OpenAI",
|
||
"title": "OpenAI"
|
||
}
|
||
|
||
// 映射为选择器选项
|
||
{
|
||
label: "OpenAI", // 显示文本
|
||
value: "1890232564262739969" // 选择值
|
||
}
|
||
```
|
||
|
||
## 扩展说明
|
||
|
||
### 添加其他字典类型
|
||
可以在 `SystemApi` 中添加其他字典类型的获取方法:
|
||
|
||
```typescript
|
||
// 获取其他类型的字典
|
||
getOtherDict(): Promise<ApiResponse<DictItem[]>> {
|
||
return request.get('/sys/dict/getDictItems/other_dict_code')
|
||
}
|
||
```
|
||
|
||
### 自定义字典查询
|
||
使用通用的 `getDictItems` 方法:
|
||
|
||
```typescript
|
||
// 自定义查询条件
|
||
const response = await SystemApi.getDictItems('dict_code', 'custom_params')
|
||
```
|
||
|
||
这样就完成了AI模型字典API的集成,用户在AI应用设置弹窗中可以看到真实的AI模型数据了!
|