专家(预设 AI 角色)
专家(Expert) 把「一段系统提示词 + 一个大模型 + 一组运行参数」固化成一个可复用的身份。配置好之后,用户在对话框顶部一键选择,就能让 AI 以「客服」「SQL 工程师」「财务审核」等角色作答,而不必每次把要求重新描述一遍。
在 AI Manager → 专家 中维护,支持拖拽排序,排序结果即对话框中的展示顺序。
解决什么问题
| 没有专家时 | 有专家时 |
|---|---|
| 每个人自己写提示词,水平参差、结果不稳定 | 提示词由管理员统一维护,所有人用同一套标准 |
| 换个场景就要重新交代背景 | 切换专家即切换身份与语气 |
| 想给某个场景换更强的模型,只能改全局默认 | 每个专家单独绑定模型,贵的模型只用在该用的地方 |
| 温度、思考模式等参数只能全局设定 | 参数随专家走,严谨场景低温度,创意场景高温度 |
配置项
| 配置项 | 说明 |
|---|---|
| 名称 | 对话框中展示的专家名 |
| 是否启用 | 关闭后不出现在对话选择列表中 |
| 大模型 | 该专家使用的模型,留空则使用默认对话模型 |
| 提示词 | 系统提示词,决定这个专家的身份、职责与输出风格 |
| 提示词处理器 | 可选,运行时动态改写提示词,见下 |
| 提示列表 | 一组引导问题,选中该专家后展示给用户,降低「不知道问什么」的门槛 |
| 描述 | 专家用途说明 |
| 专家配置 | JSON 格式的运行参数:temperature、top_p、strictTools(严格工具调用)、thinking(思考模式,适用于 DeepSeek-R1 等推理模型) |
动态提示词
提示词写死在配置里往往不够——同一个专家,面对不同租户、不同权限的用户,需要的上下文并不相同。实现 EruptPromptHandler 接口即可在每次对话前改写提示词,实现类注册为 Spring Bean 后可在专家配置的下拉框中选择:
java
@Component
public class TenantPromptHandler implements EruptPromptHandler {
@Override
public String name() {
return "租户上下文注入";
}
@Override
public String handle(String prompt) {
// 在管理员写好的提示词之后,追加当前请求的运行时上下文
return prompt + "\n当前租户:" + TenantContext.name()
+ "\n当前时间:" + LocalDate.now();
}
}常见用法:注入当前用户与角色、注入租户与数据范围、按日期追加时效性说明、把知识库检索结果拼进提示词。
提示词的几个层次
全局 system-prompt 对所有会话生效,动态注入系统提示词提供应用级与请求级的动态注入点,专家则是由用户主动选择的身份级提示词——它们叠加后共同构成本轮对话的系统提示词。