ServiceNow/EnterpriseOps-Gym

GitHub: ServiceNow/EnterpriseOps-Gym

一个企业级容器化模拟环境,用于评估 LLM 智能体在有状态的真实企业工作流中的多步规划与工具调用能力。

Stars: 101 | Forks: 16

EnterpriseOps-Gym Logo EnterpriseOps-Gym: Environments and Evaluations for Stateful Agentic Planning and Tool Use in Enterprise Settings

EnterpriseOps-Gym 是一个容器化、可重置的企业模拟 benchmark,用于在真实的企业工作流中评估 LLM agent 的有状态多步规划和工具使用能力

作者

Shiva Krishna Reddy Malay*,1    Shravan Nayak*,1,2,3    Jishnu Sethumadhavan Nair1    Aman Tiwari1    Sathwik Tejaswi Madhusudhan1    Sagar Davasam1    Sridhar Krishna Nemala1    Srinivas Sunkara1    Sai Rajeswar1,2,3

*同等贡献  |  1ServiceNow AI Research  |  2Mila – Quebec AI Institute  |  3Université de Montréal

## 📖 简介 **EnterpriseOps-Gym** 在一个完全交互式的容器化环境中,跨 **8 个企业领域**(Calendar、CSM、Drive、Email、HR、ITSM、Teams 和 Hybrid)评估 LLM agent 的 **1,150 项专家策划任务**。 与静态数据集不同,任务运行在实时的 MCP 服务器上,并由检查**最终环境状态**而非动作序列的 SQL 验证器进行评估。 **核心特性:** - 🛠️ 跨 8 个企业领域的 **512 个工具** - 🗄️ **164 个数据库表**,每个表平均有 1.7 个外键依赖 - 🔗 每个任务平均 **9.15 个步骤**(最多 34 个),平均包含 **5.3 个验证条件** - 📏 每个任务平均 **89k 上下文长度** - 🏆 表现最好的模型成功率仅为 **34.1%** —— 还有巨大的提升空间
EnterpriseOps-Gym Overview
## 📋 目录 - [⚙️ 安装](#️-installation) - [🔧 前置条件](#-prerequisites) - [🚀 运行 Benchmark](#-running-the-benchmark) - [📊 评分](#-scoring) - [🏆 排行榜](#-leaderboard) - [📚 引用](#-citation) ## ⚙️ 安装 需要 **Python 3.11+** 和 [uv](https://docs.astral.sh/uv/)。 ``` git clone https://github.com/ServiceNow/EnterpriseOps-Gym.git cd EnterpriseOps-Gym # 仅安装你需要的 provider(s) uv sync --extra anthropic # Claude / AWS Bedrock uv sync --extra openai # OpenAI / Azure OpenAI uv sync --extra google # Gemini / Vertex AI uv sync --extra deepseek # DeepSeek uv sync --extra all # Everything ``` 复制并配置示例 config: ``` cp -r conf.example/ conf/ # 使用你的 API key 和模型详情编辑 conf/llm/my-model.json ``` ## 🔧 前置条件 ### 1. 种子数据库 每个任务都在一个由 SQL 快照填充的预置数据库上运行。这些快照打包在仓库根目录的 `gym_dbs.zip` 中——每个独立的数据库对应一个 SQL 文件,按领域组织: ``` Domain Wise DBs and Task-DB Mappings/ calendar/dbs/ # Calendar domain database snapshots csm/dbs/ # Customer Service Management snapshots drive/dbs/ # Drive domain snapshots email/dbs/ # Email domain snapshots hr/dbs/ # HR domain snapshots hybrid/dbs/ # Multi-domain (hybrid) snapshots itsm/dbs/ # IT Service Management snapshots teams/dbs/ # Teams domain snapshots ``` 在运行 benchmark 之前解压它: ``` unzip gym_dbs.zip ``` ### 2. Gym 服务器 每个领域都需要一个运行中的 MCP 服务器。拉取并启动每个领域的 Docker 镜像: ``` docker pull shivakrishnareddyma225/enterpriseops-gym-mcp-:latest docker run -d -p : shivakrishnareddyma225/enterpriseops-gym-mcp-:latest ``` 默认端口: | 领域 | MCP 服务器 | 端口 | |--------|-----------|------| | `teams` | `gym-teams-mcp` | 8002 | | `csm` | `sn-csm-server` | 8001 | | `email` | `gym-email-mcp` | 8004 | | `itsm` | `gym-itsm-mcp` | 8006 | | `calendar` | `gym-calendar` | 8003 | | `hr` | `sn-hr-internal` | 8008 | | `drive` | `gym-google-drive-mcp` | 8009 | | `` | N/A | 8005 | 如果你使用非默认端口,请更新 `conf/ray/domain_conf.json`。对于 `calendar`,请使用 8003 作为 container_port。 ### 2. LLM 配置 LLM 配置位于 `conf/llm/.json` 中。使用数组可配置负载均衡池。 | 字段 | 必需 | 描述 | |-------|----------|-------------| | `llm_provider` | ✅ | `anthropic`, `aws_bedrock`, `openai`, `azureopenai`, `googlevertexai`, `google`, `vllm`, `openrouter`, `deepseek`, `qwq` | | `llm_model` | ✅ | 模型标识符 | | `llm_api_key` | ✅ | API key | | `llm_api_endpoint` | — | Azure OpenAI / vLLM 必需 | | `llm_api_version` | — | Azure OpenAI 必需 | | `llm_region` | — | `aws_bedrock` / `googlevertexai` 的区域 | | `temperature` | — | 默认 `0.0` | | `max_tokens` | — | 默认 `4096` | | `reasoning` | - | 推理参数 | ``` { "llm_provider": "azureopenai", "llm_model": "gpt-4.1", "llm_api_key": "", "llm_api_endpoint": "https://.openai.azure.com", "llm_api_version": "2025-04-01-preview", "temperature": 0.1, "max_tokens": 16384 } ``` ## 🚀 运行 Benchmark ### 选项 A — Ray *(推荐)* Ray 可协调跨模型和领域的并行运行。 **1. 创建实验配置** (`conf/ray/experiment.json`): ``` { "llms": ["gpt-4.1-mini", "gemini_2p5"], "domains": ["teams", "csm", "email"], "modes": ["oracle", "plus_5_tools", "plus_10_tools", "plus_15_tools"], "orchestrator": "react", "num_runs": 1, "num_llm_instances": 1, "path_templates": { "log_dir": "logs/{orchestrator}/{llm}/{domain}/{mode}", "output_folder": "results/{orchestrator}/{llm}/{domain}/{mode}", "llm_config": "conf/llm/{llm}.json" } } ``` 每个模型的任务并发数在 `conf/ray/llm_concurrency.json` 中设置(默认为 5): ``` { "gpt-4.1-mini": 4, "gemini_2p5": 4 } ``` **2. 运行:** ``` python ray_experiment_queue.py --experiment_config conf/ray/experiment.json ``` ### 选项 B — 直接运行 在不使用 Ray 的情况下运行单个领域/模式。**针对 `hybrid` 领域请使用此选项。** ``` python evaluate.py \ --hf_dataset ServiceNow-AI/EnterpriseOps-Gym \ --domain teams --mode oracle \ --llm_config conf/llm/gpt-4.1-mini.json \ --output_folder results/react/gpt-4.1-mini/teams/oracle \ --orchestrator react \ --concurrency 4 --num_runs 1 ``` 对于 hybrid 任务: ``` python evaluate.py \ --hf_dataset ServiceNow-AI/EnterpriseOps-Gym \ --domain hybrid --mode oracle \ --llm_config conf/llm/gpt-4.1-mini.json \ --output_folder results/react/gpt-4.1-mini/hybrid/oracle \ --orchestrator react \ --concurrency 2 --num_runs 1 ``` **编排器:** | 值 | 描述 | |-------|-------------| | `react` | 标准 ReAct 循环 | | `planner_react` | 规划器生成计划;执行器遵循该计划 | | `decomposing` | 在执行前将任务分解为子目标 | 对于 `planner_react` / `decomposing`,请添加 `--planner_llm_config conf/llm/.json`。 ## 📊 评分 ``` # 单次运行 python compute_score.py --results_folder results/react/gpt-4.1-mini/teams/oracle # 一次运行所有模式 python compute_score.py --results_folder results/react/gpt-4.1-mini/teams ``` 输出: ``` +----------------+---------------+-----------------+----------------------+-----------------------+ | Mode | Total Files | Files w/ Errors | Avg Success Rate (%) | Avg Verifier Pass (%) | +================+===============+=================+======================+=======================+ | oracle | 100 | 0 | 72.00 | 68.50 | +----------------+---------------+-----------------+----------------------+-----------------------+ | plus_5_tools | 100 | 0 | 65.00 | 61.20 | +----------------+---------------+-----------------+----------------------+-----------------------+ ``` - **平均成功率** —— *所有*验证器均通过的任务 - **平均验证器通过率** —— 每个验证器的平均通过率 - **有错误的文件** —— agent 错误;从平均值中排除 ## 🏆 排行榜 在整个 benchmark 的 Oracle 模式下的任务成功率 (%)。只有当**所有**验证条件都满足时,任务才算通过。 | 模型 | Teams | CSM | Email | ITSM | Calendar | HR | Drive | Hybrid | **平均** | |-------|:-----:|:---:|:-----:|:----:|:--------:|:--:|:-----:|:------:|:-------:| | **闭源** | | | | | | | | | | | Claude Opus 4.6 | **52.0** | 45.1 | 57.7 | 33.3 | **43.3** | **45.1** | **57.1** | **34.0** | **45.9** | | Claude Sonnet 4.6 | 47.0 | 32.6 | **58.6** | **35.5** | 40.4 | 37.0 | 57.1 | 29.4 | 42.2 | | Claude Opus 4.5 | 50.0 | 34.2 | 51.9 | 23.8 | 43.2 | 32.1 | 49.5 | 30.7 | 39.4 | | Gemini-3.1-Pro | 46.0 | **46.7** | 47.1 | 32.8 | 40.4 | 10.9 | 55.2 | 30.1 | 38.7 | | Claude Sonnet 4.5 | 51.0 | 16.7 | 51.3 | 17.6 | 34.6 | 21.6 | 52.1 | 28.1 | 34.1 | | Gemini-3-Flash | 47.3 | 35.0 | 44.3 | 28.5 | 30.5 | 12.6 | 49.7 | 24.2 | 34.0 | | Gemini-3-Pro | 43.0 | 27.7 | 33.6 | 22.2 | 28.8 | 12.5 | 46.7 | 22.9 | 29.7 | | GPT-5 | 26.3 | 36.4 | 49.0 | 18.9 | 41.3 | 17.9 | 34.0 | 23.5 | 30.9 | | GPT-5-Mini | 25.7 | 15.8 | 47.4 | 8.9 | 28.8 | 10.7 | 23.8 | 22.5 | 22.9 | | Gemini-2.5-Pro | 39.3 | 11.6 | 31.1 | 13.9 | 12.5 | 4.9 | 27.0 | 19.6 | 20.0 | | **开源** | | | | | | | | | | | DeepSeek-V3.2 | 35.7 | 15.4 | 45.8 | 9.6 | 21.5 | 15.0 | 27.6 | 22.9 | 24.2 | | Kimi-K2-Thinking | 30.0 | 7.1 | 51.0 | 12.2 | 15.4 | 8.2 | 39.6 | 15.7 | 22.4 | | Qwen3-30B (Think) | 22.0 | 5.4 | 51.9 | 6.7 | 18.3 | 7.6 | 25.7 | 15.7 | 19.1 | | Qwen3-235B (Inst.) | 28.0 | 4.7 | 38.1 | 9.3 | 15.7 | 7.8 | 23.8 | 17.7 | 18.1 | | Qwen3-4B (Think) | 24.0 | 3.8 | 38.4 | 5.6 | 5.8 | 7.1 | 21.9 | 15.8 | 15.3 | ### 公开划分: 我们在公开划分中发布了 60% 的 benchmark 样本。为了完整起见,我们在下面列出了仅限于公开划分样本的评估结果: ## | 模型 | Teams | CSM | Email | ITSM | Calendar | HR | Drive | Hybrid | **平均** | |-------|:-----:|:---:|:-----:|:----:|:--------:|:--:|:-----:|:------:|:--------:| | ***闭源模型*** | | | | | | | | | | | Claude Opus 4.5 | 50.8 | 29.7 | 47.8 | 28.2 | 41.0 | 32.4 | 46.9 | 30.7 | 36.6 | | Gemini-3-Flash | 50.8 | 25.7 | 47.8 | 26.2 | 23.0 | 17.6 | 53.1 | 22.7 | 31.2 | | GPT-5.2 (High) | 27.9 | 28.7 | 52.2 | 22.3 | 34.4 | 22.5 | 37.5 | 20.5 | 29.4 | | Claude Sonnet 4.5 | 54.1 | 15.8 | 46.3 | 22.3 | 36.1 | 22.5 | 54.7 | 25.0 | 31.7 | | GPT-5 | 23.0 | 30.7 | 55.2 | 18.4 | 37.7 | 16.7 | 34.4 | 21.6 | 28.1 | | Gemini-3-Pro | 45.9 | 21.8 | 29.9 | 24.3 | 24.6 | 14.7 | 42.2 | 23.9 | 26.7 | | GPT-5.2 (Low) 24.6 | 17.8 | 41.8 | 7.8 | 26.2 | 6.9 | 23.4 | 20.5 | 19.3 | | GPT-5-Mini | 23.0 | 16.8 | 52.2 | 5.8 | 31.1 | 6.9 | 21.9 | 21.8 | 22.0 | | ***开源模型*** | | | | | | | | | | | DeepSeek-V3.2 (High) | 41.0 | 12.9 | 44.8 | 18.4 | 21.3 | 19.6 | 37.5 | 23.9 | 25.5 | | GPT-OSS-120B (High) | 37.7 | 19.8 | 43.3 | 6.8 | 24.6 | 17.6 | 45.3 | 19.3 | 24.4 | | Kimi-K2-Thinking | 29.5 | 6.9 | 46.3 | 15.5 | 11.5 | 8.8 | 32.8 | 12.5 | 18.5 | | Qwen3-30B (Think) | 21.3 | 5.0 | 53.7 | 8.7 | 18.0 | 8.8 | 26.6 | 11.4 | 17.0 | | Qwen3-235B (Inst.) | 29.5 | 4.0 | 41.8 | 10.7 | 23.0 | 14.7 | 31.2 | 19.3 | 19.6 | | Qwen3-4B (Think) | 23.0 | 3.0 | 37.3 | 5.8 | 4.9 | 7.8 | 23.4 | 15.9 | 13.6 | ## 📚 引用 ``` @misc{malay2026enterpriseopsgymenvironmentsevaluationsstateful, title={EnterpriseOps-Gym: Environments and Evaluations for Stateful Agentic Planning and Tool Use in Enterprise Settings}, author={Shiva Krishna Reddy Malay and Shravan Nayak and Jishnu Sethumadhavan Nair and Sagar Davasam and Aman Tiwari and Sathwik Tejaswi Madhusudhan and Sridhar Krishna Nemala and Srinivas Sunkara and Sai Rajeswar}, year={2026}, eprint={2603.13594}, archivePrefix={arXiv}, primaryClass={cs.AI}, url={https://arxiv.org/abs/2603.13594}, } ```
标签:LLM智能体, 人工智能, 企业IT运维, 多线程, 工具调用, 用户模式Hook绕过, 自动化规划, 自动化评估, 请求拦截, 逆向工具