Appearance
第二部分:让AI更聪明——对话优化与实用功能开发
课题
会“记事儿”的AI助手——历史对话与功能升级
教学时间
2课时(90分钟)
课前准备
- 教师端:电脑(预装
python-dotenv库管理API密钥)、投影仪、“对话记忆”对比视频(普通助手vs带记忆的助手)、历史对话流程图(新增“记忆区”模块)、安全升级版API(支持多轮对话)。 - 学生端:电脑(Python环境+
python-dotenv库)、笔记本、“功能升级清单”(可选功能:记忆对话、分类回答、错误提示)、小组开发计划书(含分工)。 - 教学素材:多轮对话代码模板、
dotenv配置教程、“AI助手评价表”(功能完整性、易用性、创意性)。
一、导入活动:“健忘的AI”vs“贴心的AI”(15分钟)
活动1:体验对比——发现“记忆”的重要性
- 教师演示两个助手:
- 普通助手:用户问“什么是质数?”→回答;再问“它和合数有什么区别?”→AI反问“什么是质数?”(忘记前文)。
- 带记忆的助手:相同提问→AI直接回答“质数是……,而合数是……”(记住前文)。
- 小组讨论:“哪个助手更实用?为什么?”→总结:AI需要“记住历史对话”才能理解上下文。
活动2:“人类记忆”类比——设计对话存储方式
- 提问:“你和朋友聊天时,怎么记住之前说过的话?”→引出“大脑会存储对话内容”。
- 迁移到编程:“让AI记住对话,需要用一个‘容器’存储历史内容”→介绍列表(
history = [])作为“对话记忆盒”。
二、知识点讲解:升级AI助手的核心技术(35分钟)
模块1:历史对话存储——用列表记录上下文(15分钟)
- 原理:每次对话后,将“用户问题+AI回答”存入列表,下次提问时把列表内容传给AI,让它“回顾历史”。
- 代码实现:python
import requests # 初始化“记忆盒”(空列表) history = [] # 循环对话(支持多次提问) while True: user_question = input("你:") if user_question == "退出": break # 输入“退出”结束对话 # 1. 整理历史对话(拼接成字符串,让AI看懂) history_str = "\n".join(history) # 用换行分隔每条记录 # 2. 新问题+历史对话一起发给AI full_prompt = f"历史对话:{history_str}\n现在用户问:{user_question}" # 3. 调用API(参数不变,prompt更新为full_prompt) response = requests.get(api_url, params={"prompt": full_prompt}) answer = response.json()["answer"] print(f"AI:{answer}") # 4. 把新对话存入“记忆盒” history.append(f"用户:{user_question}") history.append(f"AI:{answer}") - 关键说明:
while True实现“循环对话”(反复提问),history.append()动态更新记忆内容。
模块2:功能优化——让助手更“贴心”(20分钟)
- 优化1:分类回答(如区分“数学题”“科学题”,用不同语气):python
# 在full_prompt中加入分类指令 full_prompt = f"如果是数学题,开头加‘📐’;科学题加‘🔬’。{full_prompt}" - 优化2:错误处理升级(如网络断开时提示“请检查WiFi”):python
try: response = requests.get(api_url, params={"prompt": full_prompt}) response.raise_for_status() # 检查请求是否成功(如404/500错误) answer = response.json()["answer"] except requests.exceptions.RequestException as e: answer = f"网络出问题啦:{e},请稍后再试~" - 优化3:安全密钥管理(用
dotenv隐藏API密钥,避免泄露):- 创建
.env文件:API_KEY="你的密钥"; - 代码中加载:python
from dotenv import load_dotenv import os load_dotenv() # 加载.env文件 api_key = os.getenv("API_KEY") # 读取密钥
- 创建
三、项目开发:“学科专属AI助手”(30分钟)
任务目标:
小组合作开发带“记忆功能”的AI助手,至少实现1项优化功能(分类回答/智能错误提示/学科专属指令),并测试3轮连续对话。
开发流程:
- 分工:1人写核心对话逻辑,1人实现优化功能,1人负责测试与记录bug;
- 编码:基于模板修改,参考“功能升级清单”添加特色(如“语文助手”自动标注拼音);
- 测试:用“连续问题”验证记忆功能(如“什么是方程→举一个例子→这个例子中x是什么”)。
示例成果(数学助手片段):
python
# 数学专属AI助手(带记忆+分类标记)
history = []
while True:
user_question = input("数学小助手> ")
if user_question == "再见":
print("AI:下次见!")
break
history_str = "\n".join(history)
full_prompt = f"用📐开头,用小学生能懂的话回答:{history_str}\n用户问:{user_question}"
# 调用API与存储历史(略)四、成果展示与评价(10分钟)
- 小组展示:每组派1人演示助手功能,说明“记忆功能如何实现”“优化了什么”;
- 多维评价:用评价表打分(功能完整性30%+易用性30%+创意性40%),评选“最贴心助手”“最有创意助手”。
五、总结与拓展(10分钟)
课堂总结:
- 历史对话核心:用列表存储
用户问题+AI回答,每次请求时传递历史内容; - 功能优化方向:分类响应、友好错误提示、安全管理密钥;
- AI助手的本质:通过“数据传递+逻辑控制”模拟“理解”能力。
拓展任务:
- 个人:给助手添加“知识点总结”功能(如对话结束后,AI自动说“今天我们聊了质数和合数,重点是……”);
- 小组:设计“校园生活助手”(回答“图书馆开馆时间”“食堂菜单”等,需提前存入校园信息),下次课展示。
教学理论支撑:
- 皮亚杰形式运算阶段理论:通过“历史对话存储”理解“动态数据管理”,培养抽象逻辑思维(列表作为“记忆模型”)。
- STEAM教育工程思维:按“需求分析→功能设计→编码实现→测试优化”的工程流程开发项目,体验完整开发周期。
- 社会建构主义理论:小组分工与互评促进知识共享,通过“解释给同伴听”深化对API调用逻辑的理解。