开发文档Umo Editor NextAI 聊天助手

AI 聊天助手

AI 聊天助手允许用户与 AI 助手进行实时交互,在文档编辑过程中获取智能建议和帮助。

效果截图

AI 聊天助手

特点及优势

  • 支持私有化部署,您可以通过私有化部署,实现数据的安全性和可控性;
  • 相比于 AI 文档助手更友好的操作体验和非侵入式的聊天工具设计;
  • 支持多轮对话,您可以在多轮对话中,获取更准确的智能建议;
  • 支持自定义多个 AI 模型,您可以自定义多个 AI 模型,实现自定义 AI 模型的切换和使用;
  • 支持推理模式,对于支持推理模式的 AI 模型,您可以配置推理模式,实现推理模式展示;
  • 支持历史消息记录,您可以在聊天记录中查看历史消息,实现消息的查看和管理;
  • 支持文件上传,您可以配置文件上传,实现向 AI 模型上传文件,以便于为 AI 模型提供更丰富的上下文信息。

默认配置

const systemPrompt = `**角色定位**
你是一个专业文档 AI 助手,具备以下核心能力:
1. 精准解析用户碎片化需求
2. 上下文敏感的内容整合
3. 多维度文档质量把控
4. Markdown语法专家级应用
 
**任务说明**
当前用户正在富文本编辑器(基于 Tiptap 和 ProseMirror 开发)中进行文档创作,你需要完成以下协同工作流程:
 
**输入分析阶段**
1. 深度理解用户提供的上下文片段:{context}
2. 通读当前完整文档:
\`\`\`html
{document}
\`\`\`
3. 确认目标语言要求:{lang}(需确保语法地道性)
4. 识别用户未明示的潜在需求:
   - 格式一致性检查
   - 逻辑连贯性增强
   - 术语统一性维护
 
**输出规范**
请按以下标准生成内容:
▢ 格式标准:
   - 严格使用基础Markdown语法,但不能将内容整个返回成代码块
   - 标题层级不超过### 
   - 列表项采用标准符号
   - 代码块标注语言类型
 
▢ 内容标准:
   - 保持与现有文档风格统一
   - 新增内容自然衔接上下文
   - 重要信息优先呈现原则
   - 技术文档需保持术语准确
 
**异常处理机制**
当遇到以下情况时:
1. 需求存在歧义
2. 上下文信息不足
3. 发现文档内在矛盾
请主动询问澄清:
"为确保输出质量,需要您确认以下细节:[具体问题] 请提供补充说明/示例/偏好要求"
 
**执行示例**
[用户需求] "在第三章添加数据可视化注意事项"
[AI响应] 
1. 定位第三章现有内容
2. 分析文档中已有的图表规范
3. 生成符合整体风格的注意事项列表
4. 使用与前后文匹配的过渡语句
 
只需要返回结果,不要将结果放在代码块中,无需其他任何额外说明,除非用户要求,返回内容尽量不要太过复杂。
`
 
const welcomeMessage =
  '欢迎使用 Umo Editor AI 聊天助手!有什么问题可以问我哦,我会尽力帮助您完成文档编辑工作。'
 
// AI 聊天助手相关配置
const defaultOptions = {
  ai: {
    chat: {
      enabled: false,
      layout: 'both',
      showName: true,
      showDatetime: true,
      showAvatar: true,
      commands: [
        {
          label: { en_US: 'Continuation', zh_CN: '续写', ru_RU: 'Продолжение' },
          value: { en_US: 'Continuation', zh_CN: '续写', ru_RU: 'Продолжение' },
        },
        {
          label: { en_US: 'Rewrite', zh_CN: '重写', ru_RU: 'Переписать' },
          value: { en_US: 'Rewrite', zh_CN: '重写', ru_RU: 'Переписать' },
        },
        {
          label: { en_US: 'Abbreviation', zh_CN: '缩写', ru_RU: 'Аббревиатура' },
          value: { en_US: 'Abbreviation', zh_CN: '缩写', ru_RU: 'Аббревиатура' },
        },
        {
          label: { en_US: 'Expansion', zh_CN: '扩写', ru_RU: 'Расширение' },
          value: { en_US: 'Expansion', zh_CN: '扩写', ru_RU: 'Расширение' },
        },
        {
          label: { en_US: 'Polish', zh_CN: '润色', ru_RU: 'Полировать' },
          value: { en_US: 'Polish', zh_CN: '润色', ru_RU: 'Полировать' },
        },
        {
          label: { en_US: 'Proofread', zh_CN: '校阅', ru_RU: 'Корректура' },
          value: { en_US: 'Proofread', zh_CN: '校阅', ru_RU: 'Корректура' },
        },
        {
          label: { en_US: 'Translate', zh_CN: '翻译', ru_RU: 'Перевести' },
          value: {
            en_US: 'Translate to chinese',
            zh_CN: '翻译成英文',
            ru_RU: 'Перевести на китайский',
          },
        },
      ],
      models: [],
      systemPrompt,
      welcomeMessage,
      maxHistory: 10,
      async onGetHistory() {
      },
      async onChangeHistory(type, data) {
      }
    },
}

配置说明

ai.chat

AI 聊天助手相关配置,更多信息见AI 文档助手

  • ai.chat.enabled,Boolean,是否启用 AI 助手。
  • ai.chat.layout,String,AI 文档助手的消息布局方式,支持 bothsingle 两种布局方式,默认为 both
  • ai.chat.showName,Boolean,是否显示消息名称,默认为 true
  • ai.chat.showDatetime,Boolean,是否显示消息时间,默认为 true
  • ai.chat.showAvatar,Boolean,是否显示消息头像,默认为 true
  • ai.chat.commands,Array,常用指令,可参考AI 文档助手配置。。
  • ai.chat.systemPrompt, String,系统提示词,用于让 AI 更好地理解任务和角色。
  • ai.chat.welcomeMessage, String,欢迎消息,用于打开 AI 聊天助手时,显示欢迎信息,为空则不显示欢迎信息。
  • ai.chat.maxHistory, Number,AI 聊天助手的历史消息数量。
  • ai.chat.onGetHistory,AsyncFunction,获取历史消息的回调函数,可通过该回调从服务器端获取历史消息。
  • ai.chat.onChangeHistory,AsyncFunction,更新历史消息的回调函数,可通过该回调更新服务器端的历史消息,如删除、添加等。
  • ai.chat.models, Array,AI 助手的模型配置,支持多种模型,请至少配置一项,具体配置项见下表。
配置项类型描述
isDefaultBoolean是否是默认模型
labelString模型名称,在消息列表中显示
valueString模型值,传递给的后端的实际值
avatarURL模型头像的 URL,在消息列表中显示
providerURLAI 服务提供商,即 AI 模型所需要请求的接口地址
supportReasonBoolean该模型是否支持推理模式
fileObject上传文件配置,支持 acceptmultiplemaxSizelimit 等属性

示例

[
  // DeepSeek
  {
    label: 'DeepSeek-R1',
    value: 'deepseek-reasoner',
    avatar: '...',
    isDefault: true,
    // 本示例中使用 Umo Editor Server 来代理 AI 请求到其他 AI 服务提供商,您也可以自定义 provider
    provider: 'http://127.0.0.1:1235/ai/deepseek/chat%2Fcompletions',
    supportReason: true,
    file: {
      accept: '.docx,.doc,.xls,.xlsx,.txt', // 支持的文件类型
      multiple: true, // 是否允许多选
      maxSize: 1024 * 1024 * 5, // 单个文件最大大小
      limit: 5, // 最多上传文件数量
    },
  },
  // Moonshot AI
  {
    label: 'Moonshot AI',
    value: 'moonshot-v1-8k',
    avatar: kimiLogo,
    provider: 'http://127.0.0.1:1235/ai/moonshot/chat%2Fcompletions',
  },
]

方法列表

openAIChat

说明:打开 AI 聊天助手。

参数:无

返回值:无

closeAIChat

说明:关闭 AI 聊天助手。

参数:无

返回值:无