商业智能助手

一个基于Python的桌面应用程序,通过Model Context Protocol (MCP)实现,允许Gemini回答关于企业的问题,使用网站数据和WhatsApp消息作为输入。

  • by sathakhussam
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sathakhussam/mcp-server-internship

使用说明

商业智能助理

一个基于Python的桌面应用程序,实现了模型上下文协议(MCP),允许Gemini使用摄入的网站数据和WhatsApp消息回答有关业务的问题。

特性

  • 🌐 网站内容抓取和摄取
  • 💬 WhatsApp聊天消息导入
  • 🧠 使用ChromaDB向量存储进行语义搜索
  • 🤖 使用Gemini Pro进行上下文感知响应
  • 🖥️ 用户友好的Tkinter GUI界面

需求

  • Python 3.10或更高版本
  • Gemini API密钥
  • ChromaDB用于矢量存储
  • 必需的Python包(请参阅安装)

安装

  1. 克隆存储库:
git clone <repository-url>
cd business-intelligence-assistant
  1. 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate  # On Unix/macOS
# OR
.venv\Scripts\activate  # On Windows
  1. 安装所需的软件包:
pip install google-generativeai chromadb beautifulsoup4 requests tiktoken python-dotenv uuid pandas
  1. 创建一个 .env 使用您的配置文件:
cp .env.example .env
  1. 编辑 .env 并添加您的Gemini API密钥:
GEMINI_API_KEY=your_api_key_here
CHROMA_DB_PATH=./data/chromadb
DATA_DIR=./data

用法

  1. 启动应用程序:
python main.py
  1. 使用GUI可以:
    • 使用“摄取网站”按钮摄取网站内容
    • 使用“导入WhatsApp”按钮导入WhatsApp聊天导出
    • 在查询输入字段中询问有关您业务的问题

数据源

网站摄入

  • 输入要抓取的URL
  • 自动提取和处理相关内容
  • 使用源元数据存储文本块

WhatsApp导入

  • 选择WhatsApp聊天导出文件(.txt)
  • 处理消息和发件人信息
  • 维护消息上下文和时间戳

发展

项目结构遵循模块化设计:

business-intelligence-assistant/
├── main.py              # Application entry point
├── .env                 # Environment configuration
├── src/
│   ├── mcp/            # MCP protocol implementation
│   │   └── host.py
│   ├── llm/            # LLM integration
│   │   └── gemini_client.py
│   ├── vector/         # Vector store
│   │   └── chroma_store.py
│   ├── data/           # Data ingestion
│   │   ├── website_scraper.py
│   │   └── whatsapp_importer.py
│   ├── gui/            # User interface
│   │   └── app.py
│   └── utils/          # Utilities
│       └── logger.py
└── logs/               # Application logs

日志记录

应用程序在 logs 目录:

  • app.log:主应用程序日志文件
  • 大小限制为1MB的旋转日志
  • 包括时间戳、日志级别和组件信息

错误处理

该应用程序实现了全面的错误处理:

  • 部件健康检查
  • 优雅的故障恢复
  • 用户友好的错误消息
  • 用于故障排除的详细日志记录

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

[在此处插入您选择的许可证]

支持

[插入支持联系信息]