# AI模块前端API接口文档 > 更新时间:2025-11-04 > 作者:AI Assistant ## 📁 文件结构 ### TypeScript类型定义 ``` schoolNewsWeb/src/types/ai/ └── index.ts # 完整的AI模块类型定义(含19个接口) ``` ### API接口文件 ``` schoolNewsWeb/src/apis/ai/ ├── index.ts # API模块导出 ├── agent-config.ts # 智能体配置API(10个方法) ├── knowledge.ts # 知识库API(14个方法) ├── file-upload.ts # 文件上传API(8个方法) ├── chat.ts # 对话API(14个方法) └── chat-history.ts # 对话历史API(16个方法) ``` --- ## 📘 类型定义说明 ### 核心实体类型 #### 1. AiAgentConfig(智能体配置) ```typescript interface AiAgentConfig extends BaseDTO { name?: string; // 智能体名称 avatar?: string; // 头像 description?: string; // 描述 systemPrompt?: string; // 系统提示词 modelName?: string; // 模型名称 modelProvider?: string; // 模型提供商 temperature?: number; // 温度值(0.0-1.0) maxTokens?: number; // 最大tokens topP?: number; // Top P值 difyAppId?: string; // Dify应用ID difyApiKey?: string; // Dify API Key status?: number; // 状态(0禁用 1启用) } ``` #### 2. AiKnowledge(知识库) ```typescript interface AiKnowledge extends BaseDTO { name?: string; // 知识库名称 description?: string; // 描述 indexingTechnique?: string; // 索引方式 embeddingModel?: string; // Embedding模型 difyDatasetId?: string; // Dify数据集ID syncStatus?: number; // 同步状态 documentCount?: number; // 文档数量 characterCount?: number; // 字符数 creatorDept?: string; // 创建者部门 status?: number; // 状态 } ``` #### 3. AiUploadFile(上传文件) ```typescript interface AiUploadFile extends BaseDTO { knowledgeId?: string; // 知识库ID fileName?: string; // 文件名 filePath?: string; // 文件路径 fileSize?: number; // 文件大小 fileType?: string; // 文件类型 difyDocumentId?: string; // Dify文档ID uploadStatus?: number; // 上传状态 vectorStatus?: number; // 向量化状态 segmentCount?: number; // 分片数 errorMessage?: string; // 错误信息 } ``` #### 4. AiConversation(对话会话) ```typescript interface AiConversation extends BaseDTO { userID?: string; // 用户ID agentID?: string; // 智能体ID title?: string; // 会话标题 summary?: string; // 会话摘要 difyConversationId?: string;// Dify会话ID status?: number; // 状态 isFavorite?: boolean; // 是否收藏 isPinned?: boolean; // 是否置顶 messageCount?: number; // 消息数量 totalTokens?: number; // Token总数 lastMessageTime?: string; // 最后消息时间 } ``` #### 5. AiMessage(对话消息) ```typescript interface AiMessage extends BaseDTO { conversationID?: string; // 会话ID userID?: string; // 用户ID agentID?: string; // 智能体ID role?: string; // 角色(user/assistant/system) content?: string; // 消息内容 fileIDs?: string; // 关联文件ID knowledgeIDs?: string; // 引用知识ID knowledgeRefs?: string; // 知识库引用详情 tokenCount?: number; // Token数量 difyMessageId?: string; // Dify消息ID rating?: number; // 评分(1好评/-1差评) feedback?: string; // 反馈内容 } ``` ### 请求/响应类型 #### ChatRequest(对话请求) ```typescript interface ChatRequest { agentId: string; // 智能体ID(必需) conversationId?: string; // 会话ID(可选) query: string; // 用户问题(必需) knowledgeIds?: string[]; // 知识库ID列表(可选) stream?: boolean; // 是否流式返回 } ``` #### ConversationSearchParams(会话搜索) ```typescript interface ConversationSearchParams { agentId?: string; // 智能体ID keyword?: string; // 关键词 isFavorite?: boolean; // 是否收藏 startDate?: string; // 开始日期 endDate?: string; // 结束日期 pageParam?: PageParam; // 分页参数 } ``` #### StreamCallback(流式回调) ```typescript interface StreamCallback { onMessage?: (message: string) => void; // 接收消息片段 onMessageEnd?: (metadata: string) => void; // 消息结束 onComplete?: () => void; // 完成 onError?: (error: Error) => void; // 错误 } ``` --- ## 🔌 API接口说明 ### 1. 智能体配置API(aiAgentConfigApi) | 方法 | 说明 | 参数 | 返回值 | |------|------|------|--------| | `createAgent` | 创建智能体 | `AiAgentConfig` | `ResultDomain` | | `updateAgent` | 更新智能体 | `AiAgentConfig` | `ResultDomain` | | `deleteAgent` | 删除智能体 | `agentId: string` | `ResultDomain` | | `getAgentById` | 获取智能体详情 | `agentId: string` | `ResultDomain` | | `listEnabledAgents` | 获取启用的智能体列表 | - | `ResultDomain` | | `listAgents` | 获取智能体列表(支持过滤) | `filter?: Partial` | `ResultDomain` | | `pageAgents` | 分页查询智能体 | `filter, pageParam` | `PageDomain` | | `updateAgentStatus` | 更新智能体状态 | `agentId, status` | `ResultDomain` | | `updateDifyConfig` | 更新Dify配置 | `agentId, difyAppId, difyApiKey` | `ResultDomain` | | `checkNameExists` | 检查名称是否存在 | `name, excludeId?` | `ResultDomain` | ### 2. 知识库API(knowledgeApi) | 方法 | 说明 | 参数 | 返回值 | |------|------|------|--------| | `createKnowledge` | 创建知识库 | `AiKnowledge` | `ResultDomain` | | `updateKnowledge` | 更新知识库 | `AiKnowledge` | `ResultDomain` | | `deleteKnowledge` | 删除知识库 | `knowledgeId: string` | `ResultDomain` | | `getKnowledgeById` | 获取知识库详情 | `knowledgeId: string` | `ResultDomain` | | `listUserKnowledges` | 获取用户可见的知识库列表 | - | `ResultDomain` | | `listKnowledges` | 获取知识库列表(支持过滤) | `filter?: Partial` | `ResultDomain` | | `pageKnowledges` | 分页查询知识库 | `filter, pageParam` | `PageDomain` | | `syncToDify` | 同步知识库到Dify | `knowledgeId: string` | `ResultDomain` | | `syncFromDify` | 从Dify同步知识库状态 | `knowledgeId: string` | `ResultDomain` | | `setPermissions` | 设置知识库权限 | `KnowledgePermissionParams` | `ResultDomain` | | `getPermissions` | 获取知识库权限 | `knowledgeId: string` | `ResultDomain` | | `checkPermission` | 检查用户权限 | `knowledgeId: string` | `ResultDomain` | | `getStats` | 获取知识库统计 | `knowledgeId: string` | `ResultDomain` | ### 3. 文件上传API(fileUploadApi) | 方法 | 说明 | 参数 | 返回值 | |------|------|------|--------| | `uploadFile` | 上传单个文件 | `knowledgeId, file: File` | `ResultDomain` | | `batchUploadFiles` | 批量上传文件 | `knowledgeId, files: File[]` | `ResultDomain` | | `deleteFile` | 删除文件 | `fileId: string` | `ResultDomain` | | `getFileById` | 获取文件详情 | `fileId: string` | `ResultDomain` | | `listFilesByKnowledge` | 获取知识库的文件列表 | `knowledgeId: string` | `ResultDomain` | | `pageFiles` | 分页查询文件 | `filter, pageParam` | `PageDomain` | | `syncFileStatus` | 同步文件状态 | `fileId: string` | `ResultDomain` | | `batchSyncFileStatus` | 批量同步文件状态 | `fileIds: string[]` | `ResultDomain` | ### 4. 对话API(chatApi) | 方法 | 说明 | 参数 | 返回值 | |------|------|------|--------| | `streamChat` | 流式对话(SSE) | `ChatRequest, StreamCallback?` | `Promise>` | | `blockingChat` | 阻塞式对话 | `ChatRequest` | `ResultDomain` | | `stopChat` | 停止对话生成 | `messageId: string` | `ResultDomain` | | `createConversation` | 创建新会话 | `agentId, title?` | `ResultDomain` | | `getConversation` | 获取会话信息 | `conversationId: string` | `ResultDomain` | | `updateConversation` | 更新会话 | `AiConversation` | `ResultDomain` | | `deleteConversation` | 删除会话 | `conversationId: string` | `ResultDomain` | | `listUserConversations` | 获取用户会话列表 | `agentId?: string` | `ResultDomain` | | `listMessages` | 获取会话消息列表 | `conversationId: string` | `ResultDomain` | | `getMessage` | 获取单条消息 | `messageId: string` | `ResultDomain` | | `regenerateAnswer` | 重新生成回答 | `messageId, StreamCallback?` | `ResultDomain` | | `generateSummary` | 异步生成会话摘要 | `conversationId: string` | `ResultDomain` | | `rateMessage` | 评价消息 | `messageId, rating, feedback?` | `ResultDomain` | ### 5. 对话历史API(chatHistoryApi) | 方法 | 说明 | 参数 | 返回值 | |------|------|------|--------| | `pageUserConversations` | 分页查询用户会话 | `ConversationSearchParams` | `PageDomain` | | `searchConversations` | 搜索会话(全文) | `MessageSearchParams` | `PageDomain` | | `searchMessages` | 搜索消息内容 | `MessageSearchParams` | `PageDomain` | | `toggleFavorite` | 收藏/取消收藏 | `conversationId, isFavorite` | `ResultDomain` | | `togglePin` | 置顶/取消置顶 | `conversationId, isPinned` | `ResultDomain` | | `batchDeleteConversations` | 批量删除会话 | `conversationIds: string[]` | `ResultDomain` | | `getUserChatStatistics` | 获取用户对话统计 | `userId?: string` | `ResultDomain` | | `getConversationStatistics` | 获取会话详细统计 | `conversationId: string` | `ResultDomain` | | `exportConversationAsMarkdown` | 导出为Markdown | `conversationId: string` | `ResultDomain` | | `exportConversationAsJson` | 导出为JSON | `conversationId: string` | `ResultDomain` | | `batchExportConversations` | 批量导出会话 | `BatchExportParams` | `ResultDomain` | | `downloadExport` | 下载导出文件 | `conversationId, format` | `void` | | `batchDownloadExport` | 批量下载导出 | `conversationIds, format` | `void` | | `cleanExpiredConversations` | 清理过期会话 | `days: number` | `ResultDomain` | | `getRecentConversations` | 获取最近对话 | `limit?: number` | `ResultDomain` | | `getPopularConversations` | 获取热门对话 | `limit?: number` | `ResultDomain` | --- ## 💡 使用示例 ### 1. 创建智能体并进行流式对话 ```typescript import { aiAgentConfigApi, chatApi } from '@/apis/ai'; // 1. 创建智能体 const agentResult = await aiAgentConfigApi.createAgent({ name: '智能助手', description: '帮助用户解答问题', systemPrompt: '你是一个智能助手...', modelName: 'gpt-3.5-turbo', status: 1 }); const agentId = agentResult.data?.ID; // 2. 流式对话 await chatApi.streamChat( { agentId: agentId!, query: '你好,请介绍一下你自己', stream: true }, { onMessage: (chunk) => { console.log('接收到消息片段:', chunk); }, onMessageEnd: (metadata) => { console.log('消息结束,元数据:', metadata); }, onComplete: () => { console.log('对话完成'); }, onError: (error) => { console.error('对话出错:', error); } } ); ``` ### 2. 创建知识库并上传文件 ```typescript import { knowledgeApi, fileUploadApi } from '@/apis/ai'; // 1. 创建知识库 const knowledgeResult = await knowledgeApi.createKnowledge({ name: '产品文档知识库', description: '包含所有产品相关文档', indexingTechnique: 'high_quality', embeddingModel: 'text-embedding-ada-002' }); const knowledgeId = knowledgeResult.data?.ID; // 2. 上传文件 const files = document.querySelector('input[type="file"]').files; const uploadResult = await fileUploadApi.batchUploadFiles( knowledgeId!, Array.from(files) ); console.log('上传成功:', uploadResult.data); ``` ### 3. 搜索对话历史 ```typescript import { chatHistoryApi } from '@/apis/ai'; // 搜索包含关键词的会话 const searchResult = await chatHistoryApi.pageUserConversations({ keyword: '产品', isFavorite: true, startDate: '2024-01-01', pageParam: { pageNumber: 1, pageSize: 20 } }); console.log('搜索结果:', searchResult.dataList); ``` ### 4. 导出对话记录 ```typescript import { chatHistoryApi } from '@/apis/ai'; // 导出为Markdown const markdownResult = await chatHistoryApi.exportConversationAsMarkdown( conversationId ); // 创建下载链接 const blob = new Blob([markdownResult.data!], { type: 'text/markdown' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `conversation_${conversationId}.md`; a.click(); // 或者直接使用下载方法 chatHistoryApi.downloadExport(conversationId, 'markdown'); ``` --- ## 📊 统计数据 | 类别 | 数量 | 说明 | |------|------|------| | **TypeScript接口** | 19个 | 完整的类型定义 | | **API模块** | 5个 | 智能体、知识库、文件、对话、历史 | | **API方法** | 62个 | 涵盖所有业务功能 | | **文件总数** | 6个 | 1个类型文件 + 5个API文件 | --- ## ✅ 完成清单 - [x] TypeScript类型定义完整 - [x] 智能体配置API - [x] 知识库管理API - [x] 文件上传API - [x] 对话功能API(含流式SSE) - [x] 对话历史API - [x] 搜索功能API - [x] 统计功能API - [x] 导出功能API - [x] 权限控制API - [x] 向后兼容处理 --- ## 📝 备注 1. **SSE流式对话**:使用EventSource实现,支持实时消息推送 2. **文件上传**:支持FormData multipart/form-data格式 3. **分页查询**:统一使用PageParam和PageDomain 4. **权限控制**:集成在知识库API中,支持部门和角色级别 5. **导出功能**:支持Markdown和JSON两种格式,支持批量导出 6. **统计分析**:用户级和会话级双维度统计 7. **向后兼容**:保留了conversationApi和messageApi别名 --- **前端API接口已全部完成!可以直接在Vue组件中使用。** ✨