AI 工具包概念

了解帮助你使用 AI 工具包的基本概念。

位置

AI 工具包方法允许你在文档的特定位置读取编辑文档。

位置允许你定位文档中的元素。它们以整数表示。

文档中的第一个位置是 0。文档中的最后一个位置等于文档内容的大小。

const position = 0
const lastPosition = editor.state.doc.content.size

光标的位置可以通过编辑器状态的 selection 属性获取。

const position = editor.state.selection.head

范围

范围是一对位置。它表示文档中的一个连续内容范围。

import { Range } from '@tiptap/core'

const range: Range = { from: 0, to: 100 }

整个文档的范围是:

const range = { from: 0, to: editor.doc.content.size }

你可以使用编辑器状态的 selection 属性获取选区范围。

const range = { from: editor.state.selection.from, to: editor.state.selection.to }

你可以在特定的位置或范围插入或者读取内容。

const range: Range = { from: 0, to: 100 }

// 读取文档
editor.commands.tiptapRead({ range })

editor.commands.insertHtml(
  '<p>AI 生成的内容</p>',
  {
    position: range,
  }
)

范围用于确定建议的位置。

建议

建议表示对文档的拟议更改。当 AI 对文档进行更改时,你可以将其显示为建议,以便用户可以审查并接受或拒绝。你可以在 Review UI 指南 中了解更多信息。

节点范围

节点范围是文档中一系列顶级节点的范围。

顶级节点是 doc 节点的直接子节点。

节点范围是一个包含两个属性的对象:

  • from(数字):范围内第一个节点的索引(包含)
  • to(数字):范围内最后一个节点之后的索引(上界,不包含)
// 从第一个到第 100 个节点的范围
const nodeRange: NodeRange = { from: 0, to: 100 }

整个文档的节点范围是:

const nodeRange = { from: 0, to: editor.state.doc.childCount }

Tiptap 读取和 Tiptap 编辑

Tiptap 编辑是由 Tiptap 开发的一种格式,允许 AI 高效且准确地编辑文档。使用它,AI 可以快速进行细微、精确的编辑,而无需替换整个文档。它能将令牌使用量减少高达 95%。

Tiptap 编辑作为 AI 代理可使用的工具提供,也作为一个工作流程提供。

为了使 Tiptap 编辑生效,你需要先用 Tiptap 读取读取文档。Tiptap 读取作为 AI 代理可使用的工具提供,也作为一个工作流程提供。

const { content } = toolkit.tiptapRead()
toolkit.tiptapEdit({ content })