logo
1
1
WeChat Login
docs: 更新README文档标题和章节名称

AI搜学助手帮助文档

目录


1. 概述

功能简介

AI搜学助手是基于 PydanticAI 框架构建的智能学习助手系统,能够自动收集、分析和总结网络学习资料,帮助用户快速理解和掌握各种知识概念。

适用场景

  • 快速学习新概念和知识
  • 整理和梳理学习资料
  • 技术文档和教程收集
  • 知识点深入理解和讲解
  • 学习资源汇总

核心功能

  • 自动化资料搜集与筛选
  • 智能内容分析与分类
  • 知识热度趋势分析
  • 可视化知识讲解报告生成

2. 项目结构

ai_learning/ ├── public/ # 静态资源 │ ├── echarts/ # ECharts 图表库 │ ├── libs/ # 工具库(html2canvas、html2pdf) │ └── novnc/ # noVNC 远程桌面库 ├── src/ │ ├── backend/ # 后端服务(Python) │ │ ├── requirements.txt # Python 依赖 │ │ └── src/ │ │ ├── main.py # 主程序入口 │ │ ├── agent.py # Agent 逻辑 │ │ ├── analysis_standards.py # 分析标准 │ │ └── event_queue.py # 事件队列 │ └── frontend/ # 前端服务(Next.js) │ ├── package.json # Node.js 依赖 │ ├── next.config.ts # Next.js 配置 │ ├── tsconfig.json # TypeScript 配置 │ └── src/ │ ├── app/ # 应用页面 │ ├── components/ # React 组件 │ ├── hooks/ # 自定义 Hooks │ └── lib/ # 工具库 ├── publish.yaml # 发布配置(应用中心) ├── src/s.yaml # 部署配置(Serverless Devs) ├── build.yaml # 构建配置 ├── Makefile # 构建脚本 └── README.md # 项目文档

项目依赖关系图

3. 技术架构

技术栈

后端

  • 框架:PydanticAI
  • 语言:Python 3.12
  • 运行时:AgentRun(阿里云函数计算)
  • 核心能力:集成 LLM、搜索工具、浏览器沙箱

前端

  • 框架:Next.js(React)
  • 语言:TypeScript
  • 运行时:阿里云函数计算(FC3 Custom Runtime)
  • UI 组件:Bootstrap CSS + Material Design 原则
  • 可视化:ECharts
  • 远程桌面:noVNC

架构说明

前后端分离架构

SSE 通信架构

系统采用 Server-Sent Events (SSE) 实现前后端实时通信,确保用户能够实时查看 Agent 执行进度和状态更新。

SSE 连接建立流程:

事件推送流程:

关键文件说明:

  • 后端 SSE 实现:src/backend/src/main.py (第 88-170 行)
  • 事件队列管理:src/backend/src/event_queue.py
  • 状态推送:src/backend/src/agent.py (第 680-695 行)
  • 前端 SSE 客户端:src/frontend/src/hooks/useAgentState.ts

Agent 架构

采用单 Agent 设计,该 Agent 具备多项能力:

  • 信息检索能力(通过搜索工具)
  • 数据分析能力(通过 Sandbox 环境)
  • 自然语言理解与生成(通过 LLM)

Agent 状态转换

Agent 在执行过程中会经历多个状态,每个状态对应不同的执行阶段。系统通过 SSE 实时推送状态更新,前端可以实时展示 Agent 的执行进度。

状态转换流程:

状态说明:

状态说明current_phase发生时机
idle空闲状态-Agent 初始化或任务完成后
collecting收集中"资料收集"调用 collect_data 工具时
collected收集完成-数据收集工具执行完成
analyzing分析中"数据分析"调用 analyze_data 工具时
analyzed分析完成-数据分析工具执行完成
writing撰写中"报告撰写"调用 write_report 工具时
written撰写完成-报告撰写工具执行完成
rendering渲染中"HTML 渲染"调用 render_html 工具时
complete完成-所有工具执行完成
error错误"错误"任何阶段发生错误时

相关文件:

  • 状态定义:src/backend/src/agent.py (OpinionState 类)
  • 状态推送:src/backend/src/agent.py (push_state_event 函数)

数据流图

系统数据从用户输入到最终输出的完整流转过程,展示数据在各阶段的转换和处理。

数据流转流程:

数据结构说明:

数据字段类型说明生成阶段
keywordstring用户输入的关键词用户输入
raw_dataList[SearchResult]原始搜索结果列表数据收集
collected_data_summaryList[Dict]数据摘要列表数据收集
analysis.keywordsList[str]提取的关键词列表数据分析
analysis.sentiment_scorefloat情感得分数据分析
analysis.summarystring分析摘要数据分析
analysis.key_opinionsList[Dict]关键观点列表数据分析
report_textstring报告文本报告撰写
final_htmlstring最终 HTML 报告HTML 渲染

数据转换过程:

  1. 搜索阶段:用户输入关键词 → 搜索引擎返回结果 → 存储为 SearchResult 对象
  2. 收集阶段:从搜索结果中提取内容 → 生成摘要 → 存储到 raw_datacollected_data_summary
  3. 分析阶段:LLM 分析原始数据 → 提取关键词、情感、观点 → 生成 AnalysisResult
  4. 撰写阶段:基于分析结果撰写报告 → 生成 report_text
  5. 渲染阶段:在 Sandbox 中生成图表 → 将文本和图表合并为 HTML → 生成 final_html
  6. 展示阶段:通过 SSE 推送到前端 → 渲染为可视化报告 → 用户查看

技术要求

  • 支持主流大语言模型(用户可自选)
  • 需要配置搜索 API 访问权限
  • 需要 Sandbox 环境支持

4. 快速开始

环境要求

开发环境

  • Node.js: >= 18.x
  • Python: >= 3.12
  • npm: >= 9.x
  • Serverless Devs: >= 3.0.0

部署环境

  • 阿里云账号(已开通函数计算、日志服务、AgentRun)
  • 阿里云 AccessKey(具有相应权限)

本地开发

1. 克隆项目

git clone https://github.com/devsapp/agentrun-template.git cd ai_learning

2. 安装后端依赖

cd src/backend pip install -r requirements.txt

3. 安装前端依赖

cd ../frontend npm install

4. 启动后端服务

cd backend python src/main.py

5. 启动前端服务

cd frontend npm run dev

访问 http://localhost:3000 查看应用。


5. 部署指南

通过应用中心部署(推荐)

前置准备

  1. 注册并登录阿里云
  2. 开通以下服务:
    • 函数计算(FC)
    • 日志服务(SLS)
    • AgentRun

部署步骤

  1. 访问 AgentRun 模板市场
  2. 点击"立即部署"
  3. 填写配置参数:
    • 地域:选择部署地域(cn-beijing / cn-hangzhou)
    • 大语言模型:选择模型服务(建议 qwen3-max)
    • 模型名称:填写具体模型名称
    • 浏览器沙箱:选择浏览器沙箱模板
  4. 点击"部署"按钮
  5. 等待部署完成(约 2-5 分钟)
  6. 部署完成后,访问提供的公网 URL

部署流程图

通过 Serverless Devs 部署

1. 安装 Serverless Devs

npm install -g @serverless-devs/s s config add

2. 配置部署参数

编辑 src/s.yaml,设置以下变量:

vars: region: cn-hangzhou # 部署地域 agent_name: opinion_analysis # Agent 名称 role: AliyunAgentRunDefaultRole # 权限角色

3. 部署应用

cd src s deploy

4. 查看部署信息

s info

构建前端

cd src/frontend npm run build

构建产物将输出到 src/frontend/out 目录。


6. 功能说明

主要功能模块

资料采集模块

  • 多源信息抓取(百科、知乎、B站、技术博客等)
  • 关键词智能匹配
  • 实时数据更新

分析处理模块

  • 内容难度分析(入门/进阶/高级)
  • 核心概念提取
  • 知识结构梳理
  • 学习价值评估

报告生成模块

  • 结构化知识讲解文档
  • 数据可视化图表
  • 学习路径建议

Agent 能力

  1. 自主搜索:根据关键词自动检索相关学习资料
  2. 智能分析:对海量资料进行内容分析和分类
  3. 代码执行:在 Sandbox 中执行数据处理和可视化代码
  4. 报告生成:自动生成通俗易懂的知识讲解报告

前端功能

  • 交互式界面:提供友好的用户交互界面
  • 可视化展示:使用 ECharts 展示数据分析结果
  • VNC 远程桌面:支持通过 noVNC 远程查看 Sandbox 环境
  • 主题切换:支持浅色/深色主题切换
  • 报告导出:支持导出为 PDF 格式

工作流程


7. 配置指南

环境变量配置

后端环境变量(src/s.yaml)

environmentVariables: PYTHONPATH: /code/python:/opt/python:/code:/code/python AGENTRUN_MODEL_NAME: '{{ modelServiceName }}' # 模型服务名称 MODEL_NAME: '{{ modelName }}' # 模型名称 AGENTRUN_BROWSER_SANDBOX_NAME: '{{ browserTemplate }}' # 浏览器沙箱

前端环境变量(src/s.yaml)

environmentVariables: ENDPOINT: '${resources.opinion_analysis.output.agent.endpoints.0.url}'

配置参数详解(publish.yaml)

参数类型默认值说明
regionstringcn-hangzhou部署地域(cn-beijing/cn-hangzhou)
rolestringAliyunAgentRunDefaultRole权限角色
modelServiceNamestring-大语言模型服务名称
modelNamestring-模型名称(建议 qwen3-max)
agentRuntimeNamestringopinion_analysisAgentRuntime 名称
browserTemplatestring''浏览器沙箱模板

在控制台配置

模型配置

  • 在 AgentRun 控制台选择适合的大语言模型
  • 建议使用支持长上下文的模型以处理大量学习资料
  • 可根据分析精度需求选择不同参数的模型

Sandbox 配置

  • 启用 Sandbox 环境
  • 配置允许的 Python 库(如 pandas、matplotlib)
  • 设置执行时间和资源限制

8. 开发指南

后端开发

目录结构

backend/ ├── requirements.txt # Python 依赖 └── src/ ├── main.py # 主程序入口 ├── agent.py # Agent 逻辑 ├── analysis_standards.py # 分析标准 └── event_queue.py # 事件队列

添加新功能

  1. agent.py 中定义新的 Agent 方法
  2. main.py 中注册新的路由
  3. requirements.txt 中添加依赖

依赖管理

pip install -r requirements.txt

前端开发

目录结构

frontend/ ├── src/ │ ├── app/ # 应用页面 │ │ ├── layout.tsx # 布局组件 │ │ ├── page.tsx # 主页面 │ │ └── globals.css # 全局样式 │ ├── components/ # React 组件 │ │ ├── OpinionDashboard.tsx # 仪表板 │ │ ├── ThemeSwitcher.tsx # 主题切换 │ │ └── VncViewer.tsx # VNC 查看器 │ ├── hooks/ # 自定义 Hooks │ │ ├── useAgentState.ts # Agent 状态管理 │ │ └── useTheme.tsx # 主题管理 │ └── lib/ # 工具库 │ ├── const.ts # 常量定义 │ └── types.ts # 类型定义

添加新组件

  1. src/components/ 中创建新组件
  2. src/app/page.tsx 中引入并使用
  3. 添加相应的类型定义到 src/lib/types.ts

依赖管理

npm install <package-name>

构建和测试

构建前端

cd src/frontend npm run build

构建产物将输出到 src/frontend/out 目录。

运行测试

cd src/backend python -m pytest cd ../frontend npm test

开发工作流程图


9. 使用示例

应用场景示例

场景 1:快速学习新概念

用户输入:帮我学习"机器学习"的基础知识

Agent 执行流程:

  1. 使用搜索工具检索相关百科、教程、博客文章
  2. 提取核心概念和知识点
  3. 进行内容分析和难度评估
  4. 在 Sandbox 中生成知识结构图表
  5. 输出完整的知识讲解报告

输出示例:

# 机器学习知识讲解报告 ## 概念简介 - 资料来源:20 条优质学习资料 - 难度等级:入门级 - 学习时长建议:2-4周 ## 核心原理 1. 什么是机器学习 2. 监督学习与无监督学习 3. 常见算法介绍 ## 应用案例 - 图像识别 - 自然语言处理 - 推荐系统

场景 2:技术文档整理

用户输入:帮我整理"React Hooks"的学习资料

Agent 执行流程:

  1. 搜索 React Hooks 官方文档和优质教程
  2. 提取常用 Hooks 的用法和示例
  3. 生成代码示例和最佳实践
  4. 输出结构化的学习文档

10. 常见问题

Q1:搜索结果不准确怎么办?

  • 在控制台优化搜索关键词设置
  • 调整搜索范围和时间窗口
  • 增加搜索深度获取更多结果

Q2:分析速度较慢?

  • 选择更高性能的模型
  • 减少搜索结果数量
  • 使用快速分析模式

Q3:如何提高分析准确度?

  • 选择专门针对知识理解优化的模型
  • 调整内容相关性阈值
  • 启用深度分析模式

Q4:部署失败怎么办?

  • 检查阿里云账号权限是否正确
  • 确认 AccessKey 配置是否正确
  • 查看日志服务获取详细错误信息

Q5:前端无法连接后端?

  • 检查 ENDPOINT 环境变量是否正确设置
  • 确认后端服务是否正常运行
  • 检查网络配置和防火墙设置

Q6:如何查看运行日志?

  • 通过阿里云日志服务(SLS)查看
  • 使用 s logs 命令查看
  • 在 AgentRun 控制台查看实时日志

注意事项

  1. 内容版权:收集的资料仅供学习参考,请尊重原创内容版权
  2. 搜索配额:注意搜索 API 的调用限制
  3. 结果时效性:部分技术内容会随时间更新,建议关注最新资料
  4. 模型选择:不同模型对中文理解能力差异较大,建议测试后选择
  5. 可视化限制:Sandbox 中的图表生成受资源限制,避免处理超大数据集
  6. 资源限制:注意函数计算的 CPU 和内存限制,避免超时
  7. 安全性:不要在代码中硬编码敏感信息,使用环境变量管理密钥

相关链接


通过 AgentRun 控制台的可视化配置,无需编写代码即可快速部署和定制您的AI搜学助手。