项目3:结合MCP的OpenAI多模态AI助手
一个基于Streamlit的全面AI助手,由GPT-4o驱动,具备17项功能,包括聊天、视觉处理、图像生成、语音输入输出、网络工具以及MCP集成。
🚀 快速入门
先决条件
- Python 3.8或更高版本
- OpenAI API密钥
- (可选)用于网页搜索的Exa AI API密钥
- (可选)用于网页抓取的Scrape.do API密钥
安装
- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
创建一个 .env 与以下文件一起:
OPENAI_API_KEY=your_openai_api_key
EXA_API_KEY=your_exa_api_key # Optional
SCRAPEDO_API_KEY=your_scrapedo_api_key # Optional- 运行应用程序:
streamlit run app.py📁 项目结构
Project 3/
├── app.py # Streamlit frontend (603 lines)
├── openai_backend.py # OpenAI API backend (1,622 lines)
├── tools.py # Tool integrations (328 lines)
├── filesystem_mcp.py # Filesystem MCP server (~450 lines)
├── memory_mcp.py # Memory MCP server (~400 lines)
├── architecture.md # Detailed documentation
├── requirements.txt # Python dependencies
├── .env # Environment variables
├── memories.json # Persistent memory storage
├── .venv/ # Virtual environment
├── __pycache__/ # Python cache
└── additional/ # Supplementary files (docs, tests, scripts)
└── README.md # Documentation for additional files✨ 特性(17项功能)
核心AI功能(5)
- 💬 文本聊天 - 与GPT-4o进行自然对话
- 👁️ 图像分析 - 使用Vision上传和分析图像
- 🎨 图像生成 - 使用DALL-E 3创建图像
- 🎤 语音输入 使用Whisper API转录音频
- 🔊 语音输出 - 文本转语音,提供6种声音选项
网络与搜索工具 (2)
- 🔍 网络搜索 - 通过Exa AI获取实时信息
- 🌐 网络数据抓取(或网页抓取) - 使用Scrape.do提取网站内容
文件系统MCP工具(5)
- 📄 读取文件 - 读取文本文件内容
- ✍️ 写入文件 - 创建或修改文件
- 📁 列出目录 - 浏览文件夹内容
- 🔎 搜索文件 - 按模式查找文件
- ℹ️ 文件信息 - 获取文件元数据
内存MCP工具(5)
- 💾 存储内存 - 持久保存信息
- 🔍 检索内存 - 回忆特定信息
- 🔎 搜索记忆 - 通过查询/标签查找记忆
- 🗑️ 删除记忆 - 删除过时信息
- 📋 记忆列表 - 浏览所有存储的记忆
特色功能
- 🤖 代理循环 - 自主多步推理
- 🔗 工具编排 - 智能多工具协同
- 💾 自动内存追踪 - 以“?”结尾的问题会自动保存
🛠️ 技术栈
- 前端Streamlit,audio-recorder-streamlit(音频录制器-Streamlit)
- 后端OpenAI Python SDK(软件开发工具包)
- 工作流引擎代理循环(自主多步推理)
- 模型GPT-4o,DALL-E 3,Whisper,TTS-1
- 外部应用程序编程接口(APIs)Exa AI(搜索),Scrape.do(数据抓取)
- MCP服务器文件系统MCP,内存MCP(无需API密钥)
📖 使用示例
文本聊天
"What's the weather like today?"
"Explain quantum computing in simple terms"图像分析
- 上传一张图片
- 问:“这张图片里有什么?”
图像生成
"Create an image of a sunset over mountains"
"Generate a futuristic cityscape"语音输入
- 点击“🎤 语音输入”
- 录制你的信息
- 点击“使用Whisper进行转录”
- 如有需要,请编辑后发送
网络搜索
"What's the latest news about AI?"
"Search for Python tutorials"网页抓取
"Summarize this article: https://example.com"文件系统操作
"Show me the contents of requirements.txt"
"Create a notes.txt file with my ideas"
"Find all Python files in this directory"内存存储
"Remember that I prefer Python for scripting"
"What programming language do I prefer?"
"Show all my memories"代理循环示例
该代理自主协调多个工具:
"Research AI news and summarize the top article"
→ Searches web → Scrapes article → Summarizes
"Find Python tutorials and tell me what's in the best one"
→ Searches → Scrapes → Analyzes content📊 统计数据
- 总能力17
- 工具定义12个函数调用工具
- 所用模型4(GPT-4o、DALL-E 3、Whisper、TTS-1)
- API 集成3(OpenAI,Exa AI,Scrape.do)
- MCP 服务器2(文件系统 + 内存)
- 代码行数约3,500
- 代币优化智能限制以保持在3万个代币以下
📚 文档
- 主要文档:
architecture.md- 综合系统架构 - 附加文件:
additional/README.md- 补充文件指南 - 这个文件快速入门与概览
🔒 安全与隐私
- 沙盒文件系统MCP仅访问允许的目录
- 本地内存存储无需外部数据库
- 环境变量API密钥安全存储在
.env
🐛 故障排除
常见问题
未找到OPENAI_API_KEY
- 确保
.env文件存在且具有有效的API密钥
“Exa AI 未配置”
- 添加
EXA_API_KEY到.env或者不使用网页搜索直接使用
“令牌限制已超出”
- 清除对话历史(侧边栏中的按钮)
- 应用自动将历史记录限制为最后5条消息
🔄 版本历史
- 版本4.1 (2025年10月)- 内存MCP集成 + 自动追踪
- 版本4.0 (2025年10月)- 文件系统MCP集成 + 代理循环
- 版本3.0 (2025年10月)- LangGraph 集成(后被替换)
- 版本2.0 (2025年10月) - 风帆冲浪MCP(可能指某种系统或模块)集成
- 版本1.5 (2025年10月) - 网络工具(Exa AI + Scrape.do)
- v1.0(版本1.0) (2025年10月)- 核心AI功能
📝 许可证
这是一个个人项目。版权所有。
🙏 致谢
- OpenAI提供的GPT-4o、DALL-E 3、Whisper和TTS API服务
- Exa AI用于智能网页搜索
- Scrape.do 提供网页抓取功能
- Streamlit:卓越的网页框架
______________________________________________________________________
版本4.1 - 内存MCP集成\ 最后更新时间2025年10月18日\ 状态✅ 已准备好投入生产,配备2台MCP服务器 + 自动内存追踪功能
