AI 面试教练 Agent 实战(下):跨会话复测与 Agentic RAG
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一篇,咱们已经完成了训练记忆的创建和更新。
第一次回答不完整以后,系统会为“短期记忆与长期记忆”这个知识主题创建一条训练记忆。其中,agent-memory 是这条记忆的唯一标识,needs_review 表示这个知识点当前还没有掌握,需要继续复习。
在同一场面试中继续回答追问题,并且回答正确以后,这条记忆又被更新成了:
{
key: 'agent-memory',
title: '短期记忆与长期记忆',
status: 'improving',
attempts: 2,
correctCount: 1
}
但是,到这里还不能证明这套记忆真的有用。
因为这两次回答都发生在同一个 Thread 中。Agent 完全可以从当前会话的 State 里看到前面的题目和回答。
真正需要验证的是:新建一个完全不同的 Thread 以后,Agent 能不能从 Store 中找到这个薄弱点,并根据它生成一场新的复测?
复测完成以后,咱们还要继续确认两件事:
- 第一:面试反馈需要多类技术资料时,Agent 能不能检查还缺什么并继续补查;
- 第二:用户再次回答正确以后,
improving能不能更新为mastered。
所以,这一篇就从页面中的“复习薄弱点”开始,把整个 AI 面试教练捋一遍。
从“复习薄弱点”进入项目
按照上一篇的操作完成两次回答以后,页面右侧的“短期记忆与长期记忆”应该处于“提升中”状态。
这时,点击页面左侧的“复习薄弱点”。
这个按钮会调用:createSession('review')
点击以后,发送的仍然是新建面试请求:
POST /api/sessions
Content-Type: application/json
x-demo-token: demo-linxia
{
"kind": "review",
"mode": "replay"
}
这次和第一篇唯一明显的区别,是 kind 变成了 review。
不过,大家要注意:这里创建的仍然是一场新面试。
服务端会生成新的 sessionId,Checkpointer 也会使用新的 thread_id。
比如:
- 第一场面试:
thread_id = f51688c6-... - 这次薄弱点复测:
thread_id = 8d72cb40-...
两个 Thread 不同,所以新面试不会把上一场面试的所有消息全部复制过来。
新的 sessionId 准备好以后,InterviewService.createSession() 会调用:
这次传入的是 event: 'start',表示启动一场新的面试。
Graph 会先从 START 进入 dispatch
dispatch 后面的条件路由会根据 event 决定下一步:
当前的 event 是 start,不是 answer,所以 Graph 会进入 prepare_question
prepare_
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
