Token导航 LogoToken导航TokenDH.com
omniagent (Hoomanesteki) logo
数据服务stdio官方级别未说明来源级核验

omniagent (Hoomanesteki)

MCP Server

OmniAgent是一款AI驱动的多代理数据分析助手,支持自然语言查询和语音输入,能够自动路由到合适的代理进行统计分析、可视化、预测等任务,简化复杂数据分析流程。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
数据分析机器学习Python自然语言处理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

hoomanesteki

提供方

hoomanesteki

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

🤖 OmniAgent:多代理数据分析助手

![Python](https://python.org) ![Streamlit](https://streamlit.io) ![License](LICENSE) ![Tests](<>) ](<>)

想象一下,能够像队友一样与你的数据交谈。OmniAgent是一个基于人工智能的多智能体助手,可以让你用简单的英语提问,并立即获得有意义的见解、可视化和预测。无需编码,无需与仪表板搏斗,只需在需要时提供清晰的答案。

大多数人花了太多时间清理数据、弄清楚工具,并试图手动提取见解。OmniAgent通过理解您的意图并自动使用合适的专业代理为您完成工作,将复杂的数据分析转化为简单的对话体验,从而消除了这种摩擦。

______________________________________________________________________

📑 目录

______________________________________________________________________

✨ 特性

特性描述
🗣️ 自然语言用简单的英语提问
🎤 语音输入使用浏览器麦克风回答您的问题
🤖 7专业代理统计、Viz、聚合、预测、SQL、动态、语音
🔮 AI代码生成动态代理实时创建自定义分析
📊 交互式图表美丽的Plotly可视化
🧠 智能路由自动为您的查询找到合适的代理
🔒 安全执行沙盒代码执行,具有40多项安全检查
🎯 ML模型使用一个命令构建预测模型
🐳 Docker就绪使用Docker进行一次命令部署

______________________________________________________________________

🏗️ 系统架构

高级概述

┌──────────────────────────────────────────────────────────────────────────────┐
│                              USER INTERFACE                                  │
│                          (Streamlit Web App)                                 │
│                                                                              │
│    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│    │  Text Input  │    │ Voice Input  │    │  Suggestions │                  │
│    │   (Chat)     │    │ (Microphone) │    │  (Buttons)   │                  │
│    └──────┬───────┘    └──────┬───────┘    └──────┬───────┘                  │
│           │                   │                   │                          │
│           └───────────────────┼───────────────────┘                          │
│                               ▼                                              │
│    ┌─────────────────────────────────────────────────────────────────────┐   │
│    │                      🧠 MASTER AGENT                                │   │
│    │                                                                     │   │
│    │  ┌─────────────┐   ┌─────────────┐   ┌─────────────────────────┐    │   │
│    │  │   Intent    │──▶│   Router    │──▶│  MCP Message Bus        │    │   │
│    │  │  Detection  │   │   Logic     │   │  (Agent Communication)  │    │   │
│    │  │ (200+ rules)│   │             │   │                         │    │   │
│    │  └─────────────┘   └─────────────┘   └───────────┬─────────────┘    │   │
│    │                                                   │                 │   │
│    │           Check: Is Dynamic Agent pending? ◄──────┤                 │   │
│    │                         │                         │                 │   │
│    │                    YES  │  NO                     │                 │   │
│    │                         ▼                         ▼                 │   │
│    │              ┌─────────────────┐      ┌─────────────────┐           │   │
│    │              │ Route to Dynamic│      │ Route by Intent │           │   │
│    │              │  (Confirmation) │      │ (stats/viz/etc) │           │   │
│    │              └─────────────────┘      └─────────────────┘           │   │
│    └─────────────────────────────────────────────────────────────────────┘   │
│                                    │                                         │
│    ┌───────────────────────────────┼─────────────────────────────────────┐   │
│    │                               ▼                                     │   │
│    │  ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐  │   │
│    │  │   📊   │ │   📈    │ │   📦   │ │   🤖   │ │   🔍    │ │   🔮   │  │   │
│    │  │ Stats  │ │  Viz   │ │  Agg   │ │ Predict│ │  SQL   │ │Dynamic │  │   │
│    │  │ Agent  │ │ Agent  │ │ Agent  │ │ Agent  │ │ Agent  │ │ Agent  │  │   │
│    │  └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘  │   │
│    │                                                                     │   │
│    │                          SPECIALIZED AGENTS                         │   │
│    └─────────────────────────────────────────────────────────────────────┘   │
│                                    │                                         │
│                                    ▼                                         │
│    ┌─────────────────────────────────────────────────────────────────────┐   │
│    │                        RESPONSE BUILDER                             │   │
│    │   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌───────────┐  │   │
│    │   │   Content   │  │   Insights  │  │ Suggestions │  │  Figures  │  │   │
│    │   │  (Markdown) │  │   (Tips)    │  │  (Buttons)  │  │  (Plotly) │  │   │
│    │   └─────────────┘  └─────────────┘  └─────────────┘  └───────────┘  │   │
│    └─────────────────────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────────────────────┘

消息通信协议(MCP)

代理使用标准化的MCP消息进行通信:

MCPMessage(
    id: str,           # Unique message identifier
    type: MessageType, # QUERY, RESPONSE, ERROR, EVENT
    source: str,       # Sending agent name
    target: str,       # Receiving agent name
    content: str,      # Message content
    data: dict,        # Additional payload
    metadata: dict     # Timestamps, context
)

数据流

User Query → Master Agent → Intent Detection → Route to Agent → Process → Response
     │                                              │
     │                                              ▼
     │                                    ┌─────────────────┐
     │                                    │ If Dynamic:     │
     │                                    │ 1. Offer        │
     │                                    │ 2. Plan (LLM)   │
     │                                    │ 3. Execute      │
     │                                    └─────────────────┘
     │                                              │
     └────────────────────────────────────────────◄─┘

______________________________________________________________________

📦 安装

先决条件

  • Python 3.8或更高版本
  • pip(Python包管理器)
  • 现代网络浏览器(建议使用Chrome/Edge进行语音功能)

选项1:pip安装

# Clone the repository
git clone https://github.com/hoomanesteki/omniagent.git
cd omniagent

# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the application
streamlit run app.py

选项2:Conda安装

# Clone the repository
git clone https://github.com/hoomanesteki/omniagent.git
cd omniagent

# Create conda environment
conda env create -f environment.yml

# Activate environment
conda activate omniagent

# Run the application
streamlit run app.py

选项3:使用Make

make install      # Install dependencies
make run          # Run the application
make test         # Run all tests

______________________________________________________________________

🐳 Docker部署

Docker快速入门

# Build the image
docker build -t omniagent .

# Run the container
docker run -p 8501:8501 omniagent

# With API key for AI features
docker run -p 8501:8501 -e GROQ_API_KEY=your_key omniagent

使用Docker Compose(推荐)

# Create .env file with your API key (optional)
echo "GROQ_API_KEY=your_key_here" > .env

# Start the service
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the service
docker-compose down

Docker命令参考

命令描述
docker-compose up -d从后台开始
docker-compose up -d --build重建并启动
docker-compose down停止并移除容器
docker-compose logs -f跟踪日志
docker-compose restart重新启动服务

持久性数据

装载一个卷以保存上传的数据:

docker run -p 8501:8501 -v $(pwd)/data:/app/data omniagent

______________________________________________________________________

🚀 快速开始

  1. 加载数据:上传CSV文件或从侧边栏中选择示例数据集
  2. 提出问题:自然地键入“平均年龄是多少?”或“显示价格直方图”
  3. 获取见解:查看可视化、统计数据和基于AI的分析

查询示例

查询代理结果
“显示统计信息”📊 统计描述性统计
“年龄直方图”📈 Viz交互式直方图
“按性别计数”📦 汇总分组计数
“预测薪资”🤖 预测ML模型
“显示前10行”🔍 SQL数据预览
“计算滚动平均值”🔮 动态自定义分析
“计算z分数”🔮 动态Z分数归一化

______________________________________________________________________

🤖 代理

代理概述

代理表情符号用途命令示例
大师🧠查询路由和编排(内部)
统计📊统计分析“价格均值”、“漏检”
维兹📈可视化“直方图”、“散点图”、“热图”
聚合📦GroupBy操作“计数”、“求和”、“平均”
预测🤖机器学习“预测”、“构建模型”
结构化查询语言🔍数据探索“显示行”、“列”、“示例”
动态的🔮AI代码生成“滚动平均”、“查找异常值”、“z分数”
语音🎤语音识别(麦克风输入)

______________________________________________________________________

🔮 动态代理(AI驱动)

动态代理通过生成和执行自定义Python代码来处理超出内置功能的请求。

三步确认流程

┌─────────────────────────────────────────────────────────────────────────┐
│                         DYNAMIC AGENT FLOW                              │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  STEP 1: OFFER (No LLM call - saves resources)                          │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ User: "Calculate rolling average of sales"                      │    │
│  │                                                                 │    │
│  │ Agent: "I can create a Rolling/Moving Average analysis.         │    │
│  │         This requires AI. Type 'yes' to proceed or 'no'."       │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                              │                                          │
│                     User types "yes"                                    │
│                              ▼                                          │
│  STEP 2: PLAN (LLM generates code)                                      │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ Agent: "Here's my plan:                                         │    │
│  │                                                                 │    │
│  │ ```python                                                       │    │
│  │ result = df['sales'].rolling(window=7).mean()                   │    │
│  │ ```                                                             │    │
│  │                                                                 │    │
│  │ Type 'yes' to execute or 'no' to cancel."                       │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                              │                                          │
│                     User types "yes"                                    │
│                              ▼                                          │
│  STEP 3: EXECUTE (Sandboxed execution)                                  │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ Agent: "✅ Analysis Complete!                                   │    │
│  │         [Shows results and visualization]"                      │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

支持的分析类型

类型关键字示例
滚动/移动平均线“滚动”、“移动平均线”、“窗口”“7天滚动平均线”
异常检测“异常值”、“异常”、“IQR”“使用IQR查找异常值”
Z-Score/标准化“Z-Score”、“normalize”、“Standardization”“计算Z-scores”
回归分析“回归”、“趋势线”“带回归线的散点图”
数据分箱“箱”、“分类”、“桶”“分箱年龄”
排名“顶部”、“底部”、“排名”“销售额前10名”
自定义任何其他请求“按日期累计的金额”

启用动态代理

  1. 启用 AI模式 在侧边栏中
  2. 输入您的 Groq API密钥 (免费) console.groq.com)
  3. 点击 验证并保存
  4. 问任何复杂的问题!

______________________________________________________________________

🎤 语音助手

OmniAgent支持 语音输入 通过浏览器内置的语音识别功能。

⚠️ 备注:声音是 仅语音转文本 (你说话,代理人回复短信)。

需求

要求详细信息
浏览器Chrome、Edge或Safari浏览器(Firefox限定)
麦克风内置或外置
权限必须允许浏览器麦克风访问
超文本传输安全协议必需(本地主机用于开发)

如何启用语音

  1. 切换 启用语音 在侧边栏中
  2. 点击 "🎤 开始说话” 按钮
  3. 允许麦克风访问 当浏览器提示时
  4. 把你的问题说清楚
  5. 查询已自动提交

浏览器麦克风设置

铬:

  1. 点击🔒 地址栏中的锁定图标
  2. 查找“麦克风”→ 选择“允许”

边缘:

  1. 点击🔒 地址栏中的锁定图标
  2. 单击“此网站的权限”
  3. 将麦克风设置为“允许”

游猎:

  1. 游猎→ 偏好设置→ 网站→ 麦克风
  2. 考虑OmniAgent站点

语音故障排除

问题解决方案
麦克风不工作检查浏览器权限
无转录说话清晰,减少背景噪音
“权限被拒绝”重置站点权限并再次允许

______________________________________________________________________

📁 项目结构

omniagent/
│
├── 📄 app.py                    # Main Streamlit entry point
├── 📄 requirements.txt          # Python dependencies
├── 📄 requirements-dev.txt      # Development dependencies
├── 📄 environment.yml           # Conda environment
├── 📄 Makefile                  # Build automation (40+ commands)
├── 📄 Dockerfile                # Docker image
├── 📄 docker-compose.yml        # Docker Compose config
├── 📄 pytest.ini                # Test configuration
├── 📄 README.md                 # This file
│
├── 📂 core/                     # Core utilities
│   ├── __init__.py
│   ├── config.py                # Configuration & settings
│   ├── analyzer.py              # DataAnalyzer class
│   └── llm.py                   # LLM client (Groq API)
│
├── 📂 agents/                   # Specialized agents
│   ├── __init__.py
│   ├── base.py                  # BaseAgent abstract class
│   ├── master_agent.py          # 🧠 Orchestrator
│   ├── stats_agent.py           # 📊 Statistics
│   ├── viz_agent.py             # 📈 Visualization
│   ├── aggregate_agent.py       # 📦 GroupBy
│   ├── predict_agent.py         # 🤖 ML prediction
│   ├── sql_agent.py             # 🔍 Data exploration
│   ├── dynamic_agent.py         # 🔮 AI code generation
│   └── voice_agent.py           # 🎤 Voice input
│
├── 📂 mcp/                      # Message Communication Protocol
│   ├── __init__.py
│   └── protocol.py              # MCPMessage, MCPBus
│
├── 📂 ui/                       # User interface
│   ├── __init__.py
│   ├── components.py            # Session, messages
│   ├── sidebar.py               # Sidebar UI
│   └── chat.py                  # Chat interface
│
├── 📂 tests/                    # Test suite (195 tests)
│   ├── conftest.py              # Shared fixtures
│   ├── unit/                    # Unit tests
│   └── integration/             # Integration tests
│
├── 📂 data/                     # Data files
│   ├── samples/                 # Sample datasets
│   └── uploads/                 # User uploads
│
└── 📂 docs/                     # Documentation
    ├── A_API_REFERENCE.md
    ├── B_MCP_PROTOCOL.md
    ├── C_TESTING.md
    ├── D_SECURITY.md
    └── E_DEPLOYMENT.md

______________________________________________________________________

🧪 测试

运行测试

# Run all tests
make test

# Run specific test suites
make test-unit          # Unit tests only
make test-integration   # Integration tests
make test-security      # Security tests

# Run with coverage
make coverage

# Run specific test file
pytest tests/unit/test_agents.py -v

测试覆盖率

模块测试覆盖范围
核心20+配置、数据分析器、LLMClient
代理50+所有7个代理,路由
MCP协议25+消息、总线
安全40+代码安全,模式
UI30+帮助、关于、消息
集成20+端到端流程

______________________________________________________________________

🔒 安全

动态代理安全

动态代理在沙盒环境中执行AI生成的代码,其中包含40多种阻塞模式:

类别阻塞模式
系统访问import os, import sys, subprocess
代码注入eval(), exec(), compile()
文件操作open(), .read(), .write()
网络requests., urllib, socket
反思globals(), locals(), getattr()
危险邓德尔__builtins__, __class__

安全流程

Generated Code → Length Check → Pattern Check → Sandboxed Execution
                     ↓              ↓
                 Too long?      Dangerous?
                     ↓              ↓
                  REJECT         REJECT

______________________________________________________________________

⚙️ 配置

环境变量

创建一个 .env 文件:

# Groq API (for Dynamic Agent)
GROQ_API_KEY=your_api_key_here

# LLM Settings (optional)
LLM_MODEL=llama-3.3-70b-versatile

配置选项

设置默认值说明
PAGE_TITLE"🤖 OmniAgent“浏览器选项卡标题
LLM_MODEL“骆驼-3.3-70b-多功能”Groq型号
LLM_MAX_TOKENS2000最大响应令牌数
MAX_SUGGESTIONS12建议按钮

______________________________________________________________________

🔧 故障排除

常见问题

问题解决方案
“没有名为‘streamlit’的模块”运行 pip install -r requirements.txt
端口8501正在使用正在使用 streamlit run app.py --server.port=8502
语音不工作使用Chrome/Edge,允许麦克风
动态代理失败检查Groq API密钥是否有效
Docker构建失败确保Docker守护进程正在运行

获取帮助

  • 检查 docs/ 详细文档文件夹
  • 在GitHub上打开一个问题
  • 在OmniAgent聊天中键入“help”

______________________________________________________________________

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

______________________________________________________________________

👨‍💻 作者

胡曼·埃斯特基

______________________________________________________________________

🙏 致谢

______________________________________________________________________

Made with ❤️ by Hooman Esteki

目录标签

目录标签

数据分析机器学习Python自然语言处理本地部署可视化自动化工具

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP