手把手教你用 AI Agents 搭建智能教学团队系统

文摘   2025-01-16 17:05   新加坡  

前言

🔥 随着 AI Agent 技术的快速发展,越来越多的开发者开始关注如何将 AI 能力应用到实际场景中。今天,我们就来一步步学习如何构建一个强大的智能教学团队系统。这个项目在 GitHub 上已获得 12.6k Star 的关注度,充分说明了其实用价值。

LLM 在生成教育内容和学习路径方面表现出色,但在处理复杂的多步骤工作流程时往往力不从心。虽然你可以让 LLM 创建课程大纲,然后单独设计练习,再手动整理资源 —— 但这个过程既繁琐又需要持续的人工协调。在本教程中,我们将通过构建一个 AI 教学团队系统来解决这个问题。

我们使用 Phidata 和 Composio 来构建 AI agents。

  • Phidata 专门用于构建和编排 AI agents,它提供了 agent 通信、内存管理和工具集成的基础设施。
  • Composio 是一个强大的工具,可以将 AI agents 与 Google Docs、Gmail 和 GitHub 等外部服务连接起来。它处理认证、管理连接,为我们的 agents 提供了一个安全的工作方式。

一、我们要构建什么

这个 Streamlit 应用程序整合了一个专业的 AI 教学团队,像真实的教学团队一样协同工作:一个创建知识库,一个设计学习路径,一个整理资源,还有一个开发练习材料。

🪄 认识你的 AI 教学团队

  1. 🧠 教授 (Professor Agent)
  • 在 Google Docs 中创建基础知识库
  • 使用适当的标题和章节组织内容
  • 提供详细的解释和示例
  • 输出: 包含目录的综合知识库文档
  2. 🗺️ 学术顾问 (Academic Advisor Agent)
  • 在 Google Docs 中设计结构化的学习路径
  • 创建渐进式的里程碑标记
  • 包含时间估算和前置要求
  • 输出: 包含清晰进度路径的可视化路线图
  3. 📚 研究馆员 (Research Librarian Agent)
  • 在 Google Docs 中编译整理学习资源
  • 收集学术论文和教程链接
  • 添加难度等级描述
  • 输出: 带质量评级的分类资源列表
  4. ✍️ 助教 (Teaching Assistant Agent)
  • 在交互式 Google Docs 中开发练习
  • 创建结构化的练习部分
  • 包含解决方案指南
  • 输出: 包含答案的完整练习工作簿

二、环境准备

在开始之前,请确保你具备以下条件:

  • Python 环境(推荐 3.10 或更高版本)
  • OpenAI 和 Composio API 密钥(下面会详细说明)
  • 代码编辑器(推荐 VS Code 或 PyCharm)
  • 基本的 Python 编程知识

1. 基础环境配置

# 1. 克隆项目代码
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git

# 2. 进入项目目录
cd ai_agent_tutorials/ai_teaching_agent_team

# 3. 安装依赖包
pip install -r requirements.txt

2. API 配置说明

  1. OpenAI API 配置
  • 创建新账号
  • 进入 Dashboard
  • 导航到 API Keys
  • 生成新密钥
  2. Composio API 配置(重要)

要使用该应用,你需要创建一个与 Google Docs 的新连接:

  • 在终端中运行:composio add googledocs
  • 创建新连接 > 选择 OAUTH2 > 选择 Google 账号
  • 在 Composio 平台的 Dashboard:
  1. 转到 Apps
  2. 导航到 Googledocs 工具
  3. 点击创建集成(紫色按钮)
  4. 点击"Try connecting default's googldocs"按钮完成设置

三、代码实现

让我们一步步创建这个应用程序。创建一个新文件teaching_agent_team.py

1. 设置导入

import streamlit as st
from phi.agent import Agent, RunResponse
from phi.model.openai import OpenAIChat
from composio_phidata import Action, ComposioToolSet
import os
from phi.tools.arxiv_toolkit import ArxivToolkit
from phi.utils.pprint import pprint_run_response
from phi.tools.serpapi_tools import SerpApiTools

2. 初始化会话状态

st.set_page_config(page_title="👨‍🏫 AI Teaching Agent Team")

# 初始化会话状态
if 'openai_api_key' not in st.session_state:
    st.session_state['openai_api_key'] = ''
if 'composio_api_key' not in st.session_state:
    st.session_state['composio_api_key'] = ''
if 'serpapi_api_key' not in st.session_state:
    st.session_state['serpapi_api_key'] = ''

3. 设置 Composio 工具

composio_toolset = ComposioToolSet(api_key=st.session_state['composio_api_key'])
google_docs_tool = composio_toolset.get_tools(
    actions=[Action.GOOGLEDOCS_CREATE_DOCUMENT]
)[0]
google_docs_tool_update = composio_toolset.get_tools(
    actions=[Action.GOOGLEDOCS_UPDATE_EXISTING_DOCUMENT]
)[0]

4. 创建教授 Agent

professor_agent = Agent(
    name="Professor",
    role="Research and Knowledge Specialist"
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[google_docs_tool],
    instructions=[
        "Create comprehensive knowledge base",
        "Explain from first principles",
        "Include key terminology",
        "Create formatted Google Doc"
    ]
)

5. 创建学术顾问 Agent

academic_advisor_agent = Agent(
    name="Academic Advisor",
    role="Learning Path Designer",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[google_docs_tool],
    instructions=[
        "Create detailed learning roadmap",
        "Break down into subtopics",
        "Include time estimates",
        "Create formatted Google Doc"
    ]
)

6. 创建研究馆员 Agent

research_librarian_agent = Agent(
    name="Research Librarian",
    role="Learning Resource Specialist",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[
        google_docs_tool, 
        SerpApiTools(api_key=st.session_state['serpapi_api_key'])
    ],
    instructions=[
        "Find quality learning resources",
        "Use SerpApi for searches",
        "Include various resource types",
        "Create curated Google Doc"
    ]
)

7. 创建助教 Agent

teaching_assistant_agent = Agent(
    name="Teaching Assistant",
    role="Exercise Creator",
    model=OpenAIChat(id="gpt-4o-mini"),
    tools=[google_docs_tool, SerpApiTools()],
    instructions=[
        "Create practice materials",
        "Include progressive exercises",
        "Add real-world applications",
        "Create Google Doc with solutions"
    ]
)

8. 设置 Streamlit 界面

with st.sidebar:
    st.title("API Keys Configuration")
    st.session_state['openai_api_key'] = st.text_input(
        "OpenAI API Key"
        type="password"
    )
    st.session_state['composio_api_key'] = st.text_input(
        "Composio API Key",
        type="password"
    )
    st.session_state['serpapi_api_key'] = st.text_input(
        "SerpAPI Key",
        type="password"
    )

9. 实现主题处理

topic = st.text_input(
    "Enter topic:",
    placeholder="e.g., Machine Learning"
)

if st.button("Start"):
    with st.spinner("Generating Knowledge Base..."):
        professor_response = professor_agent.run(
            f"topic: {topic}"
        )

10. 提取 Google Doc 链接

def extract_google_doc_link(response_content):
    if "https://docs.google.com" in response_content:
        return response_content.split("https://docs.google.com")[1].split()[0]
    return None
    
st.markdown("### Google Doc Links:")
if professor_doc_link:
    st.markdown(f"- **Professor Document:** [View](https://docs.google.com{professor_doc_link})")

11. 显示 Agent 响应

st.markdown("### Professor Response:")
st.markdown(professor_response.content)
pprint_run_response(professor_response, markdown=True)

12. 错误处理和验证

if not st.session_state['openai_api_key'] or not st.session_state['composio_api_key']:
    st.error("Please enter all required API keys.")
    st.stop()
    
try:
    composio_toolset = ComposioToolSet(api_key=st.session_state['composio_api_key'])
except Exception as e:
    st.error(f"Error initializing ComposioToolSet: {e}")
    st.stop()

13. 进度跟踪

with st.spinner("Creating Practice Materials..."):
    teaching_assistant_response = teaching_assistant_agent.run(
        f"topic: {topic}"
    )

四、运行应用程序

完成代码编写后,是时候启动应用程序了:

  1. 在终端中导航到项目文件夹
  2. 运行命令:
streamlit run teaching_agent_team.py
  3. Streamlit 将提供一个本地 URL(通常是 http://localhost:8501)

五、进阶优化建议

为了使你的教学团队更加高效,可以考虑以下改进:

  1. 为技术主题添加交互式编程练习
  2. 添加多种学习风格支持
  3. 实现进度跟踪和分析
  4. 为 Google Docs 实现版本控制以跟踪内容演变
  5. 添加多语言支持
  6. 实现自适应学习路径

六、常见问题解答

Q: API 调用失败怎么办?

  • 检查 API 密钥是否正确配置
  • 确认 API 额度是否充足
  • 检查网络连接状态

Q: 如何提高内容质量?

  • 调整 Agent 的 system_message
  • 优化提示词工程
  • 增加内容审核机制

Q: 生成速度较慢怎么优化?

  • 使用内容缓存
  • 实现并行处理
  • 优化 API 调用策略

七、结语

通过本教程,你已经成功搭建了一个完整的 AI 教学团队系统。该系统不仅展示了如何使用 AI Agents 构建复杂的应用,还为教育领域提供了一个可扩展的自动化解决方案。

项目代码地址:https://github.com/Shubhamsaboo/awesome-llm-apps

欢迎在评论区分享你的实现成果和改进建议!如果这个教程对你有帮助,别忘了给项目点个星标。持续探索和改进,让我们一起构建更智能的 AI 解决方案!


如果你觉得今天的分享有帮助,记得点赞、收藏并转发,下次找起来更方便哦!


蔡荔谈AI
AI科普 AI培训 超级个体 创业
 最新文章