Skip to content

第二部分:让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密钥,避免泄露):
    1. 创建.env文件:API_KEY="你的密钥"
    2. 代码中加载:
      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人实现优化功能,1人负责测试与记录bug;
  2. 编码:基于模板修改,参考“功能升级清单”添加特色(如“语文助手”自动标注拼音);
  3. 测试:用“连续问题”验证记忆功能(如“什么是方程→举一个例子→这个例子中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. 小组展示:每组派1人演示助手功能,说明“记忆功能如何实现”“优化了什么”;
  2. 多维评价:用评价表打分(功能完整性30%+易用性30%+创意性40%),评选“最贴心助手”“最有创意助手”。

五、总结与拓展(10分钟)

课堂总结:

  • 历史对话核心:用列表存储用户问题+AI回答,每次请求时传递历史内容;
  • 功能优化方向:分类响应、友好错误提示、安全管理密钥;
  • AI助手的本质:通过“数据传递+逻辑控制”模拟“理解”能力。

拓展任务:

  1. 个人:给助手添加“知识点总结”功能(如对话结束后,AI自动说“今天我们聊了质数和合数,重点是……”);
  2. 小组:设计“校园生活助手”(回答“图书馆开馆时间”“食堂菜单”等,需提前存入校园信息),下次课展示。

教学理论支撑:

  1. 皮亚杰形式运算阶段理论:通过“历史对话存储”理解“动态数据管理”,培养抽象逻辑思维(列表作为“记忆模型”)。
  2. STEAM教育工程思维:按“需求分析→功能设计→编码实现→测试优化”的工程流程开发项目,体验完整开发周期。
  3. 社会建构主义理论:小组分工与互评促进知识共享,通过“解释给同伴听”深化对API调用逻辑的理解。