代码生成场景响应
以下是基于人工智能安全与伦理课程的AI学习工具设限程序,通过模块化设计实现“问题识别-思路引导-边界守护”功能,避免直接提供答案导致思维退化。代码遵循准确性、实用性、可读性、可扩展性准则,适配Python 3.8+,无额外依赖。
import re
from typing import Dict, List, Optional
# ------------------------------
# 配置模块:存储伦理规则与提示模板
# ------------------------------
class Config:
"""集中管理敏感关键词、学科模板、伦理规则"""
# 敏感关键词(触发思路提示的信号)
SENSITIVE_KEYWORDS: List[str] = [
"答案是", "求解", "告诉我答案", "直接给结果",
"帮我做", "写一下代码", "算出来", "步骤结果"
]
# 学科-关键词映射(识别问题类型)
SUBJECT_KEYWORDS: Dict[str, List[str]] = {
"数学": ["方程", "几何", "函数", "证明", "计算"],
"编程": ["代码", "算法", "debug", "实现", "函数"],
"物理": ["力学", "电磁", "实验", "公式", "推导"],
"语文": ["作文", "阅读理解", "翻译", "赏析", "立意"]
}
# 思路提示模板(按学科定制,避免直接答案)
PROMPT_TEMPLATES: Dict[str, str] = {
"数学": "这道题可以先拆解已知条件,回忆相关公式(如{}),尝试分步推导。比如先画示意图/列方程,再验证逻辑漏洞。",
"编程": "这个问题核心是{}逻辑,建议先明确输入输出,拆解成小函数(如数据读取→处理→输出),用伪代码梳理流程后再写代码。",
"物理": "从{}定律出发,分析受力/能量转化过程,画状态变化图,注意单位统一和临界条件。",
"语文": "先抓题干关键词(如{}),结合上下文找主旨,用'是什么-为什么-怎么办'框架组织思路。",
"通用": "试着把问题拆成3个小问,逐个查资料/回忆知识点,最后串联结论。记住:过程比结果更重要。"
}
# ------------------------------
# 输入处理模块:获取并清洗学生问题
# ------------------------------
def get_student_question() -> str:
"""获取用户输入,处理空值异常"""
question = input("请输入作业题(描述问题即可):").strip()
if not question:
raise ValueError("问题不能为空,请重新输入")
return question
# ------------------------------
# 问题分类模块:识别敏感意图与学科类型
# ------------------------------
def classify_question(question: str) -> tuple[bool, Optional[str]]:
"""
判断是否需要思路提示(含敏感关键词),并识别学科类型
返回:(是否触发提示, 学科类型)
"""
# 检测敏感关键词(不区分大小写)
has_sensitive = any(
re.search(keyword, question, re.IGNORECASE)
for keyword in Config.SENSITIVE_KEYWORDS
)
# 识别学科(匹配首个出现的学科关键词)
subject = "通用"
for subj, keywords in Config.SUBJECT_KEYWORDS.items():
if any(kw in question for kw in keywords):
subject = subj
break
return has_sensitive, subject
# ------------------------------
# 思路提示模块:生成伦理合规的引导内容
# ------------------------------
def generate_ethical_prompt(subject: str, question: str) -> str:
"""基于学科模板生成思路提示,嵌入问题关键词增强针对性"""
template = Config.PROMPT_TEMPLATES.get(subject, Config.PROMPT_TEMPLATES["通用"])
# 提取问题核心词(简单版:取前10个字符+关键词)
core_keyword = re.findall(r"[\u4e00-\u9fa5a-zA-Z]{2,}", question[:20])
core_keyword = core_keyword[0] if core_keyword else "核心概念"
return template.format(core_keyword)
# ------------------------------
# 输出模块:返回提示并强化伦理认知
# ------------------------------
def output_guidance(prompt: str) -> None:
"""输出思路提示,附加伦理提醒"""
print("\n【思路引导】")
print(prompt)
print("\n【伦理提醒】")
print("AI是思考伙伴,不是答案机器。试着按提示自己推导,遇到困难再拆解细化~")
# ------------------------------
# 主程序:整合流程与异常处理
# ------------------------------
def main():
print("=== AI学习工具伦理设限程序 ===")
print("提示:输入作业题,我将引导思路而非直接给答案\n")
try:
# 1. 获取输入
question = get_student_question()
# 2. 分类问题(是否需提示+学科)
need_prompt, subject = classify_question(question)
# 3. 生成并输出引导(无论是否敏感,均强化思考意识)
if need_prompt:
prompt = generate_ethical_prompt(subject, question)
else:
prompt = "这个问题很有探索性!建议先明确'已知什么-想求什么',用思维导图梳理关联知识点。"
output_guidance(prompt)
except ValueError as e:
print(f"输入错误:{e}")
except Exception as e:
print(f"程序异常:{str(e)}(请联系老师反馈)")
if __name__ == "__main__":
main()
README文件(Markdown格式)
# AI学习工具伦理设限程序
## 项目简介
基于**人工智能安全与伦理**课程中的“教育责任”与“批判性思维保护”原则,通过关键词识别与思路引导,避免AI直接提供答案导致学生思维退化,实现“工具辅助思考而非替代思考”的安全边界。
## 安装步骤
1. 安装Python 3.8及以上版本
2. 下载`ai_ethics_limiter.py`文件(无需额外依赖库)
## 使用说明
1. 运行程序:`python ai_ethics_limiter.py`
2. 按提示输入作业题(如“这道数学方程怎么解?”)
3. 查看程序返回的**思路引导**与**伦理提醒**
## 模块说明
| 模块名称 | 功能描述 |
|----------------|--------------------------------------------------------------------------|
| 配置模块 | 存储敏感关键词、学科模板、伦理规则(可扩展新学科/关键词) |
| 输入处理模块 | 获取并校验学生问题,处理空输入异常 |
| 问题分类模块 | 识别“直接求答案”意图(敏感关键词)与学科类型(数学/编程/物理等) |
| 思路提示模块 | 按学科模板生成个性化思路引导(嵌入问题关键词增强针对性) |
| 输出模块 | 返回引导内容并附加伦理提醒,强化“过程重于结果”的认知 |
## 扩展指南
1. **新增学科**:在`Config.SUBJECT_KEYWORDS`和`Config.PROMPT_TEMPLATES`中添加学科键值对
2. **调整敏感词**:修改`Config.SENSITIVE_KEYWORDS`(如增加“帮我写论文”)
3. **增强提示**:在`generate_ethical_prompt`中添加案例库(如数学题示例拆解步骤)
核心知识点卡片
1. AI教育伦理:反思维退化原则
- 核心:AI工具应定位为“思考脚手架”,通过限制直接答案输出,强制学生经历“拆解-推导-验证”过程,保护批判性思维能力。
- 程序体现:通过
"sensitive_keywords"识别偷懒意图,用
"prompt_templates"引导自主思考。
2. 安全边界设定:关键词过滤机制
- 核心:基于自然语言处理(NLP)的简单关键词匹配,在不依赖复杂模型的情况下实现意图识别,平衡效率与伦理。
- 程序体现:
"classify_question"函数用正则匹配敏感词(如“答案是”“帮我做”)。
3. 模块化设计:伦理规则与业务逻辑分离
- 核心:将敏感词、提示模板等伦理配置集中在
"Config"类,业务代码(输入/分类/输出)独立,便于动态调整规则而不影响核心逻辑。
- 程序体现:
"Config"类统一管理所有可变参数,
"generate_ethical_prompt"动态调用模板。
4. 可扩展性:学科自适应提示
- 核心:通过“学科关键词-模板”映射,支持新增学科(如化学、生物)时仅需扩展配置,无需修改核心算法。
- 程序体现:
"SUBJECT_KEYWORDS"与
"PROMPT_TEMPLATES"的键值对结构设计。
使用说明
1. 运行程序后输入作业题(如“用Python实现冒泡排序的代码”);
2. 程序检测到“代码”“实现”等敏感词,识别学科为“编程”,返回提示:“这个问题核心是排序逻辑,建议先明确输入输出,拆解成小函数(如比较→交换→循环),用伪代码梳理流程后再写代码。”;
3. 始终附加伦理提醒,引导学生重视思考过程。程序通过轻量级规则引擎实现伦理设限,可无缝集成到在线学习平台或本地工具中。
关注我,有更多编程干货等着你!