Skip to content

AI 对话 PRD

文档信息

项目内容
产品名称PMForge - AI 对话
文档版本v2.0
创建日期2026-09-22
最后更新2026-09-24
文档状态评审中
优先级P0

一、功能概述

1.1 功能定位

AI 对话是 PMForge 平台的"智能客服中心"——就像给每个用户配了一位 24 小时在线的全能顾问,随时可以请教问题、获取建议。本模块基于 Spring AI 框架集成 16+ 主流 AI 服务商(OpenAI、Azure OpenAI、文心一言、智谱AI、通义千问、豆包、混元、讯飞星火、百川、DeepSeek、Gemini、Claude、Minimax、Moonshot、SiliconFlow、Ollama),为用户提供多模型、多角色、流式输出的智能对话能力。模块涵盖后台管理端的模型配置 → 会话管理 → 角色预设 → 配额管控 → 统计分析,以及用户前台的对话界面 → 角色广场 → 历史管理 → 分享导出完整交互链路。

通俗理解:把 AI 对话想象成一家"智能咨询公司"。后台管理员是"公司运营方"——负责聘请哪些"顾问"(接入 AI 模型)、设定服务规则(配额管控)、培训"顾问人设"(角色预设)。前台用户是"来访客户"——选择一位顾问(选模型+选角色),坐下来面对面交流(流式对话),聊完还能保存聊天记录(历史管理)或分享给同事(分享导出)。

本模块是平台的核心智能交互入口,也是 AI 写作、AI 绘画、AI 音乐、知识库等 AI 子模块的基础能力提供方——它们共享同一套模型配置和调用链路。

1.2 目标用户

用户类型核心诉求使用频率
超级管理员统一管理 AI 服务商配置,监控全局 Token 消耗与费用初期高频,日常中频
租户管理员为租户配置可用模型,设置使用配额,控制成本每周中频
运营人员维护角色广场内容,分析用户对话偏好,优化体验每日中频
普通用户与 AI 高效对话,快速获得答案,管理对话历史每日高频
开发者测试模型连通性,调试提示词,评估模型效果初期高频,日常中频

1.3 业务价值

价值维度具体收益衡量指标
降低 AI 接入成本统一抽象层,新增服务商无需改代码新服务商接入 < 30 分钟
提升交互体验流式输出 + 多角色,类 ChatGPT 体验首字延迟 < 3 秒
满足垂直场景角色预设覆盖项目管理、编程、写作等角色使用率 > 60%
成本可控配额管理 + Token 统计,防止费用失控月费用偏差 < 10%
数据安全支持 Ollama 本地部署,数据不出域敏感场景 100% 覆盖
运营决策全量对话数据 + 统计分析数据报表 T+1 可用

1.4 功能范围

功能分类后台管理端前台用户端
AI 模型管理(CRUD)
模型连通性测试
对话会话管理
对话消息管理
AI 全局配置
角色预设管理
对话配额管理
AI 统计分析
AI 对话界面(流式)
历史对话管理
对话搜索
消息交互(复制/重新生成/编辑)
角色广场
自定义角色
对话分享/导出

二、用户场景

2.1 用户角色

角色描述核心诉求
系统管理员(老周)负责 AI 模型接入与全局配置快速接入新模型、验证连通性、一键启停
租户管理员(老张)负责租户内 AI 使用管控控制用量和费用、查看租户统计
运营人员(小陈)负责角色广场内容运营快速创建和上线新角色、分析用户偏好
产品经理(小刘)日常使用 AI 对话解决工作问题获得专业准确的回答、保存和复用对话
开发者(小李)技术调试和模型评估测试模型效果、调试本地 Ollama 模型

2.2 使用场景

场景1:管理员老周接入新的 AI 模型

  • 用户:系统管理员老周
  • 前置条件:公司已采购 DeepSeek API 服务,获得 API Key
  • 操作流程
    1. 老周登录后台 → 进入"AI 管理 → 模型管理"页面
    2. 点击"新增模型" → 选择服务商"DeepSeek"
    3. 系统自动填充 Base URL(https://api.deepseek.com
    4. 填写模型名称"DeepSeek-V3"、模型标识"deepseek-chat"、API Key
    5. 设置温度 0.7、最大 Token 数 4096
    6. 点击"测试"按钮 → 系统发送"你好" → 3 秒内收到 AI 回复
    7. 测试通过 → 点击"保存" → 手动启用该模型
    8. 用户端模型下拉列表即时出现"DeepSeek-V3"
  • 期望结果:配置流程 < 3 分钟完成,测试即时验证配置正确性
  • 验收标准
    1. AC1:选择服务商后 Base URL 自动填充,人工可修改
    2. AC2:测试响应时间 ≤ 30 秒,展示回复内容、耗时、Token 消耗
    3. AC3:API Key 加密存储,列表页脱敏显示(仅显示前4后4位)
    4. AC4:新增模型默认"禁用"状态,需手动启用
    5. AC5:启用后用户端 < 5 秒可见新模型

场景2:产品经理小刘与 AI 进行专业对话

  • 用户:产品经理小刘
  • 前置条件:至少有一个 AI 模型处于启用状态
  • 操作流程
    1. 小刘进入前台"AI 对话"页面
    2. 点击"角色广场" → 选择"项目管理顾问"角色
    3. 系统自动创建新对话 → 加载角色的系统提示词和推荐模型
    4. 输入"如何制定项目风险管理计划?" → 按 Enter 发送
    5. AI 以"项目管理顾问"身份流式输出回答(打字机效果)
    6. 小刘追问"能给出风险登记册的模板吗?" → AI 继续回答
    7. 对话结束 → 小刘点击"复制"按钮复制回答内容
    8. 系统自动提取首次回复前 20 字作为对话标题
  • 期望结果:角色专业度高,流式输出流畅,内容可直接复用
  • 验收标准
    1. AC1:流式输出首字延迟 ≤ 3 秒
    2. AC2:流式字符间隔 ≤ 100ms,无卡顿感
    3. AC3:回复内容支持 Markdown 渲染(代码高亮、表格、列表)
    4. AC4:角色的系统提示词正确注入,回答风格与角色匹配
    5. AC5:上下文自动携带最近 N 条消息,多轮对话连贯

场景3:运营小陈创建角色并发布到角色广场

  • 用户:运营人员小陈
  • 前置条件:小陈拥有角色管理权限
  • 操作流程
    1. 小陈发现用户频繁询问研学相关问题
    2. 进入后台"AI 管理 → 角色管理" → 点击"新增角色"
    3. 填写角色名称"研学导师"、描述"专注研学课程设计与教学指导"
    4. 编写系统提示词"你是一位资深研学导师,擅长..."
    5. 上传角色头像 → 设置推荐模型和温度参数
    6. 保存并启用 → 用户在前台"角色广场"即可看到新角色
    7. 角色卡片展示:头像、名称、描述、使用人数
  • 期望结果:角色创建简单高效,上线后用户立即可用
  • 验收标准
    1. AC1:系统提示词长度上限 4000 字符
    2. AC2:角色头像支持 jpg/png/webp,≤ 2MB
    3. AC3:启用后用户端角色广场 < 5 秒可见
    4. AC4:使用人数实时更新
    5. AC5:禁用角色不影响已创建的对话会话

场景4:租户管理员老张控制 AI 使用成本

  • 用户:租户管理员老张
  • 前置条件:租户内用户已开始使用 AI 对话
  • 操作流程
    1. 老张发现本月 AI 费用超出预算
    2. 进入后台"AI 管理 → 配额管理"
    3. 设置全局默认配额:每用户每日 50 次对话、100,000 Token
    4. 为 VIP 用户张三设置自定义配额:每日 200 次、500,000 Token
    5. 查看配额使用报表:谁用了多少、还剩多少
    6. 用户李四今日已用完 50 次 → 发送消息时收到提示"今日对话次数已用完,请明日再试或升级配额"
  • 期望结果:成本可控、配额灵活、用户提示友好
  • 验收标准
    1. AC1:配额扣减实时生效,不超发
    2. AC2:每日配额凌晨 00:00 自动重置
    3. AC3:自定义配额优先级高于全局默认
    4. AC4:超额提示友好,引导用户升级或等待
    5. AC5:Token 消耗 = 输入 Token + 输出 Token,精确计算

场景5:开发者小李调试本地 Ollama 模型

  • 用户:开发者小李
  • 前置条件:小李在本地服务器部署了 Ollama + Qwen2 模型
  • 操作流程
    1. 小李进入后台"模型管理" → 点击"新增模型"
    2. 选择服务商"Ollama" → 系统自动填充 Base URL(http://localhost:11434
    3. 修改为实际服务器地址 http://192.168.1.100:11434
    4. 填写模型标识"qwen2" → 点击"测试"
    5. 测试通过 → 保存并启用 → 内部用户可使用本地模型对话
    6. 对话数据全程不出企业内网
  • 期望结果:本地模型顺利接入,满足数据私有化需求
  • 验收标准
    1. AC1:支持 Ollama 本地模型接入
    2. AC2:连通性测试能正确识别本地模型可用性
    3. AC3:同一服务商下模型标识不可重复
    4. AC4:禁用本地模型不影响已有会话的历史消息查看
    5. AC5:新增一个服务商配置全流程 < 30 分钟

三、功能需求

3.1 后台管理端

3.1.1 AI 模型管理

页面描述:

AI模型管理

服务商预设配置:

服务商标识默认 Base URL可用模型示例
OpenAIopenaihttps://api.openai.comgpt-4o, gpt-4o-mini
Azure OpenAIazurehttps://{resource}.openai.azure.comgpt-4o, gpt-35-turbo
文心一言baiduhttps://aip.baidubce.comernie-bot-4, ernie-bot-3.5
智谱AIzhipuhttps://open.bigmodel.cnglm-4, glm-4-flash
通义千问aliyunhttps://dashscope.aliyuncs.comqwen-turbo, qwen-plus
豆包doubaohttps://ark.cn-beijing.volces.comdoubao-pro
混元hunyuanhttps://api.hunyuan.cloud.tencent.comhunyuan-pro
讯飞星火xinghuohttps://spark-api-open.xf-yun.comspark-pro
百川baichuanhttps://api.baichuan-ai.combaichuan-4
DeepSeekdeepseekhttps://api.deepseek.comdeepseek-chat
Geminigeminihttps://generativelanguage.googleapis.comgemini-pro
Claudeclaudehttps://api.anthropic.comclaude-3-opus
Minimaxminimaxhttps://api.minimax.chatabab6.5-chat
Moonshotmoonshothttps://api.moonshot.cnmoonshot-v1-8k
SiliconFlowsiliconflowhttps://api.siliconflow.cnQwen/Qwen2-72B
Ollamaollamahttp://localhost:11434llama3, qwen2

模型新增/编辑表单:

字段类型必填说明
模型名称输入框自定义展示名称,如"GPT-4o 官方"
服务商下拉选择从 16 个预定义服务商中选择(编辑时不可改)
模型标识输入框服务商模型ID,如 gpt-4o、deepseek-chat
API Key密码框服务商 API 密钥(编辑时留空=不修改)
Base URL输入框API 地址(选择服务商后自动填充,可修改用于代理)
温度滑块0-2,默认 0.7,越高越随机
最大 Token 数数字输入默认 2048,范围 1-128000
排序数字输入展示排序值

业务规则:

规则编号规则描述设计原因
R-01默认按排序值升序、创建时间倒序排列运营可控制展示顺序
R-02支持按名称模糊搜索、按服务商/状态筛选模型多时快速定位
R-03同一服务商可配置多个模型版本如同一服务商同时配 gpt-4o 和 gpt-4o-mini
R-04至少保留一个启用状态的模型避免用户端无模型可用
R-05API Key 加密存储(AES-256),列表脱敏显示防止密钥泄露
R-06新增模型默认"禁用",需手动启用防止未测试的模型直接上线
R-07启用前校验 API Key 和 Base URL 非空确保配置完整可用
R-08删除模型不影响已有消息记录(消息保存模型标识快照)历史数据完整性

接口列表:

接口名称方式接口路径说明
获取模型分页GET/admin-api/ai/model/page支持名称/服务商/状态筛选
获取模型详情GET/admin-api/ai/model/get获取完整配置
获取模型精简列表GET/admin-api/ai/model/simple-list启用状态模型,用于下拉选择
获取服务商列表GET/admin-api/ai/model/providers16 个服务商
创建模型POST/admin-api/ai/model/create新增模型配置
更新模型PUT/admin-api/ai/model/update修改模型配置
删除模型DELETE/admin-api/ai/model/delete逻辑删除
启用/禁用模型PUT/admin-api/ai/model/update-status切换状态
测试模型POST/admin-api/ai/model/test发送测试消息验证连通性

3.1.2 对话会话与消息管理

页面描述:

管理员可查看、搜索、删除所有用户的对话会话和消息记录。

对话会话与消息管理

业务规则:

规则编号规则描述设计原因
R-01默认按创建时间倒序排列最新对话优先查看
R-02支持按用户、模型、时间范围、标题筛选多维度定位目标对话
R-03删除会话同时删除关联消息(逻辑删除)数据一致性
R-04会话详情可查看关联的所有消息完整还原对话场景
R-05消息内容列表截断展示(100 字符),详情展示完整内容列表页简洁、详情页完整

接口列表:

接口名称方式接口路径说明
获取会话分页GET/admin-api/ai/chat/conversation/page支持多维度筛选
获取会话详情GET/admin-api/ai/chat/conversation/get含消息列表
删除会话DELETE/admin-api/ai/chat/conversation/delete级联删除消息
获取消息分页GET/admin-api/ai/chat/message/page按会话/角色/模型筛选
获取消息详情GET/admin-api/ai/chat/message/get完整消息内容
删除消息DELETE/admin-api/ai/chat/message/delete逻辑删除

3.1.3 AI 全局配置

页面描述:

Tab 页签形式,分为"基础配置"、"角色预设"、"配额管理"三个子页。

基础配置字段:

字段类型说明
默认模型下拉选择从启用模型中选择
系统提示词文本域全局默认系统提示词,支持 {username}、{datetime} 变量
最大上下文长度数字输入单次对话最大上下文消息数,默认 10
单次回复最大 Token数字输入单次 AI 回复最大 Token 数
SSE 超时时间数字输入连接超时秒数,默认 60
内容审核开关开关是否对用户输入进行安全审核

业务规则:

规则编号规则描述设计原因
R-01修改后即时生效运营灵活调整
R-02默认模型必须在启用模型中选择防止配置无效模型
R-03系统提示词支持 {username}、{datetime} 变量替换个性化体验

3.1.4 角色预设管理

页面描述:

角色预设管理

角色表单字段:

字段类型必填说明
角色名称输入框如"项目管理顾问"、"编程助手"
角色头像图片上传jpg/png/webp,≤ 2MB
角色描述文本域简短介绍,≤ 200 字符
系统提示词文本域角色的 system prompt,≤ 4000 字符
默认模型下拉选择推荐使用的模型
温度滑块默认温度参数
最大 Token数字输入默认最大输出 Token
排序数字输入展示排序值
状态开关启用/禁用

预置角色示例:

角色名称系统提示词摘要
AI 助手你是一个智能助手,可以回答各种问题...
项目管理顾问你是一个资深项目管理专家,擅长项目规划、风险管理...
编程助手你是一个编程专家,可以帮助用户编写和调试代码...
文案写手你是一个专业文案,擅长撰写各类营销文案、公告...
翻译官你是一个专业翻译,可以中英互译并保证信达雅...
数据分析师你是一个数据分析专家,擅长数据处理、统计分析...

业务规则:

规则编号规则描述设计原因
R-01系统预置角色不可删除,可禁用保证基础角色始终可用
R-02禁用角色不影响已创建的对话历史对话完整性
R-03角色删除为逻辑删除数据可恢复
R-04角色头像支持 jpg/png/webp,≤ 2MB统一头像规范

接口列表:

接口名称方式接口路径说明
获取角色分页GET/admin-api/ai/chat/role/page支持名称/状态筛选
获取角色详情GET/admin-api/ai/chat/role/get完整角色信息
创建角色POST/admin-api/ai/chat/role/create新增角色
更新角色PUT/admin-api/ai/chat/role/update修改角色
删除角色DELETE/admin-api/ai/chat/role/delete逻辑删除
启用/禁用角色PUT/admin-api/ai/chat/role/update-status切换状态

3.1.5 对话配额管理

页面描述:

管理员可设置全局默认配额和按用户自定义配额,控制 AI 使用成本。

配额字段:

字段类型说明
每用户每日最大对话次数Integer0 = 不限
每用户每日最大 Token 数Long0 = 不限
每用户每月最大 Token 数Long0 = 不限
单次对话最大消息轮次Integer0 = 不限

业务规则:

规则编号规则描述设计原因
R-01用户自定义配额优先级 > 全局默认支持差异化服务
R-02每日配额凌晨 00:00 重置,每月配额月初 00:00 重置自然周期重置
R-03超额时返回友好提示,引导升级或等待重置用户体验
R-04Token 消耗 = 输入 Token + 输出 Token精确计量成本

接口列表:

接口名称方式接口路径说明
获取配额配置GET/admin-api/ai/quota/get全局配额配置
更新配额配置PUT/admin-api/ai/quota/update修改配额
获取用户配额使用情况GET/admin-api/ai/quota/usage指定用户的配额消耗

3.1.6 AI 统计分析

页面描述:

AI统计分析

统计指标:

指标说明
对话次数用户发送消息的总次数
Token 消耗输入 Token + 输出 Token 总量
活跃用户数发起过对话的去重用户数
服务商调用分布各服务商的调用次数占比
模型使用排行各模型的使用次数排行
预估费用根据各服务商单价计算(需配置单价)
平均响应时间AI 回复的平均耗时

业务规则:

规则编号规则描述设计原因
R-01统计数据准实时(延迟 ≤ 5 分钟)运营决策及时性
R-02费用计算依赖模型单价配置,未配置则显示"未配置"费用透明化
R-03支持按租户维度数据隔离多租户独立统计

接口列表:

接口名称方式接口路径说明
获取对话统计GET/admin-api/ai/statistics/chat对话次数统计
获取 Token 统计GET/admin-api/ai/statistics/tokenToken 消耗统计
获取服务商统计GET/admin-api/ai/statistics/provider服务商调用占比
获取模型排行GET/admin-api/ai/statistics/model-rank模型使用排行
获取费用统计GET/admin-api/ai/statistics/cost费用估算
获取趋势数据GET/admin-api/ai/statistics/trend趋势图表数据

3.2 前台用户端

3.2.1 AI 对话界面

页面描述:

AI对话界面

操作流程:

  1. 用户点击"新建对话"或选择已有对话
  2. 选择模型(默认使用全局配置模型)
  3. 选择角色(可选,默认"AI 助手")
  4. 在输入框中输入问题 → Enter 发送(Shift+Enter 换行)
  5. AI 流式输出回复(SSE 逐字推送,打字机效果)
  6. 可继续追问,形成多轮对话
  7. 对话过程中可:复制回复、重新生成、编辑消息、停止生成

业务规则:

规则编号规则描述设计原因
R-01新建对话默认标题"新对话",首次 AI 回复后自动提取前 20 字为标题自动命名减少操作
R-02流式输出使用 SSE(Server-Sent Events)协议实时体验
R-03消息发送中按钮 loading,不允许重复发送防止重复提交
R-04支持 Markdown 渲染(代码高亮、表格、列表)内容丰富度
R-05支持 LaTeX 数学公式渲染学术/技术场景
R-06单条消息最大输入 8000 字符防止超长输入
R-07断网/超时展示重试按钮异常可恢复
R-08每次发送自动携带上下文(最近 N 条消息)多轮对话连贯性
R-09发送前校验配额,超额拦截并提示成本管控
R-10对话中切换模型不影响上下文灵活切换

接口列表:

接口名称方式接口路径说明
发送消息(流式)POST/app-api/ai/chat/sendSSE 流式接收
发送消息(非流式)POST/app-api/ai/chat/send-block一次性返回
停止生成POST/app-api/ai/chat/stop中断当前生成

流式返回示例(SSE):

event: message
data: {"content": "你", "finish": false}

event: message
data: {"content": "好", "finish": false}

event: done
data: {"conversationId": 1001, "messageId": 2001, "promptTokens": 15, "completionTokens": 8, "totalTokens": 23}

3.2.2 历史对话管理

页面描述:

左侧列表展示所有历史对话,按时间分组(今天/昨天/近7天/更早),对话标题可编辑,右键菜单支持删除和重命名。

业务规则:

规则编号规则描述设计原因
R-01默认按最后更新时间倒序最近对话优先
R-02标题为空时显示首条消息摘要列表可辨识
R-03删除需二次确认,同时删除所有消息防误操作
R-04用户只能查看自己的对话数据隔离

接口列表:

接口名称方式接口路径说明
获取对话列表GET/app-api/ai/chat/conversation/list支持标题搜索
获取对话详情GET/app-api/ai/chat/conversation/get含消息列表
更新对话标题PUT/app-api/ai/chat/conversation/update-title重命名
删除对话DELETE/app-api/ai/chat/conversation/delete级联删除消息

3.2.3 消息交互功能

功能说明触发方式
复制复制 AI 回复文本到剪贴板,Toast 提示消息右上角"复制"按钮
重新生成重新发送上一条用户消息,新回复替换旧回复(可查历史版本)AI 回复下方"重新生成"按钮
编辑重发编辑已发送的用户消息,重新发送,后续消息清空用户消息"编辑"按钮
查看历史版本查看某条 AI 回复的历史版本列表重新生成后的"历史"链接

接口列表:

接口名称方式接口路径说明
重新生成回复POST/app-api/ai/chat/message/regenerate重新生成
编辑并重新发送POST/app-api/ai/chat/message/edit编辑重发
获取回复历史版本GET/app-api/ai/chat/message/versions历史版本

3.2.4 对话分享与导出

分享功能:

  • 生成分享链接(有效期 7 天)
  • 分享链接为只读页面,展示对话内容
  • 支持选择分享范围(整个对话/选中部分消息)

导出功能:

  • 支持导出为 Markdown 格式
  • 支持导出为 TXT 纯文本格式
  • 支持导出为 PDF 格式(P2)

接口列表:

接口名称方式接口路径说明
生成分享链接POST/app-api/ai/chat/share/create7 天有效期
查看分享内容GET/app-api/ai/chat/share/get无需登录
导出对话GET/app-api/ai/chat/conversation/exportmarkdown/txt/pdf

3.2.5 上下文管理

功能说明:

  • 显示当前上下文消息数
  • 支持手动清除上下文(AI 将"忘记"之前的对话)
  • 支持调整上下文长度(滑动条,范围 0-20)
  • 上下文长度为 0 = 每次独立对话(无记忆)

业务规则:

规则编号规则描述设计原因
R-01清除上下文后 AI 不记得之前内容用户主动控制记忆
R-02上下文长度不超过全局配置最大值防止 Token 超限
R-03上下文 Token 超模型限制时自动截断早期消息防止请求失败

接口列表:

接口名称方式接口路径说明
清除上下文POST/app-api/ai/chat/conversation/clear-context清除记忆
更新上下文设置PUT/app-api/ai/chat/conversation/update-settings调整长度

3.2.6 角色广场

页面描述:

卡片网格布局展示所有可用角色,每张卡片包含角色头像、名称、描述、使用人数。顶部有分类标签筛选(全部/效率/编程/写作/学习/娱乐等)和搜索框。点击角色卡片直接开始使用该角色对话。

业务规则:

规则编号规则描述设计原因
R-01只展示启用状态的角色运营可控上线节奏
R-02默认按排序值升序排列运营控制展示顺序
R-03使用次数实时更新帮助用户选择热门角色
R-04点击角色后自动创建新对话并关联该角色减少操作步骤

接口列表:

接口名称方式接口路径说明
获取角色广场列表GET/app-api/ai/chat/role/square含分类和搜索
获取角色详情GET/app-api/ai/chat/role/get角色完整信息

3.2.7 自定义角色创建

功能说明:

用户可创建个性化角色,填写角色名称、描述、系统提示词,选择或上传头像。保存后可在"我的角色"中使用。

业务规则:

规则编号规则描述设计原因
R-01自定义角色仅创建者本人可用个人专属
R-02系统提示词 ≤ 2000 字符防止滥用
R-03每用户最多 20 个自定义角色防止资源浪费
R-04自定义角色默认启用创建即可用

接口列表:

接口名称方式接口路径说明
创建自定义角色POST/app-api/ai/chat/role/create-custom新增
获取我的自定义角色GET/app-api/ai/chat/role/my-list列表
更新自定义角色PUT/app-api/ai/chat/role/update-custom修改
删除自定义角色DELETE/app-api/ai/chat/role/delete-custom删除

四、非功能需求

4.1 性能需求

指标要求实现策略
流式输出首字延迟≤ 3 秒SSE 长连接 + 连接池复用
流式字符间隔≤ 100ms流式推送,逐字/逐句输出
历史对话列表查询≤ 500msRedis 缓存最近列表
消息记录分页查询≤ 300ms数据库索引(conversation_id + create_time)
统计分析查询≤ 2 秒预计算 + 缓存
SSE 并发连接单节点 ≥ 1000Netty/NIO 异步模型
模型配置变更生效≤ 5 秒Redis Pub/Sub 实时推送

4.2 安全需求

安全项要求实现方式
API Key 加密AES-256 加密存储接口返回脱敏(前4后4位)
输入内容审核支持敏感内容过滤关键词匹配 + AI 审核(可配置开关)
数据隔离租户间完全隔离MyBatis Plus 租户插件自动注入 tenant_id
频率限制单用户每秒 ≤ 5 条消息Redis + Lua 滑动窗口
分享链接安全UUID + 7 天有效期不含敏感信息,支持手动失效
操作审计模型配置/角色管理记录日志操作日志自动记录

4.3 可用性需求

指标要求
系统可用率≥ 99.9%(年停机 ≤ 8.76 小时)
SSE 连接稳定性心跳保活(30 秒/次)+ 断线重连
服务商故障降级不可用时提示用户切换其他模型
对话数据持久化实时保存,网络中断不丢失已发送消息
配置备份关键配置 Redis 备份,服务重启快速恢复
多服务商冗余至少支持 3 个服务商同时配置

4.4 错误码定义

错误码说明用户提示
AI_MODEL_001模型不存在"该模型已下线,请选择其他模型"
AI_MODEL_002模型已禁用"该模型已停用,请联系管理员"
AI_MODEL_003API Key 无效"模型配置异常,请联系管理员"
AI_MODEL_004模型连接超时"AI 响应超时,请稍后重试"
AI_CHAT_001会话不存在"对话不存在或已删除"
AI_CHAT_002消息内容为空"请输入消息内容"
AI_CHAT_003消息过长"消息过长,请控制在 8000 字符以内"
AI_QUOTA_001每日对话次数超限"今日对话次数已用完,请明日再试或升级配额"
AI_QUOTA_002每日 Token 超限"今日 Token 已用完,请明日再试或升级配额"
AI_QUOTA_003每月 Token 超限"本月 Token 已用完,请升级配额"
AI_ROLE_001角色不存在"该角色已下线"
AI_ROLE_002角色已禁用"该角色已停用,请选择其他角色"
AI_ROLE_003自定义角色数超限"自定义角色已达上限(20个),请删除后再创建"
AI_CONTENT_001内容审核未通过"输入内容包含敏感信息,请修改后重试"

五、数据设计

5.1 数据表概览

表名说明预估数据量
ai_modelAI 模型配置表50-100 条
ai_model_config模型全局配置表10-20 条
ai_chat_conversation对话会话表百万级
ai_chat_message对话消息表千万级
ai_chat_role对话角色表50-200 条
ai_chat_share对话分享表万级
ai_quota对话配额表千级
ai_quota_usage配额使用记录表十万级

5.2 核心表关系

核心表关系

5.3 缓存策略

缓存 Key数据过期策略更新方式
ai:model:list启用模型列表主动失效模型增删改时清除
ai:config:global全局配置不过期配置变更时更新
ai:role:square角色广场列表5 分钟角色变更时清除
ai:quota:{userId}:用户当日配额使用次日凌晨过期每次对话后原子递增
ai:share:分享记录7 天创建时写入

配额扣减实现: 使用 Redis Hash 结构 ai:quota:{userId}:{date},字段包含 chat_counttoken_count。每次对话后通过 HINCRBY 原子递增,避免并发超发。


六、跨模块联动

6.1 联动关系总览

联动模块联动方向联动场景
会员积分AI对话 → 会员积分Token 消耗扣减积分/余额
钱包管理AI对话 → 钱包Token 消耗生成钱包流水
消息通知AI对话 → 消息通知对话完成/配额不足通知
内容安全内容安全 → AI对话输入/输出内容安全审核
系统管理系统管理 → AI对话操作日志、角色权限
统计分析AI对话 → 统计对话数据供统计模块聚合

6.2 详细联动设计

AI对话 ↔ 会员积分

联动场景触发条件联动行为数据流向
Token 消耗扣积分每次对话完成按 Token 消耗扣减积分,生成积分变更记录对话模块 → 积分模块
积分不足拦截积分余额 < 本次预估消耗拦截对话请求,提示"积分不足,请充值"积分模块 → 对话模块
积分页面展示用户查看"我的积分"展示 AI 对话积分消耗明细积分模块读取对话消耗记录

AI对话 ↔ 钱包管理

联动场景触发条件联动行为数据流向
Token 消耗扣余额每次对话完成按 Token 消耗扣减钱包余额,生成流水对话模块 → 钱包模块
余额不足拦截钱包余额 < 本次预估消耗拦截对话请求,提示"余额不足,请充值"钱包模块 → 对话模块
钱包账单展示用户查看"钱包账单"展示 AI 对话消费记录钱包模块读取对话消费流水

AI对话 ↔ 消息通知

联动场景触发条件联动行为数据流向
对话完成通知长对话生成完成生成站内消息通知用户对话模块 → 通知模块
配额不足提醒剩余配额 < 20%推送提醒:配额即将用尽对话模块 → 通知模块

AI对话 ↔ 内容安全

联动场景触发条件联动行为数据流向
输入审核用户发送消息(审核开关开启时)调用内容安全接口过滤敏感词对话模块 → 内容安全模块
输出审核AI 返回回复对回复内容进行安全审核对话模块 → 内容安全模块

AI对话 ↔ 系统管理

联动场景触发条件联动行为数据流向
操作日志模型配置/角色管理/配额调整记录操作日志对话模块 → 日志审计模块
权限校验用户访问功能校验角色权限系统管理 → 对话模块

AI对话 → 统计分析

联动场景触发条件联动行为数据流向
对话数据聚合T+1 离线计算统计模块读取对话/消息表,聚合对话趋势、模型分布、费用统计统计模块 ← 对话模块

七、附录

7.1 名词解释

术语通俗理解在本模块中的应用
TokenAI 的"计价单位",就像打车按公里计费,AI 按 Token 计费。一个中文字约 1-2 个 Token衡量每次对话的消耗,用于配额管控和费用计算
Spring AI一个"翻译官"框架,把不同 AI 厂商的"方言"翻译成统一"普通话"平台通过 Spring AI 统一对接 16+ 服务商,新增服务商无需改代码
SSE(流式输出)像"直播"一样实时推送内容,而不是等全部写完再给你看AI 回复逐字显示,用户不用干等,体验更流畅
温度(Temperature)控制 AI "创造力"的旋钮——低温=严谨保守,高温=天马行空编程助手建议低温(0.3),创意写作建议高温(1.2)
系统提示词(System Prompt)给 AI 的"岗前培训手册",告诉它扮演什么角色、怎么回答角色预设的核心,决定 AI 的回答风格和专业方向
上下文窗口(Context Window)AI 的"短期记忆"容量——能记住最近多少对话内容设置上下文长度 = 控制 AI 能"记住"多少轮对话
服务商(Provider)AI 模型的"供应商",如 OpenAI、百度、阿里等后台可为每个服务商配置独立的 API Key 和参数
模型标识(Model)服务商给的"产品编号",如 gpt-4o、deepseek-chat后台配置时填写,决定调用哪个具体模型
角色(Role)AI 的"人设"——不同角色有不同的专业背景和回答风格用户选择角色 = 选择一位"专属顾问"
配额(Quota)AI 使用的"额度"——像手机话费套餐,限制用量防止超支管理员设置每日/每月配额,超额后自动拦截
Ollama在"自己电脑"上运行 AI 的工具——数据不出门,安全可控适合对数据安全要求高的企业场景

7.2 权限标识汇总

权限标识说明所属功能
ai:model:list查看模型列表AI 模型管理
ai:model:query查询模型详情AI 模型管理
ai:model:create创建模型AI 模型管理
ai:model:update修改模型AI 模型管理
ai:model:delete删除模型AI 模型管理
ai:model:test测试模型AI 模型管理
ai:model:status修改模型状态AI 模型管理
ai:chat:conversation:list查看会话列表对话管理
ai:chat:conversation:query查询会话详情对话管理
ai:chat:conversation:delete删除会话对话管理
ai:chat:message:list查看消息列表消息管理
ai:chat:message:query查询消息详情消息管理
ai:chat:message:delete删除消息消息管理
ai:config:get查看全局配置AI 配置管理
ai:config:update修改全局配置AI 配置管理
ai:role:list查看角色列表角色管理
ai:role:query查询角色详情角色管理
ai:role:create创建角色角色管理
ai:role:update修改角色角色管理
ai:role:delete删除角色角色管理
ai:role:status修改角色状态角色管理
ai:quota:get查看配额配置配额管理
ai:quota:update修改配额配置配额管理
ai:quota:usage查看配额使用情况配额管理
ai:statistics:chat查看对话统计统计分析
ai:statistics:token查看 Token 统计统计分析
ai:statistics:cost查看费用统计统计分析
ai:chat:send发送对话消息前台用户端
ai:chat:conversation:manage管理我的对话前台用户端
ai:chat:role:square浏览角色广场前台用户端
ai:chat:role:custom管理自定义角色前台用户端
ai:chat:message:interact消息交互(复制/重新生成/编辑)前台用户端
ai:chat:share分享/导出对话前台用户端

本文档为 AI 对话模块 PRD v2.0,如有问题请联系产品负责人。