AI 演示文稿 Agent 实战(中):大纲审核与持久化执行
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一小节,咱们已经把整个项目运行起来了。
用户填写制作要求、选择 Replay 或者 AI 模式,再点击“开始制作”,过一会儿就能看到一份等待审核的大纲。
从页面上看,这个过程好像挺简单的。
但是,服务端实际实际做的事儿还是蛮复杂的,大致是下面这些流程:
整个的流程就是从「开始制作」这个按钮开始的
那么还是和之前一样,咱们先看这个代码的点击事件
点击“开始制作”以后,请求去了哪里
先打开:
web/src/App.vue
页面中的“开始制作”按钮绑定了 createTask():
<button
class="primary-button"
:disabled="busy"
@click="createTask"
>
开始制作
</button>
所以,用户点击按钮以后,前端首先执行的是:
/** 创建一个新的制作任务,并初始化进入大纲编辑阶段。 */
async function createTask() {
// 使用统一的异步状态处理函数,管理请求过程中的 loading、错误等状态
await run(async () => {
// 调用后端接口,根据当前表单数据创建任务
const task = await api.create({ ...form })
// 保存当前创建成功的任务,供后续页面使用
selected.value = task
// 加载该任务关联的数据,例如已有的大纲、页面等信息
await loadTasks(task.id)
// 创建完成后,将当前视图切换到大纲编辑页面
activeView.value = 'outline'
})
}
这部分的代码不多说的,咱们只需要知道这个代码会完成 POST /api/presentations 的请求,这个请求会进入到 presentation.controller.ts 的 create 方法中:
这里会做字段验证,验证之后就会进入到对应的 presentation.service.ts 的 create 方法
接下来就是对应的执行流程了
咱们看这段代码会发现,代码并不复杂,只有四行,但是整个项目的启动顺序都在这里。
先看第一行:
// 根据用户提交的制作需求创建领域聚合根
// 聚合内部负责初始化演示文稿状态、生成唯一 ID 等业务逻辑
const aggregate = PresentationAggregate.create(input)
这里会创建一份新的演示文稿业务对象。
初始数据可以简化成:
const presentation = {
id: 'PRES-A1B2C3D4',
threadId: 'presentation:PRES-A1B2C3D4',
modelMode: 'replay',
status: 'creating_outline',
requirements: {
topic: 'Agent 大模型课程企业发布方案',
audience: '企业技术负责人和研发管理者',
pageCount: 5,
additionalRequirements: '强调可落地性和风险控制',
sourceName: 'Agent 课程发布资料.md',
sourceText: '具体的参考资料内容……'
},
outlines: [],
currentOutlineVersion: null,
pages: []
}
这里需要注意两个字段需要注意下:
id表示:业务任务 ID。用来查询这份演示文稿的主题、大纲、页面和导出结果threadId表示 LangGraph 工作流 ID。用来查询这条工作流对应的 Checkpoint
前两天有同学问我,说之前项目中的
thread_id和sessionId有啥关系
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
