NEXUS AI
  
一个功能强大的人工智能助手应用程序,由Streamlit、LangGraph和Google Gemini构建,具有MCP(模型上下文协议)服务器,为数学运算和代码生成提供专用工具。这个项目是使用Jenkins和GitHub CI/CD构建和管理的,用于自动化测试、构建和部署。
🚀 特性
- 交互式聊天界面:用户友好的基于Streamlit的聊天应用程序,用于自然语言交互
- MCP服务器集成:定制MCP服务器,配备增强AI功能的专用工具
- 数学运算:用于加法、减法、乘法和除法的内置工具
- 代码生成:由Google Gemini提供支持的高级Python和web开发代码生成
- LangGraph工作流:使用LangGraph协调AI模型调用和工具执行
- 谷歌Gemini集成:利用Gemini 2.5 Flash Lite实现高质量的AI响应
- 异步处理:使用asyncio高效处理并发操作
- 可自定义主题:带有未来主义UI动画的深色和浅色主题
- Docker支持:容器化部署,易于扩展
- CI/CD管道:通过Jenkins和GitHub Actions自动构建和部署
- AWS主机:部署在Amazon Web Services上,以实现可扩展和可靠的云基础设施
🏗️ 建筑
MCP AI Assistant遵循模块化、微服务启发的架构,旨在实现可扩展性、可维护性和无缝的AI集成。该系统采用分层方法,将用户界面、业务逻辑编排和外部服务集成之间的关注点分开。
系统概述
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Streamlit UI │◄──►│ LangGraph │◄──►│ MCP Server │
│ (Frontend) │ │ Orchestrator │ │ (Tools) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
▼
┌─────────────────────┐
│ Google Gemini AI │
│ (LLM Model) │
└─────────────────────┘核心组件
1.流线型前端(app.py)
- 角色:用户界面和交互管理
- 特性:
- 响应式聊天界面,支持深色/浅色主题 - 异步处理的实时消息处理 - 自定义CSS动画和粒子效果,以增强用户体验 - 会话状态管理实现会话持久化 - 移动优先的响应式设计,具有自适应布局
2.LangGraph编排器(client_langraph.py)
- 角色:工作流引擎和AI模型协调
- 特性:
- 基于图的复杂会话流状态管理 - 直接AI响应和工具执行之间的条件路由 - 使用asyncio进行异步处理以实现并发操作 - 工具绑定和执行编排 - 用于稳健操作的错误处理和重试逻辑
3.MCP服务器(MCP_server.py)
- 角色:使用模型上下文协议的专业工具提供商
- 可用工具:
- 数学运算: add, subtract, multiply, divide -精确的算术计算 - 代码生成: code_generation python webcode_generation (HTML/CSS/JS)-人工智能驱动的代码创建,带有注释和导入 - 通用查询: normal_query -非专业对话的回退
- 特性:
- FastMCP框架,实现高效工具执行 - 输入验证和错误处理 - 异步工具处理以提高性能
4.谷歌双子座集成
- 角色:大型语言模型后端
- 配置:
- Gemini 2.5 Flash Lite型号可实现最佳性能/成本平衡 - 可配置的温度、令牌限制和重试机制 - 通过环境变量实现安全的API密钥管理
数据流
- 用户输入 → Streamlit UI捕获并显示消息
- 处理 → LangGraph评估上下文并确定工具需求
- 工具执行 → MCP服务器在需要时提供专门的功能
- AI响应 → Google Gemini生成上下文响应
- 输出 → 结果通过LangGraph流回到Streamlit进行显示
CI/CD和部署概述
┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
│ GitHub │────►│ Jenkins │────►│ Docker Registry │────►│ AWS │
│ Repository │ │ Pipeline │ │ │ │ Deployment │
└─────────────┘ └─────────────┘ └─────────────────┘ └─────────────┘
▲ │ │ │
│ ▼ ▼ ▼
└─────────── Test Results ────────── Build Artifacts ──────── Production ───────部署架构
- 容器化:基于Docker的部署,用于跨开发、测试和生产的一致环境
- CI/CD管道:
- 詹金斯:使用GitHub上的自动触发器协调整个CI/CD流程 - GitHub集成Webhooks在代码推送和拉取请求时触发Jenkins管道 - 自动化测试:单元测试、集成测试和安全扫描在隔离的容器中运行 - 构建过程:Docker镜像被构建、标记并推送到安全注册表 - 部署:通过蓝绿色部署策略自动部署到AWS
- AWS基础架构:
- ECS/ECR:用于可扩展容器管理的容器编排和注册表 - 负载平衡:应用程序负载平衡器在多个实例之间分配流量 - 自动缩放:EC2自动扩展组确保高可用性和成本优化 - 关系型数据库服务:用于数据持久性的托管数据库服务(如果需要) - 云监控:监控和记录性能指标和警报 - 垂直路径计算机:使用适当的安全组和子网进行安全的网络隔离
- 环境管理:使用AWS Systems Manager参数存储和
.env文件 - 安全:IAM角色、加密机密以及符合AWS安全最佳实践
📋 先决条件
- Python 3.8+
- Docker(可选,用于容器化部署)
- Google Gemini API密钥
🛠️ 安装
- 克隆存储库:
git clone
cd MCP_STREAMLIT- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt⚙️ 设置
- 环境变量:
创建一个 .env 根目录中的文件:
google_api_key=your_google_gemini_api_key_here- API密钥设置:
- 从获取Google Gemini API密钥 谷歌AI工作室 - 将密钥添加到您的 .env 文件
🚀 用法
运行Streamlit应用程序
streamlit run app.py这将在以下位置启动web应用程序 http://localhost:8501.
直接使用MCP服务器
python MCP_server.py使用客户端脚本进行测试
python client_langraph.pyDocker部署
使用Docker构建并运行应用程序:
docker build -t mcp-ai-assistant .
docker run -p 8501:8501 --env-file .env mcp-ai-assistant🔄 CI/CD管道
该项目利用与GitHub集成的Jenkins进行持续集成和部署:
- 自动化测试:Jenkins在每次向主分支推送时都会运行单元测试和集成测试
- 构建过程:Docker镜像被构建并推送到容器注册表
- 部署:自动部署到暂存和生产环境
- 监控:通过Jenkins仪表板监控管道状态和日志
要设置CI/CD管道,请执行以下操作:
- 使用GitHub webhooks配置Jenkins以自动触发
- 在Jenkins中设置必要的凭据和环境变量
- 使用提供的Jenkins文件进行管道配置
💡 例子
数学运算
- “15+27是什么?”
- “计算100除以5”
- “8乘以9”
代码生成
- “生成一个Python函数来对列表进行排序”
- “为博客创建Flask web应用程序”
- “为响应式导航栏编写HTML和CSS”
通用查询
- “解释递归在编程中的工作原理”
- “使用虚拟环境有什么好处?”
📦 依赖项
streamlit:Web应用程序框架langchain-google-genai:谷歌Gemini集成langchain-mcp-adapters:MCP客户端适配器langgraph:工作流编排python-dotenv:环境变量管理mcp:模型上下文协议库nest-asyncio:异步兼容性。
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- Google Gemini支持人工智能功能
- 用于编排的LangChain和LangGraph
- 用于web界面的Streamlit
- 协议规范的MCP社区
- Jenkins和GitHub用于CI/CD基础架构
📞 支持
如果您遇到任何问题或有疑问,请在GitHub存储库上打开问题。
