校对工具

构建一个校对器:在服务器上读取文档,生成修正,然后在服务器上应用这些修正。

查看 GitHub 上的源代码

校对器格式

目前,Server AI Toolkit 的校对器工作流使用的是 format: 'shorthand'

在读取和执行之间复用同一个会话

读取步骤会返回一个 sessionId。在执行请求中发送同一个 sessionId,这样当文档在 AI 读取之后发生了变化时,服务器就能拒绝过期的编辑。

开始之前,请按照授权指南完成身份验证设置。

1. 从 AI 服务器读取文档内容

首先以简写格式读取文档。调用:

  • POST /v3/ai/toolkit/read/read-document
import { getAuthHeaders } from '@/lib/server-ai-toolkit/get-auth-headers'

const readResponse = await fetch(`${apiBaseUrl}/toolkit/read/read-document`, {
  method: 'POST',
  headers: getAuthHeaders(),
  body: JSON.stringify({
    schemaAwarenessData,
    sessionId,
    format: 'shorthand',
    reviewOptions: {
      mode: 'disabled',
    },
    experimental_documentOptions: {
      documentId,
      userId: 'ai-assistant',
    },
  }),
})

const readResult = await readResponse.json()

2. 生成校对器操作

从 AI 服务器获取工作流定义,将其与模式感知提示(schema awareness prompt)合并,并让模型返回校对器操作。

const workflowResponse = await fetch(`${apiBaseUrl}/toolkit/workflows/proofreader`, {
  method: 'POST',
  headers: getAuthHeaders(),
  body: JSON.stringify({
    format: 'shorthand',
  }),
})

const workflow = await workflowResponse.json()

const schemaResponse = await fetch(`${apiBaseUrl}/toolkit/schema-awareness-prompt`, {
  method: 'POST',
  headers: getAuthHeaders(),
  body: JSON.stringify({
    schemaAwarenessData,
  }),
})

const { prompt: schemaAwarenessPrompt } = await schemaResponse.json()

const result = streamText({
  model,
  system: `${workflow.systemPrompt}\n\n${schemaAwarenessPrompt}`,
  prompt: JSON.stringify({
    content: readResult.output.content,
    task: 'Correct all grammar and spelling mistakes',
  }),
  output: Output.object({ schema: z.fromJSONSchema(workflow.outputSchema) }),
})

const output = await result.output

3. 执行工作流

直接执行该工作流,以将修正应用到文档。调用:

  • POST /v3/ai/toolkit/execute-workflow/proofreader
const executeResponse = await fetch(`${apiBaseUrl}/toolkit/execute-workflow/proofreader`, {
  method: 'POST',
  headers: getAuthHeaders(),
  body: JSON.stringify({
    schemaAwarenessData,
    format: 'shorthand',
    input: output,
    sessionId: readResult.sessionId,
    reviewOptions: {
      mode: 'disabled',
    },
    experimental_documentOptions: {
      documentId,
      userId: 'ai-assistant',
    },
  }),
})

const executeResult = await executeResponse.json()

4. 从编辑器 UI 触发工作流

客户端发送文档 ID 和当前的 session ID,然后从响应中存储更新后的 session ID。

const runProofreader = async () => {
  const response = await fetch('/api/server-proofreader-workflow', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      documentId,
      schemaAwarenessData: getSchemaAwarenessData(editor),
      sessionId,
    }),
  })

  const result: { sessionId: string } = await response.json()
  setSessionId(result.sessionId)
}

跟踪更改(Tracked changes)

将此工作流与跟踪更改扩展集成,以便在 AI 编辑文档后显示审阅界面,并允许用户接受和拒绝更改。

POST /v3/ai/toolkit/execute-workflow/proofreader 请求中,配置 reviewOptions 参数:

reviewOptions: {
  mode: 'trackedChanges',
  trackedChangesOptions: {
    userId: 'ai-assistant',
  },
}

查看 AI Toolkit demos 以了解如何将 Server AI Toolkit 工作流与跟踪更改集成。

最终结果

这是一个协作式的校对器工作流,用于在服务器端进行语法与拼写修正:

查看 GitHub 上的源代码

下一步