# AI 对话 AI 对话指的是在菜单中,点击对话按钮,可以使用编辑内容与 AI 进行对话。其主要提供了 4 点能力: - 直接选择编辑器的内容,作为对话的上下文,进行持续对话。 - 对话的 AI 内容,随时可以插入(或替换)到编辑器的指定位置。 - 支持历史对话 - 完善的功能配置 > 备注:当前功能只有在商业 Pro 版中提供,演示地址: http://pro.aieditor.com.cn ## 示例代码 ```ts new AiEditorPro({ element: "#aiEditor", chat:{ systemPrompt: "你的名字叫 AIEditor 编辑助手,你擅长...", helloMessage: "欢迎使用 AIEditor 编辑助手,你可以...", localStorageKey: "aie-chat-messages", placeholder: "what's your question?", maxHeight: 600, maxAttachedMessageCount: 10, historyMessageTruncateEnable: false, historyMessageTruncateLength: 1000, historyMessageTruncateProcessor?: (message: string) => string, appendEditorSelectedContentEnable: true, appendEditorSelectedContentProcessor?: (userContent: string, selectedContent: string) => string, messagesToPayloadProcessor?: (messages: any, aiModel: AiModel) => string, }, }) ``` ## 配置说明 ### systemPrompt `systemPrompt` 具有系统角色的消息充当模型的顶级指令,通常描述模型应该做什么以及它通常应该如何行为和响应。 当配置了 `systemPrompt` 时,每次消息都会携带 `systemPrompt`,如下代码所示: ```json 7 { "model": "gpt-4o", "stream": true, "messages": [ { "role": "system", "content": "你的名字叫 AIEditor 编辑助理,你擅长文字创作和内容优化。" }, { "role": "user", "content": "你好" } ] } ``` ### helloMessage 用于配置当用户第一次打开 AI 对话框时的欢迎消息。 ### localStorageKey 历史消息保存在 LocalStorage 的 key 值的定义,默认值为: `aie-chat-messages` ### placeholder 设置输入框的 placeholder 属性 ### maxHeight 设置聊天窗口的最大高度 ### maxAttachedMessageCount 在携带历史对话中,最大携带的历史消息条数,默认值为:`10`。条数越多,消耗的 token 越多。 ### historyMessageTruncateEnable 是否开启历史消息截断,默认值为: `false`。 在 AI 响应的消息中,可能会有一些消息内容特别的长,如果我们把这些长消息提交给 AI,可能会消耗大量的 Token, 我们可以只截取一部分的内容进行提交,而非完整的内容。 ### historyMessageTruncateLength 截取内容的长度,默认值为:`1000`。当配置 `historyMessageTruncateEnable: true` 时,此配置才有效。 ### historyMessageTruncateProcessor 自定义历史消息截取处理器,此项配置后,`historyMessageTruncateLength` 的配置会失效。 在 AI 历史对话压缩策略中,除了对内容进行截取以外,还有 `摘要法`、`关键词提取` 等多种策略,都可以通过自定义配置 `historyMessageTruncateProcessor` 进行实现。 ### appendEditorSelectedContentEnable 在消息对话中,是否自动追加编辑器选中的文本内容,默认值为:`true`。 ### appendEditorSelectedContentProcessor 自定义 `用户消息` 和 `编辑器选择内容` 的处理器,默认代码如下: ```ts appendEditorSelectedContentProcessor = (userContent, selectedContent)=>{ return `${userContent}\n${selectedContent}` } ``` ### messagesToPayloadProcessor 此配置用于把历史消息内容转换为 payload ,充当 AI 请求的 body 内容,只有在自定义大模型时用到。