Skip to content

Dloading666/-Agent-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

体育日报智能分析平台

基于LangChain和FastAPI的体育新闻智能分析平台,集成AI自主决策Agent和RAG检索系统,使用MySQL 8.0作为数据库。

✨ 核心功能

  1. 首页(仪表板) - 显示统计数据,个性化欢迎信息
  2. 体育日报生成界面 - 从虎扑网站采集并生成5条今日体育新闻,支持删除操作
  3. 分析报告界面 - AI分析今日体育新闻并生成Markdown格式报告,支持下载MD文件
  4. 智能助手(AI自主Agent) - 基于ReAct模式的AI自主决策Agent,支持:
    • 🔍 获取最新体育新闻
    • 📝 生成体育日报
    • 🔎 RAG检索历史日报
    • 💬 自然语言对话(对话历史持久化)
  5. 设置模块 - 修改密码、退出登录

🛠️ 技术栈

后端

  • FastAPI - 现代Python Web框架
  • LangChain - AI Agent框架
  • SQLAlchemy - ORM数据库操作
  • MySQL 8.0 - 关系型数据库
  • DashScope (通义千问) - 大语言模型API
    • 模型:qwen3-max(可配置)
    • Embedding:text-embedding-v4
  • Chroma - 本地向量数据库(RAG)
  • JWT - 用户认证
  • Bcrypt - 密码加密

前端

  • React 18 - UI框架
  • Ant Design 5 - UI组件库
  • Vite - 构建工具
  • Axios - HTTP客户端
  • React Router - 路由管理
  • React Markdown - Markdown渲染

AI Agent架构

  • ReAct模式 - 自主决策Agent
  • RAG检索 - 向量化历史日报,支持语义搜索
  • 工具调用 - 3个核心工具:
    1. get_latest_sports_news_tool - 获取最新新闻
    2. generate_sports_daily_tool - 生成日报
    3. rag_retrieve_history_daily_tool - 检索历史

前置要求

  1. Python 3.8+
  2. Node.js 16+
  3. MySQL 8.0
  4. 网络连接(用于访问DashScope API)

🚀 快速开始

💡 提示:详细安装步骤请参考 QUICKSTART.md

1. 环境准备

# 创建conda环境
conda create -n sports_analysis python=3.10 -y

# 激活环境
conda activate sports_analysis

# 使用conda安装numpy(避免编码问题)
conda install numpy -y

# 安装其他依赖
cd backend
pip install -r requirements.txt

2. 数据库设置

2.1 创建数据库

# 登录MySQL
mysql -u root -p

# 执行以下SQL创建数据库
CREATE DATABASE sports_analysis CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;

2.2 初始化数据库表

cd backend
conda activate sports_analysis  # 或你的conda环境
python init_tables.py

这个脚本会:

  • 检查数据库连接
  • 创建/更新所有表
  • 验证表结构

3. 后端设置

3.1 配置环境变量

  1. 复制模板文件:在 backend 目录,将 .env.example 复制为 .env

    # Windows PowerShell
    cd backend
    Copy-Item .env.example .env
    
    # Linux/Mac
    cd backend
    cp .env.example .env
  2. 编辑 .env 文件,填入你的真实配置值:

    # 数据库配置
    MYSQL_HOST=localhost
    MYSQL_PORT=3306
    MYSQL_USER=root
    MYSQL_PASSWORD=你的MySQL密码
    MYSQL_DATABASE=sports_analysis
    
    # LLM配置(DashScope 通义千问)
    # 获取API Key: https://dashscope.console.aliyun.com/
    LLM_API_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
    LLM_API_KEY=你的DashScope_API_Key
    LLM_MODEL=qwen3-max
    
    # 应用安全配置
    # 生成随机密钥: python -c "import secrets; print(secrets.token_urlsafe(32))"
    SECRET_KEY=你的随机密钥
    ALGORITHM=HS256
    ACCESS_TOKEN_EXPIRE_MINUTES=30

    重要提示:

    • 🔑 LLM_API_KEY: 从 DashScope控制台 获取
    • 🔐 SECRET_KEY: 用于JWT加密,必须设置(可使用上面的命令生成)
  3. 验证配置:确保 .env 文件已正确创建,且所有必需的值都已填写。

3.2 启动后端

conda activate sports_analysis
cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

后端将在 http://localhost:8000 启动

4. 前端设置

conda activate sports_analysis
cd frontend
npm install
npm run dev

前端将在 http://localhost:5173 启动(Vite默认端口)

使用说明

1. 访问应用

打开浏览器访问 http://localhost:5173(或终端显示的地址)

2. 生成体育日报

  1. 点击左侧菜单"体育日报"
  2. 点击"生成今日日报"按钮
  3. 系统将生成5条今日体育新闻

3. 生成分析报告

  1. 点击左侧菜单"分析报告"
  2. 点击"分析今日新闻"按钮
  3. 系统将对今日新闻进行分析并生成报告(带进度条显示)

4. 使用智能助手

  1. 点击左侧菜单"智能助手"
  2. 在输入框中输入问题,例如:
    • "获取最新NBA新闻"
    • "生成今日体育日报"
    • "检索詹姆斯近期的状况"
  3. 点击"发送"或按Enter键
  4. Agent会自动选择最合适的工具执行任务
  5. 对话历史会自动保存,下次打开时会自动加载

5. 设置

  1. 点击左侧菜单"设置"
  2. 可以修改密码
  3. 可以退出登录

数据库管理

初始化表结构

cd backend
python init_tables.py

验证表结构

在MySQL中执行:

USE sports_analysis;
DESCRIBE users;
DESCRIBE news_articles;
DESCRIBE analysis_reports;
DESCRIBE chat_records;

🤖 AI Agent架构说明

1. AI自主决策Agent (AutonomousAgent) ⭐核心

  • ReAct模式:思考-行动-观察循环
  • 工具自动选择:根据用户意图自动选择工具
  • 3个核心工具
    • get_latest_sports_news_tool - 获取最新体育新闻
    • generate_sports_daily_tool - 生成体育日报(自动保存到数据库和向量库)
    • rag_retrieve_history_daily_tool - RAG检索历史日报
  • 对话历史持久化:所有对话自动保存到数据库

2. 新闻采集与处理Agent (NewsCollectorAgent)

  • 从虎扑网站采集新闻
  • 智能类别识别(NBA、足球、CBA、电竞等)
  • 异常处理和重试机制

3. 新闻分析与总结Agent (NewsAnalyzerAgent)

  • 多维度分析今日新闻
  • 生成Markdown格式报告
  • 情感分析和统计数据提取

4. RAG检索系统

  • 向量化存储:使用Qwen Embedding (text-embedding-v4) 向量化日报
  • 向量数据库:Chroma本地向量库
  • 语义搜索:支持自然语言查询历史日报
  • 用户隔离:每个用户独立的向量库集合

API文档

运行后端后,访问 http://localhost:8000/docs 查看Swagger API文档。

常见问题

1. 数据库连接失败

  • 检查MySQL服务是否启动
  • 检查数据库用户名和密码是否正确
  • 检查数据库是否已创建
  • 运行 python init_tables.py 初始化表结构

2. API调用失败

  • 检查网络连接
  • 检查DashScope API Key是否正确
  • 查看后端日志了解详细错误信息

3. 前端无法连接后端

  • 检查后端是否正常运行
  • 检查端口8000是否被占用
  • 检查vite.config.js中的代理配置

4. 注册失败(500错误)

可能是数据库表结构不完整导致的:

  1. 运行 python init_tables.py 初始化表
  2. 检查users表是否有 hashed_passwordis_active 字段
  3. 查看后端日志了解详细错误信息

5. 数据库表结构错误

如果表结构完全错误,可以删除重建:

USE sports_analysis;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS news_articles;
DROP TABLE IF EXISTS analysis_reports;
DROP TABLE IF EXISTS chat_records;

然后重新运行 python init_tables.py

开发说明

修改新闻源

编辑 backend/app/routers/news.py 中的新闻源配置

修改Agent提示词

编辑对应的Agent文件:

  • backend/app/agents/autonomous_agent.py - 核心:AI自主决策Agent(ReAct模式)
  • backend/app/agents/news_collector.py - 新闻采集Agent
  • backend/app/agents/news_analyzer.py - 新闻分析Agent
  • backend/app/agents/tools.py - Agent工具定义(3个核心工具)

添加新功能

  1. 在后端 backend/app/routers/ 添加新路由
  2. 在前端 frontend/src/pages/ 添加新页面
  3. frontend/src/components/Sidebar.jsx 添加菜单项

📁 项目结构

体育日报智能分析平台/
├── backend/                 # 后端代码
│   ├── app/
│   │   ├── agents/         # AI Agent实现
│   │   │   ├── autonomous_agent.py  # 核心:AI自主决策Agent
│   │   │   ├── news_collector.py    # 新闻采集Agent
│   │   │   ├── news_analyzer.py     # 新闻分析Agent
│   │   │   └── tools.py             # Agent工具定义
│   │   ├── rag/            # RAG检索系统
│   │   │   └── vector_store.py     # 向量数据库管理
│   │   ├── routers/        # API路由
│   │   ├── models/         # 数据库模型
│   │   ├── schemas/        # Pydantic模式
│   │   └── main.py        # FastAPI应用入口
│   ├── chroma_db/          # Chroma向量数据库(自动生成)
│   ├── .env.example        # 环境变量模板
│   └── requirements.txt    # Python依赖
├── frontend/               # 前端代码
│   ├── src/
│   │   ├── pages/         # 页面组件
│   │   ├── components/    # 通用组件
│   │   └── utils/         # 工具函数
│   └── package.json       # Node.js依赖
├── README.md              # 项目说明(本文件)
└── QUICKSTART.md          # 快速开始指南

🔒 安全说明

API Key保护

重要:所有敏感信息都通过环境变量配置,不会硬编码在代码中。

  1. .env 文件:包含所有敏感配置,不要提交到Git
  2. .env.example:模板文件,不包含真实密钥,可以提交到Git
  3. .gitignore:确保 .env 文件已被忽略

获取DashScope API Key

  1. 访问 DashScope控制台
  2. 注册/登录账号
  3. 创建API Key
  4. 将API Key填入 backend/.env 文件的 LLM_API_KEY

生成SECRET_KEY

python -c "import secrets; print(secrets.token_urlsafe(32))"

将生成的密钥填入 backend/.env 文件的 SECRET_KEY

📝 注意事项

  1. ✅ 确保MySQL服务已启动
  2. ✅ 确保网络可以访问DashScope API
  3. ✅ 生产环境请修改CORS配置和安全密钥
  4. ✅ 项目路径包含中文时建议使用Conda环境
  5. 不要将 .env 文件提交到Git仓库
  6. ✅ 定期备份数据库和向量库数据
  7. ✅ API Key有使用额度限制,注意监控使用情况

🎯 功能特性

  • 用户认证系统:注册、登录、密码修改
  • 数据隔离:每个用户只能看到自己的数据
  • 对话历史持久化:智能助手对话自动保存
  • RAG检索:向量化历史日报,支持语义搜索
  • AI自主决策:Agent根据用户意图自动选择工具
  • Markdown报告:分析报告支持Markdown格式和下载
  • 实时进度显示:分析报告生成时显示进度条
  • 响应式设计:适配不同屏幕尺寸

📚 相关文档

🤝 贡献

欢迎提交Issue和Pull Request!

📄 许可证

本项目仅供学习和研究使用。

About

基于LangChain和FastAPI的体育新闻智能分析平台,集成AI自主决策Agent和RAG检索系统,使用MySQL 8.0和Chroma作为数据库的体育新闻日报智能分析系统(Agent)。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors