我用Python手搓了一个AI Agent,终于不用被辅导作业气进ICU了!

内容分享23小时前发布
0 0 0

我用Python手搓了一个AI Agent,终于不用被辅导作业气进ICU了!

前言:当程序员遇上“恐辅症”

兄弟们,昨晚是不是又听到邻居吼孩子的咆哮声了? 或者…… 那个咆哮的人就是你自己?

“这道题讲了三遍了! 三遍! 你的脑子是单线程的吗?! ”

作为一个写代码如行云流水的程序员,我们搞得定复杂的分布式系统,修得了半夜的Sev-1 Bug,却往往折戟在小学三年级的奥数题和那张无辜又倔强的小脸面前。

时代变了,大人!

2024是AI元年,2026是Agent爆发年。 如果我们还用肉身去对抗神兽的“磨洋工”,那真是白瞎了我们手中的键盘。 今天,我就带大家用Python + AI ,手搓一个“代理

它不直接给答案,而是像苏格拉底一样引导孩子思考。 这,才是AI该有的样子!


为什么是 Agent 而不是 ChatGPT?

许多人会说:“直接把题目发给ChatGPT不就行了? ”

大错特错! 直接发给ChatGPT,它会直接把答案吐出来。 结果呢? 孩子抄完作业,脑子依然一片空白,第二天考试照样挂科。

我们要做的不是一个“搜题工具”,而是一个Agent(智能体)

  • Chatbot(聊天机器人): 问:1+1等于几? 答:2。
  • AI Agent(智能体): 它拥有人设(Persona)工具(Tools)和记忆(Memory)。 它会观察孩子的题目(视觉识别),分析知识点(RAG),然后一步步提问引导(CoT思维链)。

今天我们的技术栈极其硬核且时髦:
Python 3.10+ (胶水语言YYDS)
LangChain / LangGraph (agent编排神器)
OpenAI GPT-4o / DeepSeek-V3 (目前最强的多模态大模型,DeepSeek性价比无敌)
Streamlit (3分钟搭出前端界面)

我用Python手搓了一个AI Agent,终于不用被辅导作业气进ICU了!

️ 实战开始:三步打造你的“AI 育儿救星”

第一步:赋予它“眼睛” —— 多模态视觉能力

辅导作业的第一步是啥? 看题!
目前的模型(GPT-4o, Claude 3.5, Gemini 1.5, DeepSeek-VL)都已经具备了恐怖的视觉能力。 我们不需要复杂的OCR,直接把图片甩给大模型即可。

import base64
from langchain_core.messages import HumanMessage, SystemMessage

def analyze_homework_image(image_path, model):
    # 将图片转为Base64
    with open(image_path, "rb") as image_file:
        image_data = base64.b64encode(image_file.read()).decode("utf-8")
    
    # 构建多模态消息
    message = HumanMessage(
        content=[
            {"type": "text", "text": "请仔细看这张图片,识别出里面的数学题。"},
            {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}},
        ]
    )
    return model.invoke([message])

第二步:注入灵魂 —— 编写“苏格拉底”提示词 (System Prompt)

这是最核心的一步。 我们要通过Prompt Engineering(提示词工程)把AI催眠成一个“绝不直接给答案”的耐心老师。

TEACHER_PROMPT = """
你目前是一位世界顶级的K12教育专家,擅长“苏格拉底式教学法”。
你的目标是辅导孩子完成作业,但请遵守以下【绝对法则】:

1.  **禁止直接给出答案**:无论孩子怎么问,都不能直接说结果。
2.  **引导式提问**:你需要拆解题目,通过反问引导孩子自己想出下一步。
3.  **语气调整**:你的对象是小学生,语气要活泼、鼓励,多用Emoji,像个大哥哥/大姐姐。
4.  **查漏补缺**:如果孩子错了,指出他的逻辑漏洞,而不是告知他对错。

例如:
孩子:“这道题怎么做?”
错误回答:“选C,由于...”
正确回答:“嘿!我们先看看题目里给了什么条件?记得我们要找的是香蕉的数量,图上有几堆香蕉呢?”
"""

第三步:构建 Agent 工作流 (LangGraph)

单纯的对话是不够的,我们需要引入Tool(工具) 。 列如,如果是一道复杂的几何题,Agent可以调用 Python REPL(代码执行器)来绘图辅助讲解,或者调用计算器验证孩子的算式是否正确。

(这里为了文章通俗性,展示简化逻辑)

from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_community.tools import TavilySearchResults

# 定义工具:列如搜索最新的知识点,或者搜索类似的例题
tools = [TavilySearchResults(max_results=1)]

# 创建Agent
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 模拟辅导过程
response = agent_executor.invoke({
    "input": "我算出来答案是15,对吗?",
    "chat_history": chat_history # 传入之前的对话上下文
})

效果展示

  • 左侧: 用户上传了一张手写的二元一次方程组照片。
  • 右侧对话框:
    • AI: “哇,字写得很工整嘛! 这是一个关于‘鸡兔同笼’的问题。 如果不设方程,你会怎么想呢? 如果所有的动物都抬起两只脚…
    • 孩子(语音输入): “那兔子就摔倒了?”
    • AI: “哈哈,兔子不会摔倒,但是兔子剩下的两只脚还在地上呀! 这时候地上的脚是不是全是兔子的了? ”

看! 这种情绪价值,这种循循善诱,亲爹亲妈能做到吗? 做不到! 由于亲爹亲妈这时候已经在找速效救心丸了!


进阶玩法:加上语音交互 (Voice Mode)

孩子不喜爱打字? 没问题!
Python里接入 OpenAI Whisper (语音转OpenAI Whisper(语音转文字)Edge-TTS / OpenAI TTS(文字转语音)

这就变成了一个真正的“AI家教伴侣”。 把代码跑在树莓派上,或者封装个App,放个平板在桌上,你就可以安心去刷剧/写Bug了。


想学习AI agent:转发关注+私信【资料】

技术不应该只是冰冷的代码,它应该是有温度的。

我用Python手搓了一个AI Agent,终于不用被辅导作业气进ICU了!

© 版权声明

相关文章

暂无评论

none
暂无评论...