生成第一份 AI 智能布局 PPT
这一节只走一条最短路径:直接生成 JSON 结构化大纲,再调用 AIL 接口完成页面级智能布局。
这条链路和模板模式有什么不同
- 模板模式的核心输入是
Markdown大纲 - AI 智能布局的核心输入是
JSON结构化大纲 - AIL 返回的是分页
HTML流和任务进度,适合边生成边展示、断流恢复和最终状态确认
第 1 步:创建调用 Token
先在服务端使用 Api-Key 调用 createApiToken。
const response = await fetch('https://docmee.cn/api/user/createApiToken', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Api-Key': 'YOUR_API_KEY'
},
body: JSON.stringify({
uid: 'demo-user',
limit: 10,
timeOfHours: 2
})
})
const result = await response.json()
console.log(result)拿到返回的 token 后,后续请求都在 Header 中传入:
token: YOUR_TEMP_TOKEN第 2 步:创建生成任务
调用 createTask 创建任务。这里以 type=1 的智能生成为例。
const formData = new FormData()
formData.append('type', '1')
formData.append('content', '请生成一份关于 AI 办公趋势的产品介绍 PPT')
const response = await fetch('https://docmee.cn/api/ppt/v2/createTask', {
method: 'POST',
headers: {
token: 'YOUR_TEMP_TOKEN'
},
body: formData
})
const result = await response.json()
console.log(result)成功后会返回任务 id。
第 3 步:生成 JSON 大纲
调用 generateContent 为任务生成结构化大纲。AI 智能布局场景下,关键是把 outlineType 明确设为 JSON。
const response = await fetch('https://docmee.cn/api/ppt/v2/generateContent', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
token: 'YOUR_TEMP_TOKEN'
},
body: JSON.stringify({
id: 'TASK_ID',
stream: true,
outlineType: 'JSON',
questionMode: false,
isNeedAsk: false,
length: 'medium',
scene: '产品介绍',
audience: '客户',
lang: 'zh',
prompt: '语气专业,适合演示'
})
})
const result = await response.text()
console.log(result)流式响应结束时会返回完整结果。你需要从最终响应里取出 result 字段,作为下一步 AIL 的 data 输入。
第 4 步:发起 AIL 智能布局任务
把任务 ID 和上一步拿到的 JSON 大纲传给 generatePptxByAi。
下面的
outline仅用于演示data字段的结构。实际调用时,请直接使用上一步generateContent最终响应中返回的result,而不是把下面这个示例写死到生产代码里。
展开查看示例 outline(仅示例,实际请使用上一步返回的 PPT 大纲)
{
"overall_theme": "AI 办公趋势与产品应用",
"target_audience": "智能推断相关领域的专业人士与决策者",
"scenario": "行业峰会主题演讲",
"language": "zh",
"pages": [
{
"page_number": 1,
"title": "AI 办公趋势:重塑未来工作方式",
"page_type": "cover",
"content": {
"subtitle": "探索 AI 如何驱动效率革命与智能协作"
}
},
{
"page_number": 2,
"title": "章节一:AI 办公的现状与驱动力",
"page_type": "section_header",
"content": {
"section_no": 1,
"subtitle": "理解 AI 办公的市场背景与核心推动力"
}
},
{
"page_number": 3,
"title": "全球 AI 办公市场快速增长",
"page_type": "content",
"content": {
"text": "AI 办公市场正经历爆发式增长。根据最新行业报告,全球智能办公解决方案市场规模预计在未来五年内年复合增长率将超过 30%。这一增长主要由三大因素驱动:\n1. **远程与混合办公的常态化**:后疫情时代,企业对高效、灵活的协作工具需求激增。\n2. **数据量爆炸与决策复杂性**:企业需要从海量数据中快速提取洞察,AI 成为关键赋能工具。\n3. **技术成熟度提升**:自然语言处理(NLP)、机器学习和计算机视觉等技术的成熟,使 AI 应用从概念走向规模化落地。"
}
},
{
"page_number": 14,
"title": "总结与行动号召",
"page_type": "closing",
"content": {
"subtitle": "拥抱 AI 办公,开启效率与创新的新纪元"
}
}
]
}const outline = previousStepResult // 即 generateContent 最终响应中的 result
const formData = new FormData()
formData.append('id', 'TASK_ID')
formData.append('templateId', 'TEMPLATE_ID')
formData.append('data', JSON.stringify(outline))
const response = await fetch('https://docmee.cn/api/ppt/v2/generatePptxByAi', {
method: 'POST',
headers: {
token: 'YOUR_TEMP_TOKEN'
},
body: formData
})
const result = await response.text()
console.log(result)这个接口会以 SSE 形式持续返回两类消息:
- 过程消息:当前步骤、分页任务和整体进度
- 页面增量消息:某一页
HTML的流式增量内容
如果连接持续正常,前端可以一边收流,一边实时渲染页面。
第 5 步:连接异常时恢复最新页面数据
如果 AIL 流中断,可以调用 latestData 拉取当前任务已经生成出的分页 HTML。
const response = await fetch(
'https://docmee.cn/api/ppt/v2/latestData?taskId=TASK_ID&from=0',
{
headers: {
token: 'YOUR_TEMP_TOKEN'
}
}
)
const result = await response.json()
console.log(result)这个接口的核心价值是:
- 补齐 SSE 期间漏掉的页面数据
- 判断任务当前执行到哪一步
- 在恢复成功后继续展示已经生成出的页面
第 6 步:确认最终转换状态
当你已经拿到全部页面 HTML 后,继续调用 getConvertResult 轮询最终转换状态。只有状态变成 COMPLETED,这一轮 AI 智能布局任务才算真正结束。
const response = await fetch(
'https://docmee.cn/api/ppt/v2/getConvertResult?taskId=TASK_ID',
{
headers: {
token: 'YOUR_TEMP_TOKEN'
}
}
)
const result = await response.json()
console.log(result)常见状态值如下:
0:等待处理1:处理中2:处理完成3:处理失败
一次完整闭环
把整条链路压缩成一组最小调用,就是:
createApiTokencreateTaskgenerateContent,并传outlineType=JSONgeneratePptxByAi- 断流时调用
latestData - 最终调用
getConvertResult,直到状态为2
相关 API
Last updated on