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

Upgrade
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

缓存机制

  • 模型缓存:自动缓存下载的模型
  • 结果缓存:缓存分析结果避免重复计算

内存优化

  • 图像尺寸限制:自动调整大图像尺寸
  • 视频帧采样:智能选择关键帧进行分析

🐛 故障排除

常见问题

  1. OpenAI API错误

    • 检查API密钥是否正确
    • 确认账户余额充足
  2. 模型下载失败

    • 检查网络连接
    • 尝试使用镜像源
  3. 内存不足

    • 减少批处理大小
    • 使用CPU模式运行
  4. 视频处理失败

    • 检查视频格式是否支持
    • 确认视频文件完整性

调试模式

设置环境变量启用调试模式:

DEBUG=True
LOG_LEVEL=DEBUG

🤝 贡献指南

欢迎提交Issue和Pull Request来改进这个项目!

开发环境设置

  1. Fork项目
  2. 创建功能分支
  3. 提交更改
  4. 创建Pull Request

📄 许可证

本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢


注意: 这是一个教育项目,请确保遵守相关API的使用条款和隐私政策。