校对工具
构建一个校对器:在服务器上读取文档,生成修正,然后在服务器上应用这些修正。
查看 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.output3. 执行工作流
直接执行该工作流,以将修正应用到文档。调用:
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 上的源代码。