Spaces:
Sleeping
Sleeping
hugh2023
Add multi-modal agent system with media analysis, web scraping, and enhanced configuration management
adec1cb A newer version of the Gradio SDK is available:
6.8.0
metadata
title: Template Final Assignment
emoji: 🕵🏻♂️
colorFrom: indigo
colorTo: indigo
sdk: gradio
sdk_version: 5.25.2
app_file: app.py
pinned: false
hf_oauth: true
hf_oauth_expiration_minutes: 480
多模态智能体系统 (Multi-Modal Agent System)
一个基于Hugging Face和LangGraph的智能多模态智能体系统,能够理解视频、图片,并使用搜索引擎回答问题。
🚀 功能特性
🎥 视频理解与分析
- 关键帧提取: 自动提取视频关键帧进行分析
- 视频描述: 生成视频内容的自然语言描述
- 音频分析: 分析视频的音频信息
- 时长统计: 获取视频的基本信息(时长、帧率、分辨率等)
🖼️ 图像识别与描述
- 图像描述: 使用BLIP模型生成图像的自然语言描述
- 对象检测: 检测图像中的物体和位置
- 图像分类: 对图像进行分类识别
- OCR文本提取: 从图像中提取文字内容
- 情感分析: 分析图像中的情感元素
📄 PDF文档处理
- PDF下载: 从URL下载PDF文档
- 文本提取: 从PDF中提取文本内容
- 结构分析: 分析PDF文档结构和元数据
- 内容搜索: 在PDF中搜索特定文本
- 图像提取: 从PDF中提取图像
- 内容总结: 自动总结PDF文档内容
🌐 网页内容分析
- 网页抓取: 获取网页内容和结构
- 文本提取: 从网页中提取纯文本内容
- 结构分析: 分析网页的标题、表单、表格等结构
- 内容搜索: 在网页中搜索特定文本
- 链接提取: 提取网页中的所有链接
- 内容总结: 自动总结网页内容
- 可访问性检查: 检查网页的可访问性问题
📺 YouTube视频处理
- 视频信息获取: 获取YouTube视频的标题、作者、时长、观看次数等
- 视频下载: 下载YouTube视频到本地
- 音频提取: 从YouTube视频中提取音频
- 缩略图下载: 下载YouTube视频缩略图
- 视频搜索: 搜索YouTube视频
- 评论分析: 分析YouTube视频评论
- 播放列表处理: 获取播放列表信息和视频列表
📚 Wikipedia百科处理
- 页面搜索: 搜索Wikipedia页面
- 内容获取: 获取Wikipedia页面完整内容
- 摘要提取: 获取页面摘要信息
- 分类获取: 获取页面分类信息
- 链接提取: 获取页面相关链接
- 搜索建议: 获取搜索建议
- 英文版本: 支持英文Wikipedia搜索
- 随机页面: 获取随机Wikipedia页面
- 地理搜索: 根据坐标搜索附近页面
🔍 智能搜索引擎
- 网络搜索: 使用DuckDuckGo进行实时网络搜索
- 图像搜索: 搜索相关图像资源
- 视频搜索: 搜索相关视频内容
- 智能查询: 根据问题自动构建搜索查询
🤖 LangGraph工作流编排
- 状态管理: 使用AgentState管理智能体状态
- 工作流节点: 媒体分类 → 媒体分析 → 信息搜索 → 工具使用 → 答案合成
- 智能路由: 根据问题类型自动选择合适的处理路径
🛠️ 丰富工具集
- 文本分析: 情感分析、关键词提取、文本摘要
- 翻译工具: 多语言文本翻译
- 数学计算: 安全的数学表达式计算
- 天气查询: 实时天气信息获取
📋 系统架构
用户问题 → 媒体分类 → 媒体分析 → 信息搜索 → 工具使用 → 答案合成 → 最终答案
↓ ↓ ↓ ↓ ↓ ↓
文本/图片/视频/PDF/网页/YouTube/Wikipedia 图像/视频/PDF/网页/YouTube/Wikipedia处理 网络搜索 专用工具 信息整合 自然语言回答
🛠️ 安装与配置
1. 环境要求
- Python 3.8+
- CUDA支持(可选,用于GPU加速)
2. 安装依赖
pip install -r requirements.txt
3. 环境变量配置
创建 .env 文件并配置以下变量:
# OpenAI API配置
OPENAI_API_KEY=your_openai_api_key_here
# Hugging Face配置(可选)
HUGGINGFACE_API_KEY=your_huggingface_api_key_here
# 搜索引擎配置(可选)
SERPER_API_KEY=your_serper_api_key_here
# 调试配置
DEBUG=True
LOG_LEVEL=INFO
4. 运行系统
python app.py
🎯 使用示例
基本使用
from app import MultiModalAgent
# 初始化智能体
agent = MultiModalAgent()
# 文本问题
answer = agent("什么是人工智能?")
# 图像问题
answer = agent("这张图片里有什么?", "https://example.com/image.jpg")
# 视频问题
answer = agent("这个视频在讲什么?", "https://youtube.com/watch?v=example")
# 网页问题
answer = agent("这个网页的主要内容是什么?", "https://example.com")
# YouTube问题
answer = agent("这个YouTube视频的信息是什么?", "https://www.youtube.com/watch?v=example")
# Wikipedia问题
answer = agent("Wikipedia关于人工智能的信息是什么?")
高级功能
# 情感分析
answer = agent("分析这段文字的情感", "这是一段需要分析的文本")
# 关键词提取
answer = agent("提取这段文字的关键词", "这是一段需要提取关键词的文本")
# 文本摘要
answer = agent("总结这段文字", "这是一段很长的文字需要总结...")
📊 支持的模型
图像处理模型
- BLIP: Salesforce/blip-image-captioning-base
- ResNet: microsoft/resnet-50
- DETR: facebook/detr-resnet-50
- GIT: microsoft/git-base
文本处理模型
- 情感分析: cardiffnlp/twitter-roberta-base-sentiment-latest
- 命名实体识别: dbmdz/bert-large-cased-finetuned-conll03-english
- 文本摘要: facebook/bart-large-cnn
- 翻译: Helsinki-NLP/opus-mt-en-zh
视频处理
- MoviePy: 视频编辑和处理
- OpenCV: 计算机视觉处理
- PyTube: YouTube视频下载
🔧 自定义扩展
添加新工具
from tools import ToolManager
class CustomTools:
@staticmethod
@tool
def custom_function(input_text: str) -> str:
"""自定义工具函数"""
# 实现你的逻辑
return "处理结果"
# 注册工具
tool_manager = ToolManager()
tool_manager.tools["custom_function"] = CustomTools.custom_function
修改工作流
def _build_workflow(self) -> StateGraph:
workflow = StateGraph(AgentState)
# 添加自定义节点
workflow.add_node("custom_node", self._custom_processing)
# 修改工作流路径
workflow.add_edge("analyze_media", "custom_node")
workflow.add_edge("custom_node", "search_info")
return workflow.compile()
📈 性能优化
GPU加速
系统会自动检测CUDA可用性并使用GPU加速:
device = 0 if torch.cuda.is_available() else -1
缓存机制
- 模型缓存:自动缓存下载的模型
- 结果缓存:缓存分析结果避免重复计算
内存优化
- 图像尺寸限制:自动调整大图像尺寸
- 视频帧采样:智能选择关键帧进行分析
🐛 故障排除
常见问题
OpenAI API错误
- 检查API密钥是否正确
- 确认账户余额充足
模型下载失败
- 检查网络连接
- 尝试使用镜像源
内存不足
- 减少批处理大小
- 使用CPU模式运行
视频处理失败
- 检查视频格式是否支持
- 确认视频文件完整性
调试模式
设置环境变量启用调试模式:
DEBUG=True
LOG_LEVEL=DEBUG
🤝 贡献指南
欢迎提交Issue和Pull Request来改进这个项目!
开发环境设置
- Fork项目
- 创建功能分支
- 提交更改
- 创建Pull Request
📄 许可证
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
🙏 致谢
- Hugging Face - 提供优秀的预训练模型
- LangGraph - 工作流编排框架
- LangChain - LLM应用开发框架
- Gradio - 快速构建Web界面
注意: 这是一个教育项目,请确保遵守相关API的使用条款和隐私政策。