📋 本文目录
一、前言
1.1 本节内容简介
想学习Python,但遇到了这些问题:
-
学完就忘,不知道自己掌握了多少
-
不知道下一步该学什么,很迷茫
-
没有人能一直陪着练,遇到问题没人问
-
想复习的时候,不知道从哪里开始
如果有一个懂你的学习伙伴该多好!
本文展示如何把1-5模块整合起来,构建一个真正懂你的学习导师:
-
记住你的学习进度
-
理解你的学习需求
-
给你个性化学习推荐
-
定期帮你总结和复习
看完你会明白,基础能力如何整合出一个有温度的智能应用!
1.2 为什么需要个人学习导师?
| 痛点 | 解决方案 |
|---|---|
| 学完就忘 | 长期记忆记住你的进度和薄弱环节 |
| 不知道学什么 | 上下文感知给你推荐下一步学习内容 |
| 练习不够 | 工具模式生成练习题和学习卡片 |
| 需要总结 | 总结模式帮你梳理知识点和学习进度 |
| 对话沟通 | 对话管理自然交流,理解你的困惑 |
二、整体设计思路
2.1 5种能力如何配合?
用户说"我想学Python编程"
↓
02_对话管理 → 理解需求,建立对话,询问学习目标
↓
01_工具模式 → 调用学习规划工具、进度追踪工具
↓
04_长期记忆 → 记录学习目标、当前进度、已掌握内容
↓
05_上下文感知 → 感知学习阶段,推荐下一步学习内容
↓
03_总结模式 → 定期总结学习内容,生成知识点图谱
2.2 与单个模块的区别
| 维度 | 单个模块 | 整合后的学习导师 |
|---|---|---|
| 运作方式 | 孤立工具 | 完整闭环系统 |
| 响应方式 | 被动响应 | 主动引导学习 |
| 记忆能力 | 短期对话 | 长期学习记忆 |
| 目标用户 | 技术开发者 | 普通学习者 |
三、学习导师工具链演示
3.1 完整流程
用户输入
↓
01_工具模式 → 进度追踪、练习生成、知识卡片
02_对话管理 → 自然对话、意图识别
03_总结模式 → 学习总结、知识点图谱
04_长期记忆 → 学习进度、已掌握内容
05_上下文感知 → 感知阶段、推荐内容
↓
个性化输出
3.2 运行演示
cd personal_learning_tutor
../venv_py38/Scripts/python.exe learning_tutor_chain_demo.py
3.3 生成的输出文件
-
output_progress.md- 学习进度记录 -
output_summary.md- 学习总结 -
output_recommendations.md- 推荐内容 -
output_practice.json- 练习题
四、学习导师Agent整合实战
4.1 前置要求
-
安装并启动 Ollama
-
拉取模型:
ollama pull qwen2.5:3b-instruct -
准备好学习环境
4.2 完整Agent代码(简化版)
"""
交互式个人学习导师 - 简化可运行版
直接调用 Ollama API,不依赖复杂框架
"""
import requests
import json
import sys
import os
# 添加当前目录到路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
# 导入我们的学习工具
from tool_1_progress_tracker import progress_tracker
from tool_2_knowledge_card import knowledge_card
from tool_3_learning_summarizer import learning_summarizer
from tool_4_practice_generator import practice_generator
from tool_5_recommender import recommender
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "qwen2.5:3b-instruct"
class LearningTutor:
"""学习导师 - 简化版"""
def __init__(self):
print("=" * 60)
print("个人学习导师 - 初始化中...")
print("=" * 60)
# 对话历史存储
self.conversation_history = []
print("[OK] 个人学习导师初始化完成!")
print()
def call_ollama(self, prompt, max_tokens=300):
"""调用 Ollama API"""
try:
response = requests.post(
OLLAMA_URL,
json={
"model": MODEL_NAME,
"prompt": prompt,
"stream": False,
"options": {
"temperature": 0.7,
"num_predict": max_tokens
}
},
timeout=60
)
if response.status_code == 200:
return response.json().get("response", "")
else:
return f"调用出错: {response.status_code}"
except Exception as e:
return f"连接出错: {e}"
def chat(self, user_input):
"""和用户对话"""
print(f"\n用户: {user_input}")
# 保存用户输入到历史
self.conversation_history.append({
"role": "user",
"content": user_input
})
# 构造提示词
prompt = self._build_prompt(user_input)
# 调用模型生成回复
print("导师思考中...", end="", flush=True)
try:
assistant_reply = self.call_ollama(prompt, max_tokens=300)
except Exception as e:
assistant_reply = f"抱歉,我遇到了问题: {str(e)}"
print("\r" + " " * 20 + "\r", end="")
# 保存助手回复
self.conversation_history.append({
"role": "assistant",
"content": assistant_reply
})
print(f"导师: {assistant_reply}")
return assistant_reply
def _build_prompt(self, user_input):
"""构造提示词"""
# 构建历史对话文本
history_text = ""
for msg in self.conversation_history[:-1]:
if msg["role"] == "user":
history_text += f"学生: {msg['content']}\n"
else:
history_text += f"导师: {msg['content']}\n"
prompt = f"""你是一个友好的个人学习导师。以下是对话历史:
{history_text}
学生刚刚说: "{user_input}"
请友好地回应学生,保持对话自然。你可以帮助学生:
1. 规划学习路径
2. 解答学习问题
3. 生成练习题
4. 总结学习内容
5. 推荐下一步学习内容
记住,你是在指导和鼓励学生学习!
"""
return prompt
def get_progress(self):
"""查看学习进度"""
return progress_tracker.invoke({})
def get_summary(self):
"""查看学习总结"""
return learning_summarizer.invoke({})
def get_recommendations(self):
"""获取学习推荐"""
return recommender.invoke({})
def generate_practice(self):
"""生成练习题"""
return practice_generator.invoke({})
def main():
"""主函数 - 交互式对话"""
print()
print("=" * 60)
print("个人学习导师 - 交互式对话")
print("=" * 60)
print()
print("指令:")
print(" - 直接输入内容与导师对话")
print(" - progress - 查看学习进度")
print(" - summary - 查看学习总结")
print(" - next - 获取下一步推荐")
print(" - practice - 生成练习题")
print(" - quit - 退出")
print()
print("=" * 60)
# 初始化Agent
try:
tutor = LearningTutor()
except Exception as e:
print(f"初始化失败: {e}")
print("\n提示: 请确保Ollama正在运行,并且已拉取qwen2.5:3b-instruct模型")
print("运行命令: ollama pull qwen2.5:3b-instruct")
return
print()
print("开始学习吧!")
print()
while True:
try:
user_input = input("> ").strip()
if not user_input:
continue
# 处理特殊命令
if user_input.lower() in ["quit", "exit"]:
print("\n再见!加油学习哦!")
print("\n" + "=" * 60)
print("学习总结:")
print("=" * 60)
print(tutor.get_summary())
break
if user_input.lower() == "progress":
print("\n" + "=" * 60)
print("学习进度:")
print("=" * 60)
print(tutor.get_progress())
print()
continue
if user_input.lower() == "summary":
print("\n" + "=" * 60)
print("学习总结:")
print("=" * 60)
print(tutor.get_summary())
print()
continue
if user_input.lower() == "next":
print("\n" + "=" * 60)
print("下一步推荐:")
print("=" * 60)
print(tutor.get_recommendations())
print()
continue
if user_input.lower() == "practice":
print("\n" + "=" * 60)
print("练习题:")
print("=" * 60)
print(tutor.generate_practice())
print()
continue
# 正常对话
tutor.chat(user_input)
except KeyboardInterrupt:
print("\n\n再见!")
break
except Exception as e:
print(f"\n发生错误: {e}")
if __name__ == "__main__":
main()
4.3 运行Agent
cd personal_learning_tutor
../venv_py38/Scripts/python.exe interactive_learning_tutor.py
4.4 Agent特殊命令
-
progress- 查看学习进度 -
summary- 查看学习总结 -
next- 下一步推荐 -
practice- 生成练习题 -
quit或exit- 退出
4.5 真实交互演示
============================================================
个人学习导师 - 交互式对话
============================================================
指令:
- 直接输入内容与导师对话
- progress - 查看学习进度
- summary - 查看学习总结
- next - 获取下一步推荐
- practice - 生成练习题
- quit - 退出
============================================================
[OK] 个人学习导师初始化完成!
开始学习吧!
> 你好,我想学Python编程
学生: 你好,我想学Python编程
导师: 你好!欢迎开始你的Python学习之旅!Python是一门很有趣且实用的编程语言。
让我先了解一下你的情况:你之前有编程基础吗?你的学习目标是什么(比如想做网站、数据分析、还是人工智能)?
> 没有基础,我想做一些自动化脚本
学生: 没有基础,我想做一些自动化脚本
导师: 太好了!自动化是Python的强项,非常适合初学者!
根据你的情况,我建议这样的学习路径:
1. 首先学习Python基础语法(变量、数据类型、条件语句)
2. 然后学习函数和模块
3. 最后学习文件操作和自动化库
你想先从哪里开始?
> 先学基础语法吧
学生: 先学基础语法吧
导师: 好的!那我们开始学习Python基础语法!
首先,你需要了解:
1. 变量和数据类型(数字、字符串、列表)
2. 条件语句(if/elif/else)
3. 循环(for/while)
需要我帮你生成一些基础练习题吗?
> progress
============================================================
学习进度:
============================================================
当前学习阶段: Python入门
已掌握内容: 无(刚开始)
下一步建议: 学习变量和数据类型
> practice
============================================================
练习题:
============================================================
Python基础练习题:
1. 声明一个变量name,赋值为你的名字
2. 计算1到10的和
3. 判断一个数是奇数还是偶数
4. 创建一个包含3种水果的列表
> quit
再见!加油学习哦!
============================================================
学习总结:
============================================================
本次学习:
- 学习目标: Python自动化脚本
- 当前阶段: Python入门
- 进度: 刚开始,需要学习基础语法
五、学习导师系统的核心价值
5.1 对比:传统学习 vs AI学习导师
| 维度 | 传统学习 | AI学习导师 |
|---|---|---|
| 个性化 | ❌ 通用教材、视频 | ✅ 你的专属学习路径 |
| 长期记忆 | ❌ 靠自己记笔记 | ✅ 自动记住学习进度 |
| 进度追踪 | ❌ 手动记录、整理 | ✅ 自动追踪、可视化 |
| 复习提醒 | ❌ 靠自己规划 | ✅ 主动提醒复习 |
| 练习反馈 | ❌ 需要找老师批改 | ✅ 即时练习、即时反馈 |
| 学习动力 | ❌ 需要很强自律 | ✅ 有陪伴、有鼓励 |
5.2 具体价值场景
场景1:初学者入门规划
-
问题:不知道从哪里开始
-
解决:根据目标规划完整路径
场景2:技能提升路径
-
问题:学了后面忘前面
-
解决:定期总结、复习提醒
场景3:考试复习系统
-
问题:知识点太多,抓不住重点
-
解决:生成知识图谱、重点标记