Spaces:
Sleeping
Sleeping
File size: 8,309 Bytes
2705160 62ad9da 2705160 d123508 2705160 adec1cb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | ---
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
# optional, default duration is 8 hours/480 minutes. Max duration is 30 days/43200 minutes.
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. 安装依赖
```bash
pip install -r requirements.txt
```
### 3. 环境变量配置
创建 `.env` 文件并配置以下变量:
```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. 运行系统
```bash
python app.py
```
## 🎯 使用示例
### 基本使用
```python
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关于人工智能的信息是什么?")
```
### 高级功能
```python
# 情感分析
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视频下载
## 🔧 自定义扩展
### 添加新工具
```python
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
```
### 修改工作流
```python
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加速:
```python
device = 0 if torch.cuda.is_available() else -1
```
### 缓存机制
- 模型缓存:自动缓存下载的模型
- 结果缓存:缓存分析结果避免重复计算
### 内存优化
- 图像尺寸限制:自动调整大图像尺寸
- 视频帧采样:智能选择关键帧进行分析
## 🐛 故障排除
### 常见问题
1. **OpenAI API错误**
- 检查API密钥是否正确
- 确认账户余额充足
2. **模型下载失败**
- 检查网络连接
- 尝试使用镜像源
3. **内存不足**
- 减少批处理大小
- 使用CPU模式运行
4. **视频处理失败**
- 检查视频格式是否支持
- 确认视频文件完整性
### 调试模式
设置环境变量启用调试模式:
```env
DEBUG=True
LOG_LEVEL=DEBUG
```
## 🤝 贡献指南
欢迎提交Issue和Pull Request来改进这个项目!
### 开发环境设置
1. Fork项目
2. 创建功能分支
3. 提交更改
4. 创建Pull Request
## 📄 许可证
本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🙏 致谢
- [Hugging Face](https://huggingface.co/) - 提供优秀的预训练模型
- [LangGraph](https://github.com/langchain-ai/langgraph) - 工作流编排框架
- [LangChain](https://langchain.com/) - LLM应用开发框架
- [Gradio](https://gradio.app/) - 快速构建Web界面
---
**注意**: 这是一个教育项目,请确保遵守相关API的使用条款和隐私政策。 |