🤖 GAP SDK测试-OpenAI
 ](https://nodejs.org)  
使用OpenAI SDK和模型上下文协议(MCP)集成的农业人工智能代理综合测试框架。TomorrowNow全球接入平台(GAP)生态系统的一部分。
______________________________________________________________________
🎯 概述
该测试框架直接使用OpenAI SDK复制OpenAI Agent Builder工作流,为农业AI代理提供批量测试、性能分析和质量保证。它与MCP服务器(GAP Agriculture、AccuWeather、决策树)集成,以提供真实的测试场景。
主要特点
- ✅ OpenAI SDK集成:直接使用
@openai/agents为了与Agent Builder兼容 - ✅ MCP服务器支持:与多个MCP服务器(GAP、AccuWeather)无缝集成
- ✅ 批量测试:通过自动结果收集运行数百个查询
- ✅ 意图分类:所有查询的自动意图检测
- ✅ 多语言支持:英语和斯瓦希里语查询测试
- ✅ 护栏:审核、越狱检测、PII检测
- ✅ 对话历史:在多回合对话中保持上下文
- ✅ Excel导出:详细的结果,包括指标和分析
______________________________________________________________________
✨ 特性
测试能力
| 特性 | 描述 |
|---|---|
| 批量测试 | 每种语言运行5、10、100+个查询 |
| 意图分类 | 查询意图的自动检测 |
| 语言检测 | 英语/斯瓦希里语检测和处理 |
| 工具调用跟踪 | 监控MCP服务器呼叫成功率 |
| 护栏测试 | 测试调节和安全过滤器 |
| 性能指标 | 响应时间、成功率跟踪 |
| Excel报表 | 综合测试结果导出 |
MCP服务器集成
- GAP农业MCP服务器 (默认)
- 工具: get_gap_weather_forecast - 覆盖范围:肯尼亚和东非 - 功能:50个成员的集合预报,长达14天
- AccuWeather MCP服务器 (可选)
- 工具: get_accuweather_weather_forecast, get_accuweather_current_conditions - 覆盖范围:全球天气数据 - 特点:当前状况+5天预测
______________________________________________________________________
🚀 快速开始
先决条件
- Node.js>=18.0.0
- OpenAI API密钥
- 已部署MCP服务器(GAP或AccuWeather)
安装
# Clone the repository
git clone https://github.com/eagleisbatman/gap-sdk-testing.git
cd gap-sdk-testing
# Install dependencies
npm install配置
创建一个 .env 文件:
# Required: OpenAI API Key
OPENAI_API_KEY=sk-your-openai-api-key-here
# MCP Server Configuration (choose one)
# Option 1: Use GAP MCP Server (default)
MCP_SERVER_TYPE=GAP
GAP_MCP_URL=https://gap-agriculture-mcp-server.up.railway.app/mcp
# Option 2: Use AccuWeather MCP Server
# MCP_SERVER_TYPE=ACCUWEATHER
# ACCUWEATHER_MCP_URL=https://accuweather-mcp-server.up.railway.app/mcp运行测试
# Test with 5 queries per language (default)
npm test
# Test with 10 queries per language
npm run test:10
# Test with 100 queries per language
npm run test:100
# Custom number of queries
node batch-test-sdk.js --queries=50______________________________________________________________________
📊 测试结果
结果会自动保存到 test-results/ 带有时间戳的文件夹:
test-results/gap-sdk-test-results-YYYY-MM-DD-HHMMSS.xlsxExcel报表内容
- 查询详细信息:原始查询、检测到的语言、意图分类
- 响应分析:代理响应、工具调用、MCP数据检索
- 性能指标:处理时间、成功/失败状态
- 护栏结果:适度标记、PII检测
- 概要统计:成功率、工具调用率、语言分布
______________________________________________________________________
🔧 建筑
User Query
↓
Intent Classifier (intent-classifier.js)
↓
Guardrails (utils/guardrails.js)
↓
OpenAI Agent (utils/prompts.js)
↓
MCP Tool Call (hostedMcpTool)
↓
MCP Server (GAP/AccuWeather)
↓
Response Processing
↓
Excel Export (utils/excel-utils.js)关键组件
batch-test-sdk.js-主测试编排脚本intent-classifier.js-意图检测和语言分类utils/process-query.js-个人查询处理逻辑utils/guardrails.js-安全和适度检查utils/prompts.js-代理提示生成utils/excel-utils.js-结果导出和分析
______________________________________________________________________
📈 用法示例
基本测试
# Run default test (5 queries per language)
npm test大规模测试
# Run 100 queries per language (200 total)
npm run test:100自定义配置
// Modify utils/config.js to change:
// - Default coordinates
// - Farmer context
// - MCP server URLs
// - Guardrail settings______________________________________________________________________
🧪 测试场景
天气预报查询
- “未来5天的天气预报是什么?”
- “明天会下雨吗?”
- “温度会是多少?”
农业咨询
- “我现在应该种玉米吗?”
- “我什么时候灌溉庄稼?”
- “现在是施肥的好时机吗?”
多语言支持
- L1:“天气预报怎么说?”
- “明天天气怎么样?”
______________________________________________________________________
📊 性能指标
该框架跟踪:
- 成功率:成功查询的百分比
- 工具调用率:触发MCP工具的查询百分比
- 数据检索率:成功检索MCP数据的百分比
- 平均响应时间:每次查询的平均处理时间
- 意图分类准确性:正确的意图检测率
- 语言检测精度:正确的语言识别
______________________________________________________________________
🔒 护栏
节制
- 通过OpenAI审核API进行内容审核
- 自动屏蔽不适当的内容
- 为被阻止的查询生成安全的响应
越狱检测
- 检测快速注射企图
- 防止系统提示操作
- 安全处理对抗性输入
PII检测
- 个人信息检测
- 敏感数据匿名化
- 隐私保护响应
______________________________________________________________________
🔌 MCP服务器集成
GAP农业MCP服务器
默认配置:
MCP_SERVER_TYPE=GAP
GAP_MCP_URL=https://gap-agriculture-mcp-server.up.railway.app/mcp工具: get_gap_weather_forecast
新闻报道: 肯尼亚和东非
AccuWeather MCP服务器
配置:
MCP_SERVER_TYPE=ACCUWEATHER
ACCUWEATHER_MCP_URL=https://accuweather-mcp-server.up.railway.app/mcp工具:
get_accuweather_weather_forecast-5天预报get_accuweather_current_conditions-当前天气
新闻报道: 全球
______________________________________________________________________
📝 查询数据库
该框架包括一个全面的查询数据库:
- 英语查询:天气、种植、灌溉、虫害管理
- 斯瓦希里语查询:农业问题翻译
- 意图类别:天气预报、农业建议、一般问题
- 多样性:不同的措辞和复杂程度
______________________________________________________________________
🛠️ 发展
项目结构
gap-sdk-testing/
├── batch-test-sdk.js # Main test script
├── intent-classifier.js # Intent detection
├── intents.json # Intent definitions
├── utils/
│ ├── process-query.js # Query processing
│ ├── guardrails.js # Safety checks
│ ├── prompts.js # Agent prompts
│ ├── excel-utils.js # Excel export
│ └── config.js # Configuration
└── test-results/ # Generated reports添加新查询
编辑 utils/query-loader.js 添加新的测试查询。
自定义提示
修改 prompts/farmerchat-template.md 用于代理行为变化。
______________________________________________________________________
📊 与Gemini版本的比较
这个OpenAI版本是双SDK测试方法的一部分:
- OpenAI SDK (
gap-sdk-testing)-将GPT-4o与Agent Builder一起使用 - Gemini SDK (
gap-sdk-testing-gemini)-使用具有结构化数据的Gemini 2.5 Flash
两个版本可以并行运行以进行比较测试。看 compare-sdks.js 在父目录中。
______________________________________________________________________
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 为新功能添加测试
- 确保所有测试通过
- 提交拉取请求
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
🔗 相关项目
- GAP农业MCP服务器 -天气预报MCP服务器
- GAP SDK测试(Gemini) -谷歌Gemini SDK版本
- TomorrowNow决策树MCP服务器 -作物咨询MCP服务器
- TomorrowNow GAP平台 -全球接入平台
______________________________________________________________________
📞 支持
- 问题:
- 文档:请参阅代码注释和内联文档
- MCP协议: 模型上下文协议
______________________________________________________________________
内置于❤️ TomorrowNow全球接入平台
