Back to Hello Agents

智能编程导师 (Intelligent Programming Tutor)

Co-creation-projects/chen070808-ProgrammingTutor/main.ipynb

1.0.25.9 KB
Original Source

智能编程导师 (Intelligent Programming Tutor)

一个基于多智能体协作的个性化编程学习系统,展示了如何使用 hello-agents 框架构建复杂的 Agent-to-Agent (A2A) 协作系统。

系统架构

本系统采用分层智能体架构:

  • Tutor(导师):主协调智能体,负责与用户交互并调度子智能体
  • Planner(规划师):分析用户需求,制定个性化学习计划
  • Exercise(出题人):根据学习内容生成针对性的编程练习题
  • Reviewer(评审员):评审用户代码,提供专业反馈和改进建议

技术特点

  1. 多智能体协作:使用 AgentTool 将子智能体封装为工具,实现 A2A 通信
  2. 工具调用:Reviewer 配备 CodeRunner 工具,可执行 Python 代码验证
  3. 模块化设计:每个智能体职责单一,易于维护和扩展

演示说明

本 notebook 包含三个完整的测试场景,展示了智能编程导师的核心功能。

步骤 1:环境设置

初始化 LLM 和环境配置。

关键组件

  • HelloAgentsLLM:统一的 LLM 接口
  • .env 文件:存储 API 密钥等敏感信息
  • src 路径:包含自定义智能体和工具的实现
python
# 1. 环境设置
import os
import sys
from dotenv import load_dotenv
from hello_agents import HelloAgentsLLM

load_dotenv()

if "src" not in sys.path:
    sys.path.append(os.path.abspath("src"))

# 初始化 LLM
llm = HelloAgentsLLM()

print("✅ 环境配置完成")
print("✅ LLM 已初始化")

步骤 2:初始化智能编程导师

创建 TutorAgent 实例时,会自动:

  1. 创建 Planner、Exercise、Reviewer 三个子智能体
  2. 将子智能体封装为工具(call_plannercall_exercisecall_reviewer
  3. 注册 CodeRunner 工具给 Reviewer 使用

架构亮点

  • 使用 AgentTool 实现 Agent-to-Agent 调用
  • 每个子智能体有独立的 system_prompt 定义其专业领域
  • Tutor 通过工具调用协调所有子智能体
python
# 2. 初始化 Tutor(自动创建所有子智能体)
from agents.tutor import TutorAgent

print("创建智能编程导师...")
tutor = TutorAgent(llm)

print("\n✅ Tutor 初始化完成!")
print("   - Planner(规划师)已就绪")
print("   - Exercise(出题人)已就绪") 
print("   - Reviewer(评审员)已就绪")

测试 1:请求学习计划

演示 Tutor → Planner 的协作流程。

执行流程

  1. 用户向 Tutor 表达学习目标
  2. Tutor 识别意图并调用 call_planner 工具
  3. Planner 分析需求,生成分模块的学习计划
  4. Tutor 将学习计划友好地呈现给用户

期望输出:包含多个学习模块、时间安排、学习建议的完整学习路径。

python
user_goal = "我想学习 Python 中的列表推导式"
print(f"用户目标: {user_goal}\n")

# Tutor 会调用 call_planner 工具
response = tutor.run(f"用户说:'{user_goal}'。请为用户制定学习计划。")

print("=== Tutor 回应 ===")
print(response)

测试 2:请求练习题

演示 Tutor → Exercise 的协作流程。

执行流程

  1. 用户向 Tutor 请求练习题
  2. Tutor 调用 call_exercise 工具
  3. Exercise 生成结构化的编程练习题
  4. Tutor 返回包含题目描述、示例、约束条件的完整题目

期望输出:一道高质量的编程练习题,包含:

  • 题目描述
  • 输入/输出示例
  • 约束条件
  • 函数签名
python
# Tutor 会调用 call_exercise 工具
response = tutor.run("请给我出一道关于列表推导式的练习题。")

print("=== Tutor 回应 ===")
print(response)

测试 3:提交代码评审

演示 Tutor → Reviewer → CodeRunner 的多层协作流程。

执行流程

  1. 用户提交代码给 Tutor 评审
  2. Tutor 调用 call_reviewer 工具
  3. Reviewer 使用 code_runner 工具执行代码验证
  4. Reviewer 分析代码逻辑、风格和性能
  5. Tutor 返回详细的评审报告

技术亮点

  • Reviewer 能够实际运行代码获取输出
  • 提供结构化的评审反馈(优点、问题、改进建议)
  • 支持代码片段和函数定义两种形式

测试代码说明: 用户尝试解答测试 2 中的练习题(筛选正偶数并求平方),Reviewer 会验证代码的正确性。

python
# 用户尝试解答上面的练习题
user_code = """
def filter_and_square_numbers(numbers):
    return [n * n for n in numbers if n > 0 and n % 2 == 0]

# 测试
test_list = [1, 2, 3, 4, 5, 6, -2, -4, 0]
result = filter_and_square_numbers(test_list)
print(result)
"""

print(f"=== 用户代码 ===\n{user_code}\n")

# Tutor 会调用 call_reviewer 工具
response = tutor.run(f"""用户尝试解答前面的列表推导式练习题,请评审以下代码:

{user_code}

题目要求:筛选出正偶数并返回它们的平方。""")

print("=== Tutor 回应 ===")
print(response)

总结

本演示展示了如何使用 hello-agents 框架构建多智能体协作系统。

关键技术

  1. AgentTool:将智能体封装为工具,实现 A2A 调用

    python
    self.add_tool(AgentTool(
        self.planner,
        name="call_planner",
        description="调用课程规划师"
    ))
    
  2. 工具链:Reviewer 使用 CodeRunner 执行代码

    python
    ReviewerAgent(llm, tools=[CodeRunner()])
    
  3. System Prompt:通过精心设计的提示词定义智能体行为

扩展建议

  • 添加学习进度追踪功能
  • 支持更多编程语言
  • 集成代码风格检查工具(如 Pylint)
  • 添加知识库检索增强(RAG)

项目结构

src/
├── agents/
│   ├── tutor.py      # 主协调智能体
│   ├── planner.py    # 学习计划制定
│   ├── exercise.py   # 练习题生成
│   └── reviewer.py   # 代码评审
└── tools/
    ├── agent_tool.py  # A2A 工具封装
    └── code_runner.py # 代码执行工具