快速开始
AI 工具
使用 AI SDK 工具让 AI 代理生成 Office 文档
office-open 包提供了 AI SDK 工具,允许 AI 代理(Claude、GPT 等)使用 Vercel AI SDK 生成 .docx、.pptx、.xlsx、.odt、.rtf、.ods 和 .odp 文件。
#安装
pnpm add office-open ai
npm install office-open ai
yarn add office-open ai
bun add office-open ai
需要 Vercel AI SDK(ai 包)v6+。
#工具
提供八个工具 — 每个受支持的根格式各一个,外加按需查询 schema 的 lookup 工具:
| 工具 | 说明 |
|---|---|
generate-docx | 生成 .docx Word 文档 |
generate-pptx | 生成 .pptx 演示文稿 |
generate-xlsx | 生成 .xlsx 电子表格 |
generate-odt | 生成 .odt OpenDocument 文本 |
generate-rtf | 生成 .rtf 富文本文档 |
generate-ods | 生成 .ods OpenDocument 表格 |
generate-odp | 生成 .odp OpenDocument 演示 |
office-open-schema-lookup | 按需获取选项定义的 JSON Schema |
每个生成工具在生成前使用 JSON Schema(ajv)验证输入。校验错误附带实例路径(如 at "sections.0.children.1.paragraph.children"),模型可以据此修复并重试。
#渐进披露
完整格式 schema 远超工具定义的承载上限(docx 约 675 KB),因此生成工具携带的是骨架输入 schema:顶层结构加子级包装键,其余以 stub 标注它所代表的定义名。工作流程:
- 在填充复杂对象前,调用
office-open-schema-lookup传入{ type, definitions: [...] }查询所需选项类型(如ParagraphOptions、RunOptions、TableOptions)。名称来自骨架中的 stub,或npx office-open schema index <type>。 - 填写选项并调用生成工具。
- 若校验拒绝输入,修复报错路径后重试 — 每次调用最多报告五个问题。
lookup 返回所请求定义及其依赖闭包;未请求的编目域保持为可展开的 stub,因此需要的每个域根都要单独请求。每次调用最多 8 个定义;未知名返回最接近的候选建议而非报错。
提供方的严格结构化输出模式(要求处处 additionalProperties: false)与骨架不兼容;校验由工具 execute 内的 ajv 负责。
#用法
import { generateText } from "ai";
import { officeOpenTools } from "office-open/ai";
const result = await generateText({
model,
prompt: "创建一份季度报告文档",
tools: officeOpenTools,
});
#工具输入
每个工具直接接受文档选项(无需包裹 — 直接传入文档结构):
#generate-docx
{
"sections": [
{
"children": [{ "paragraph": { "children": [{ "text": "你好,世界!", "bold": true }] } }]
}
]
}
#generate-pptx
{
"title": "我的演示文稿",
"slides": [
{
"children": [
{
"shape": {
"x": 100,
"y": 100,
"width": 760,
"height": 340,
"textBody": { "paragraphs": [{ "children": [{ "text": "你好,世界!", "size": 32 }] }] }
}
}
]
}
]
}
#generate-xlsx
{
"worksheets": [
{
"name": "Sheet1",
"rows": [
{ "cells": [{ "value": "姓名" }, { "value": "分数" }] },
{ "cells": [{ "value": "张三" }, { "value": 95 }] }
]
}
]
}
#工具输出
每个工具返回 base64 编码的文件:
{
"base64": "...",
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
}
#JSON Schemas
完整 schema 与切片 API 均可导出供自定义使用:
import {
docxSchema,
pptxSchema,
xlsxSchema,
validateDocumentInput,
sliceDocumentSchema,
SCHEMA_ENTRIES,
} from "office-open/schemas";
// 提取指定选项类型的依赖闭包:
const slice = sliceDocumentSchema("docx", ["ParagraphOptions", "RunOptions"]);
同样的查询能力也可通过 CLI 使用(npx office-open schema index docx、npx office-open schema slice docx ParagraphOptions)。