创建一个 数学助教 AI,它可以解题、讲解概念、生成练习题,甚至批改作业!💡
1. 实现思路
✅ 目标:
- 用户输入数学问题,AI 进行解答 + 详细讲解
- 可以根据年级或难度级别,生成练习题
- 批改作业,指出错误并给出正确解法
- 可选:支持 LaTeX 公式格式化,输出更专业的数学表达
✅ 方法:
- 用 GPT-4 处理数学问题
- 设置 Prompt 让 AI 模拟数学老师
- 用 LangChain 创建一个可交互的 AI 助教
- 可选:结合 Wolfram Alpha 增强数学计算能力
2. 安装必要的工具
pip install openai langchain
如果你想让 AI 计算更复杂的数学公式,可以再安装 Wolfram Alpha:
pip install wolframalpha
3. 代码示例:GPT-4 数学助教
import openai
# OpenAI API Key(请替换成你的 API Key)
API_KEY = "your-api-key"
def math_tutor(question):
"""让 GPT-4 充当数学助教,解答问题并详细讲解"""
prompt = f"""你是一位专业的数学助教,帮助学生理解数学问题。
请用详细的步骤解答以下问题,并提供清晰的解释:
问题:
{question}
请确保你的回答:
1. 包含 **完整的解题步骤** 和 **详细的逻辑推导**
2. 使用简单易懂的语言,适合初中和高中生
3. 必要时用 LaTeX 公式表示数学表达式
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
# 测试数学助教
question = "求解方程 x^2 + 5x + 6 = 0"
answer = math_tutor(question)
print(answer)
4. 代码示例:AI 生成练习题
def generate_math_problems(level="初中", topic="代数", num_problems=5):
"""让 AI 生成数学练习题"""
prompt = f"""你是一位专业的数学老师,请根据以下要求生成 {num_problems} 道练习题:
- 适用年级:{level}
- 知识点:{topic}
- 题目难度适中,适合学生自主练习
- 避免重复,涵盖不同类型的问题
- 提供答案(但不显示在题目里)
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
# 测试生成练习题
problems = generate_math_problems(level="高中", topic="微积分", num_problems=3)
print(problems)
5. 代码示例:AI 批改数学作业
def grade_math_homework(student_answer, correct_answer):
"""让 AI 批改数学作业,并给出反馈"""
prompt = f"""你是一位数学老师,请批改学生的答案:
✅ **题目**:
{correct_answer['question']}
📌 **学生的答案**:
{student_answer}
🎯 **正确答案**:
{correct_answer['answer']}
请:
1. **判断学生的答案是否正确**
2. **如果错误,指出错误原因**
3. **提供正确的解法,并解释清楚**
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
# 测试批改作业
correct_answer = {
"question": "求解方程 x^2 - 4x + 3 = 0",
"answer": "x = 1 或 x = 3"
}
student_answer = "x = 2 或 x = 3"
feedback = grade_math_homework(student_answer, correct_answer)
print(feedback)
用 AI 识别手写数学题并解答 📖✍️
AI 识别手写数学题,然后 自动解答 并提供详细讲解,这样学生可以直接拍照求解!📸🎯
1. 实现思路
✅ 目标:
- 用 OCR 识别手写数学题(光学字符识别)
- 用 GPT-4 进行数学解答,提供详细步骤
- 返回答案,并支持 LaTeX 公式 让公式更清晰
✅ 方法:
- 使用 Tesseract OCR 识别手写数学题
- 将识别的题目输入 GPT-4
- 生成详细解答
- 支持 LaTeX 公式格式化,使数学表达更专业
2. 安装必要的工具
pip install openai pytesseract pillow numpy opencv-python matplotlib
👉 pytesseract
:Tesseract OCR 引擎,用于识别手写文字
👉 Pillow
和 OpenCV
:处理图片
👉 OpenAI
:调用 GPT-4 进行解答
3. 配置 Tesseract OCR
- 下载 Tesseract OCR:官方安装链接
- 安装后,找到安装路径(如
C:\Program Files\Tesseract-OCR\tesseract.exe
) - 在代码中配置:
import pytesseract
# 设置 Tesseract-OCR 路径(Windows)
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
4. 代码示例:从手写数学题图片解析并解答
import openai
import pytesseract
from PIL import Image
import cv2
import numpy as np
# OpenAI API Key(请替换成你的 API Key)
API_KEY = "your-api-key"
def preprocess_image(image_path):
"""预处理图片以提高 OCR 识别率"""
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
img = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
return img
def extract_math_question(image_path):
"""使用 OCR 识别手写数学题"""
img = preprocess_image(image_path)
text = pytesseract.image_to_string(img, config="--psm 6")
return text.strip()
def solve_math_problem(math_question):
"""让 GPT-4 解答数学问题,并提供详细步骤"""
prompt = f"""你是一位数学助教,帮助学生解答数学问题。
请详细解答以下数学题目,并提供清晰的推导过程:
📌 **题目**:
{math_question}
请确保你的回答:
1. **包含完整的解题步骤** 和 **逻辑推导**
2. **使用 LaTeX 公式格式化数学表达式**
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
def process_math_image(image_path):
"""完整流程:从图片识别数学题 -> AI 计算答案"""
math_question = extract_math_question(image_path)
print(f"📸 识别出的数学题:{math_question}\n")
if not math_question:
return "❌ 无法识别数学题,请提供更清晰的图片!"
answer = solve_math_problem(math_question)
return answer
# 测试手写数学题解析
image_path = "handwritten_math.jpg" # 替换为你的手写数学题图片
solution = process_math_image(image_path)
print("📝 AI 解答:\n", solution)
5. 代码运行流程
1️⃣ 用户上传手写数学题图片(handwritten_math.jpg
)
2️⃣ Tesseract OCR 识别数学题
3️⃣ GPT-4 解题,提供详细解答
4️⃣ 返回结果,格式化数学公式
6. 示例
输入:手写数学题(图片)
✍️ 题目(手写):
x^2 + 5x + 6 = 0
输出:AI 解析 + 详细解答
📸 识别出的数学题:x^2 + 5x + 6 = 0
📝 AI 解答:
首先,我们解一元二次方程:
\[
x^2 + 5x + 6 = 0
\]
使用因式分解法:
\[
(x + 2)(x + 3) = 0
\]
解得:
\[
x = -2, \quad x = -3
\]
将 AI 数学解题过程保存为 PDF,方便学生复习📄📚
你希望 AI 自动生成 PDF,记录数学题的解答步骤,让学生可以保存或打印复习资料!📜✍️
1. 实现思路
✅ 目标:
- OCR 识别手写数学题
- GPT-4 生成详细解答
- 自动保存为 PDF(格式清晰,支持 LaTeX 公式)
✅ 方法:
- 用
pytesseract
进行 OCR 识别 - 用
GPT-4
进行 数学解答 - 用
reportlab
生成 PDF,并支持 LaTeX 公式
2. 安装必要的工具
pip install openai pytesseract pillow numpy opencv-python reportlab
👉 reportlab
:用于生成 PDF
👉 pytesseract
:用于 OCR 识别手写数学题
👉 Pillow/OpenCV
:用于图片处理
3. 代码示例
import openai
import pytesseract
from PIL import Image
import cv2
import numpy as np
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
# OpenAI API Key(请替换成你的 API Key)
API_KEY = "your-api-key"
def preprocess_image(image_path):
"""预处理图片,提高 OCR 识别率"""
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
img = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
return img
def extract_math_question(image_path):
"""使用 OCR 识别手写数学题"""
img = preprocess_image(image_path)
text = pytesseract.image_to_string(img, config="--psm 6")
return text.strip()
def solve_math_problem(math_question):
"""使用 GPT-4 解答数学问题"""
prompt = f"""你是一位数学助教,帮助学生解答数学问题。
请详细解答以下数学题目,并提供清晰的推导过程:
📌 **题目**:
{math_question}
请确保你的回答:
1. **包含完整的解题步骤**
2. **使用 LaTeX 公式格式化数学表达式**
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
def save_to_pdf(math_question, solution, pdf_filename="math_solution.pdf"):
"""将数学解题过程保存为 PDF"""
c = canvas.Canvas(pdf_filename, pagesize=letter)
width, height = letter
c.setFont("Helvetica", 14)
c.drawString(100, height - 100, "📖 数学解题报告")
c.setFont("Helvetica", 12)
c.drawString(100, height - 130, "📌 题目:")
c.drawString(120, height - 150, math_question)
c.drawString(100, height - 180, "📝 详细解答:")
# 将解题步骤换行写入 PDF
y_position = height - 200
for line in solution.split("\n"):
c.drawString(120, y_position, line)
y_position -= 20
c.save()
print(f"✅ PDF 生成完成:{pdf_filename}")
def process_math_image(image_path):
"""完整流程:从图片识别数学题 -> AI 计算答案 -> 生成 PDF"""
math_question = extract_math_question(image_path)
print(f"📸 识别出的数学题:{math_question}\n")
if not math_question:
return "❌ 无法识别数学题,请提供更清晰的图片!"
solution = solve_math_problem(math_question)
# 生成 PDF
save_to_pdf(math_question, solution)
return solution
# 测试:输入手写数学题图片,生成 PDF
image_path = "handwritten_math.jpg" # 替换成你的图片
solution = process_math_image(image_path)
print("📝 AI 解答:\n", solution)
4. 代码运行流程
1️⃣ 用户上传手写数学题图片(handwritten_math.jpg
)
2️⃣ Tesseract OCR 识别数学题
3️⃣ GPT-4 解题,提供详细解答
4️⃣ 自动生成 PDF 文件,保存详细解题过程
5. 示例
输入:手写数学题(图片)
✍️ 题目(手写):
x^2 + 5x + 6 = 0
输出:AI 解析 + PDF 生成
📸 识别出的数学题:x^2 + 5x + 6 = 0
✅ PDF 生成完成:math_solution.pdf
生成的 PDF 内容
📜 数学解题报告
📌 题目:
x^2 + 5x + 6 = 0
📝 详细解答:
首先,我们解一元二次方程:
x^2 + 5x + 6 = 0
使用因式分解法:
(x + 2)(x + 3) = 0
解得:
x = -2, x = -3
📚 AI 自动整理错题集,生成复习题!
你希望 AI 自动整理错题集,然后生成个性化复习题,帮助学生查漏补缺!📖✅
1. 实现目标
✅ 输入:
- 学生提交的 手写或电子版数学题
- 学生的 解答 及 正确答案
✅ AI 处理:
- 检测错题(比对学生答案与正确答案)
- 分析学生常错知识点(统计错误模式)
- 生成个性化复习题(GPT-4 自动推荐类似题目)
✅ 输出:
- 错题整理报告(PDF/Excel)
- 个性化复习题集
- 重点知识点总结
2. 安装必要的工具
pip install openai pandas pytesseract pillow numpy opencv-python reportlab
👉 pandas
:处理错题数据
👉 pytesseract
:OCR 识别手写题目
👉 reportlab
:生成 PDF 复习资料
👉 OpenAI
:用 GPT-4 生成复习题
3. 代码示例
import openai
import pandas as pd
import pytesseract
from PIL import Image
import cv2
import numpy as np
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
# OpenAI API Key(请替换成你的 API Key)
API_KEY = "your-api-key"
# 学生的答题记录(示例数据)
student_answers = [
{"question": "x^2 + 5x + 6 = 0", "student_answer": "-3, -1", "correct_answer": "-3, -2"},
{"question": "∫ x dx", "student_answer": "x^2", "correct_answer": "x^2 / 2 + C"},
]
def analyze_mistakes(student_answers):
"""找出学生的错题"""
wrong_questions = []
for entry in student_answers:
if entry["student_answer"] != entry["correct_answer"]:
wrong_questions.append(entry)
return wrong_questions
def generate_review_questions(wrong_questions):
"""使用 GPT-4 生成个性化复习题"""
prompt = "请根据以下错题,生成类似的复习题,并标注正确答案。\n\n"
for i, question in enumerate(wrong_questions):
prompt += f"{i+1}. 原题:{question['question']}\n"
prompt += "\n请确保复习题:\n1. 难度相似\n2. 覆盖相同知识点\n3. 附带正确答案\n"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
def save_to_pdf(wrong_questions, review_questions, pdf_filename="review_material.pdf"):
"""将错题集和复习题保存为 PDF"""
c = canvas.Canvas(pdf_filename, pagesize=letter)
width, height = letter
c.setFont("Helvetica", 14)
c.drawString(100, height - 100, "📖 错题整理 & 复习题")
c.setFont("Helvetica", 12)
c.drawString(100, height - 130, "📌 你的错题:")
y_position = height - 150
for i, question in enumerate(wrong_questions):
c.drawString(120, y_position, f"{i+1}. {question['question']}")
c.drawString(140, y_position - 20, f"你的答案:{question['student_answer']}")
c.drawString(140, y_position - 40, f"正确答案:{question['correct_answer']}")
y_position -= 60
c.drawString(100, y_position, "📝 推荐复习题:")
y_position -= 20
for line in review_questions.split("\n"):
c.drawString(120, y_position, line)
y_position -= 20
c.save()
print(f"✅ PDF 生成完成:{pdf_filename}")
# 运行错题分析 & 生成复习题
wrong_questions = analyze_mistakes(student_answers)
review_questions = generate_review_questions(wrong_questions)
# 生成 PDF
save_to_pdf(wrong_questions, review_questions)
4. 代码运行流程
1️⃣ 学生提交数学题 & 答案
2️⃣ AI 检测错题(比对正确答案)
3️⃣ GPT-4 生成个性化复习题
4️⃣ 整理成 PDF,方便复习
5. 示例
输入
✅ 学生答案:
题目 | 学生答案 | 正确答案 |
---|---|---|
x² + 5x + 6 = 0 | -3, -1 | -3, -2 |
∫ x dx | x² | x²/2 + C |
输出:AI 生成的 PDF
📜 错题整理 & 复习题
📌 你的错题:
1. x² + 5x + 6 = 0
你的答案:-3, -1
正确答案:-3, -2
2. ∫ x dx
你的答案:x²
正确答案:x² / 2 + C
📝 推荐复习题:
1. 计算方程 x² + 4x + 4 = 0 的解。
2. 求 ∫ x² dx 的结果。
📚 AI 生成个性化错题解析,每题详细讲解!
你希望 AI 不仅整理错题,还逐题生成详细解析,帮助学生真正理解错误原因!📖✅
1. 实现目标
✅ 输入:
- 错题(手写/电子版)
- 学生的错误答案
- 正确答案
✅ AI 处理:
- 比对学生答案和正确答案
- AI 详细解析解题过程(GPT-4 生成)
- 分析错误原因,给出学习建议
✅ 输出:
- 详细解题报告(PDF)
- 错题解析(步骤清晰,包含公式)
- AI 给出针对性学习建议
2. 安装必要的工具
pip install openai pandas reportlab
👉 pandas
:处理错题数据
👉 reportlab
:生成 PDF 解析报告
👉 OpenAI GPT-4
:提供详细解答
3. 代码示例
import openai
import pandas as pd
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
# OpenAI API Key(请替换成你的 API Key)
API_KEY = "your-api-key"
# 学生错题示例(手动输入或从 Excel/PDF 读取)
student_mistakes = [
{
"question": "x^2 + 5x + 6 = 0",
"student_answer": "-3, -1",
"correct_answer": "-3, -2",
},
{
"question": "∫ x dx",
"student_answer": "x^2",
"correct_answer": "x^2 / 2 + C",
},
]
def generate_detailed_explanation(question, student_answer, correct_answer):
"""使用 GPT-4 生成详细解析"""
prompt = f"""你是一位数学老师,请详细解析以下错题:
📌 **题目**:
{question}
❌ **学生的答案**:
{student_answer}
✅ **正确答案**:
{correct_answer}
请提供:
1. **完整的解题步骤**
2. **分析错误原因**
3. **针对性学习建议**
4. **公式用 LaTeX 格式书写**
请确保解释清晰易懂,适合学生学习。"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
api_key=API_KEY,
)
return response["choices"][0]["message"]["content"]
def save_to_pdf(mistakes, explanations, pdf_filename="mistake_analysis.pdf"):
"""将错题解析保存为 PDF"""
c = canvas.Canvas(pdf_filename, pagesize=letter)
width, height = letter
c.setFont("Helvetica", 14)
c.drawString(100, height - 100, "📖 错题解析报告")
c.setFont("Helvetica", 12)
y_position = height - 130
for i, mistake in enumerate(mistakes):
c.drawString(100, y_position, f"📌 题目 {i+1}: {mistake['question']}")
c.drawString(120, y_position - 20, f"❌ 你的答案:{mistake['student_answer']}")
c.drawString(120, y_position - 40, f"✅ 正确答案:{mistake['correct_answer']}")
y_position -= 70 # 空出位置写解析
for line in explanations[i].split("\n"):
c.drawString(140, y_position, line)
y_position -= 20
y_position -= 40 # 分隔每道题
c.save()
print(f"✅ PDF 生成完成:{pdf_filename}")
# 运行 AI 解析错题
explanations = [
generate_detailed_explanation(m["question"], m["student_answer"], m["correct_answer"])
for m in student_mistakes
]
# 生成 PDF
save_to_pdf(student_mistakes, explanations)
4. 代码运行流程
1️⃣ 输入错题 + 学生答案 + 正确答案
2️⃣ GPT-4 逐题生成详细解析(步骤 + 错误原因 + 学习建议)
3️⃣ AI 生成 PDF,学生可以下载打印
5. 示例
输入
✅ 学生答案:
题目 | 学生答案 | 正确答案 |
---|---|---|
x² + 5x + 6 = 0 | -3, -1 | -3, -2 |
∫ x dx | x² | x²/2 + C |
输出:AI 详细解析
📜 错题解析报告(PDF)
📌 题目:
x² + 5x + 6 = 0
❌ 你的答案:
-3, -1
✅ 正确答案:
-3, -2
📝 **解题步骤**
1. 我们解一元二次方程:
x² + 5x + 6 = 0
2. 进行因式分解:
(x + 2)(x + 3) = 0
3. 解得:
x = -2, x = -3
🚨 **你的错误**
你把 -2 错看成 -1。
🎯 **学习建议**
注意因式分解时的符号变化,可多做类似题目巩固。
---
📌 题目:
∫ x dx
❌ 你的答案:
x²
✅ 正确答案:
x² / 2 + C
📝 **解题步骤**
1. 计算不定积分:
∫ x dx = (x² / 2) + C
🚨 **你的错误**
你漏掉了 `1/2`,并且少写了 `+ C`。
🎯 **学习建议**
牢记 **不定积分** 一定要加上 `+ C`,避免丢常数项。