# AI 提示词

## 前言
在 AIEditor 中的 `AI 菜单`、`AI 命令`、`AI 代码块` 都是可以配置自定义的提示词 Prompt 的，例如菜单配置如下

```ts
new AiEditor({
    element: "#aiEditor",
    ai:{
        // models:{...] 等其他配置
        menus:[
            {
                icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"></path><path d="M4 18.9997H20V13.9997H22V19.9997C22 20.552 21.5523 20.9997 21 20.9997H3C2.44772 20.9997 2 20.552 2 19.9997V13.9997H4V18.9997ZM16.1716 6.9997L12.2218 3.04996L13.636 1.63574L20 7.9997L13.636 14.3637L12.2218 12.9495L16.1716 8.9997H5V6.9997H16.1716Z"></path></svg>`,
                name: "AI 续写",
                prompt: "请帮我继续扩展一些这段话的内容",
                text: "focusBefore",
                model: "spark",
            },
            {
                icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"></path><path d="M15 5.25C16.7949 5.25 18.25 3.79493 18.25 2H19.75C19.75 3.79493 21.2051 5.25 23 5.25V6.75C21.2051 6.75 19.75 8.20507 19.75 10H18.25C18.25 8.20507 16.7949 6.75 15 6.75V5.25ZM4 7C4 5.89543 4.89543 5 6 5H13V3H6C3.79086 3 2 4.79086 2 7V17C2 19.2091 3.79086 21 6 21H18C20.2091 21 22 19.2091 22 17V12H20V17C20 18.1046 19.1046 19 18 19H6C4.89543 19 4 18.1046 4 17V7Z"></path></svg>`,
                name: "AI 优化",
                prompt: "请帮我优化一下这段文字的内容，并返回结果",
                text: "selected",
                model: "spark",
            },
        ]
    },
})
```

此时，用户选择了编辑器里的一段文字，假设被选中的文字内容为："`AIEditor 是一个不错的编辑器`"，然后点击 `AI 优化` 的菜单。

那么，AIEditor 会向大语言模型发送的内容如下：

```
AIEditor 是一个不错的编辑器
请帮我优化一下这段文字的内容，并返回结果
```
并等等大语言模型返回结果，让用户进行后续操作。此时，如果用户选中的文本内容，与 `"请帮我优化一下这段文字的内容，并返回结果"` 冲突，或者有可能产生额外含义的时候，
大语言模型返回的内容可能并不一定是我们想要的内容。

## `{content}` 占位符

为了解决用户选择的文本，和简单的 prompt 提示词定义可能冲突的场景，AIEditor 支持在 prompt 内容中，添加自定义占位符 `{content}`。

假设我们自定义的 prompt 提示词为：
```
请帮我优化一下的文字内容，并返回结果，文字内容为:
“{content}”

注意，只能返回中文内容，不能返回英文内容。
```
那么，假设用户选中编辑器的文字内容为："`AIEditor 是一个不错的编辑器`"，然后点击 AI 优化 的菜单时，AIEditor 发生给大语言模型的 prompt 如下：

```
请帮我优化一下的文字内容，并返回结果，文字内容为:
“AIEditor 是一个不错的编辑器”

注意，只能返回中文内容，不能返回英文内容。
```

通过 `{content}` 占位符的方式，会使得提示词变得更加清晰和易用。