ClareCourseWare / DATA_COLLECTION_SUMMARY.md
claudqunwang's picture
Add Clare product UI: run_web.sh, README, exclude hf_space from push
c8c6034

Clare 登录与数据收集说明

一、登录机制

1.1 当前实现

  • 入口:侧边栏 “Student Login” → 输入 Student NameEmail/ID → 点击 “Enter”。
  • 本质前端身份标识,不是账号密码认证。
    • 不校验姓名/邮箱是否真实、是否已注册。
    • 不连接学校 SSO 或任何外部认证系统。
  • 用途
    • 解锁聊天、导出、Quiz、TTS 等按钮(未填时这些功能不可用)。
    • 在需要时作为 “学生标识” 参与日志(见下文)。

1.2 登录后保存的内容

所有“登录后”的状态都保存在 Gradio 的会话状态(gr.State) 里,且 仅存在于当前会话

状态 含义 持久化
user_name_state 学生姓名
user_id_state Email/ID
weakness_state 弱项列表
cognitive_state_state 认知状态
course_outline_state 课程大纲
rag_chunks_state 上传文件 RAG 块
聊天历史 本轮对话
  • 刷新页面或关闭标签页 → 上述状态全部清空,相当于新会话。
  • 没有数据库、没有后端用户表、没有把学生信息或对话存到文件

因此:当前没有“根据学生信息建立并持久化个人档案”的机制,只有“当前这次访问”内的状态。


二、与 AI 互动的数据是否被收集?

2.1 设计上的“收集”逻辑(LangSmith)

代码里设计了把部分互动数据上报到 LangSmith 的逻辑:

  • 数据集名clare_user_events(需在 LangSmith 中先创建该 dataset)。
  • 上报内容log_event)包括:
    • student_id:即当前输入的 Email/ID(或未登录时为 "ANON"
    • event_type:事件类型
    • question / answer:问题与回答(部分事件)
    • timestamplatency_msmodel_namelanguagelearning_mode 等元数据

会尝试上报的事件类型包括:

event_type 含义
chat_turn 每次和 Clare 的一轮问答
micro_quiz_start 开始 Micro-Quiz
like 点赞某条回答
dislike 点踩某条回答
detailed_feedback 提交详细反馈

也就是说:若 LangSmith 配置成功,理论上会按“学生 ID + 事件类型”收集这些与 AI 的互动数据

2.2 实际运行情况

  • 你之前的日志里有:“LangSmith log failed: Dataset clare_user_events not found”
  • 说明:当前环境里 LangSmith 写入失败,多半是因为:
    • 未在 LangSmith 中创建名为 clare_user_events 的 dataset,或
    • API 密钥/项目配置不正确。

因此:在当前配置下,这些互动数据并没有被成功写入 LangSmith,即 没有在实际落地存储


三、总结回答你的问题

  • 登录后,系统会不会根据学生信息“建立”个人档案?
    不会。 没有用户库、没有个人档案表,只有当前会话里的姓名/ID 和状态,刷新即丢失。

  • 会不会“收集”与 AI 的互动数据?
    设计上会(通过 LangSmith,且带 student_id),但 目前因为 LangSmith 报错,实际上没有成功写入任何持久化存储

  • 数据存在哪里?

    • 会话内:仅在浏览器与 Gradio 进程内存中,不落库、不写文件。
    • 持久化:当前没有;若修好 LangSmith 并创建 clare_user_events,则会在 LangSmith 中按事件类型 + 学生 ID 存储上述互动数据。

四、若要让“登录后根据学生信息建立和收集互动数据”真正生效

  1. LangSmith

    • 在 LangSmith 中创建 dataset:clare_user_events
    • 在 Clare 部署环境(如 HF Space Secrets)中配置正确的 LANGSMITH_API_KEY 等。
    • 这样现有 log_event 才会成功,互动数据才会被收集并按 student_id 可查。
  2. 持久化学生与长期档案(可选)

    • 若需要“为每个学生建立档案、跨会话保留弱项/认知状态/历史记录”,需要自行增加后端存储,例如:
      • 数据库(如 PostgreSQL / SQLite)存用户表 + 会话表 + 事件表;或
      • 用 Notion/Google Sheet 等 API 写入。
    • 当前代码没有这类实现,只有 LangSmith 的“事件日志”设计。

简要结论
当前 Clare 的“登录”只是前端解锁功能用的身份标识;会话状态不持久;与 AI 的互动数据在设计上会通过 LangSmith 按学生 ID 收集,但目前因 LangSmith 未配置成功而没有实际写入,因此目前没有在后台根据学生信息建立或持久化收集与 AI 的互动数据