🤖 GAP SDK测试-谷歌Gemini
 ](https://nodejs.org)  
使用Google Gemini SDK的农业人工智能代理高级测试框架,具有原生结构化数据支持和模型上下文协议(MCP)集成。TomorrowNow全球接入平台(GAP)生态系统的一部分。
______________________________________________________________________
🎯 概述
该测试框架利用Google Gemini 2.5 Flash的结构化数据功能,通过增强的数据提取和分析来测试农业人工智能代理。它与OpenAI SDK版本一起提供并行测试功能,用于全面的代理评估。
主要特点
- ✅ 谷歌Gemini SDK:与本地集成
@google/generative-ai - ✅ 结构化数据支持:Gemini的原生结构化输出能力
- ✅ 函数调用:高级工具调用
FunctionCallingConfigMode - ✅ MCP服务器集成:与GAP和AccuWeather MCP服务器无缝集成
- ✅ 批量测试:通过自动结果收集运行数百个查询
- ✅ 意图分类:100%覆盖率,自动意图检测
- ✅ 多语言支持:英语和斯瓦希里语查询测试
- ✅ 护栏:审核、越狱检测、PII检测(通过OpenAI)
- ✅ 对话历史:在多回合对话中保持上下文
- ✅ Excel导出:详细的结果,包括指标和分析
______________________________________________________________________
✨ 特性
Gemini特有优势
| 特性 | 描述 | 优点 |
|---|---|---|
| 结构化数据 | 原生结构化输出支持 | 更好的数据提取和分析 |
| 函数调用 | 高级工具调用模式 | 更可靠的工具调用 |
| 快速响应 | Gemini 2.5 Flash优化 | 更低的延迟,经济高效 |
| 多模态 | 文本+图像支持(未来) | 增强功能 |
测试能力
- 批量测试:每种语言运行5、10、100+个查询
- 意图分类:100%覆盖要求
- 语言检测:英语/斯瓦希里语检测
- 工具调用跟踪:监控MCP服务器呼叫成功率
- 护栏测试:安全和适度过滤器
- 性能指标:响应时间、成功率跟踪
- Excel报表:综合测试结果导出
______________________________________________________________________
🚀 快速开始
先决条件
- Node.js>=18.0.0
- Google Gemini API密钥(在这里买一个)
- OpenAI API密钥(用于护栏)
- 已部署MCP服务器(GAP或AccuWeather)
安装
# Clone the repository
git clone https://github.com/eagleisbatman/gap-sdk-testing-gemini.git
cd gap-sdk-testing-gemini
# Install dependencies
npm install配置
创建一个 .env 文件:
# Required: Google Gemini API Key
GEMINI_API_KEY=your_gemini_api_key_here
# Required: OpenAI API Key (for guardrails)
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]
↓
Gemini Agent (utils/gemini-agent.js)
↓
Function Calling (utils/gemini-mcp-tool.js)
↓
MCP Tool Call Execution
↓
MCP Server (GAP/AccuWeather)
↓
Response Processing with Structured Data
↓
Excel Export (utils/excel-utils.js)关键组件
batch-test-sdk.js-主测试编排脚本intent-classifier.js-意图检测和语言分类utils/process-query.js-个人查询处理逻辑utils/gemini-agent.js-Gemini客户端和内容生成utils/gemini-mcp-tool.js-MCP工具声明和执行utils/guardrails.js-安全检查(使用OpenAI API)utils/excel-utils.js-结果导出和分析
______________________________________________________________________
🆚 与OpenAI版本的差异
| 特性 | OpenAI SDK | Gemini SDK |
|---|---|---|
| 模型 | GPT-4o | 双子座2.5闪光灯 |
| 结构化数据 | 有限 | 本地支持 |
| 函数调用 | Agent Builder | 手动执行 |
| 工具执行 | 自动 | 手动,带响应处理 |
| 成本 | 较高 | 较低 |
| 速度 | 中等 | 更快 |
| 护栏 | 内置 | 使用OpenAI API |
结构化数据优势
Gemini的结构化数据支持能够:
- 更好地提取天气参数
- 更可靠的意图分类
- 增强的数据分析能力
- 提高响应一致性
______________________________________________________________________
📈 用法示例
基本测试
# Run default test (5 queries per language)
npm test大规模测试
# Run 100 queries per language (200 total)
npm run test:100并行测试
同时运行OpenAI和Gemini版本:
# From parent directory
node compare-sdks.js --queries=10______________________________________________________________________
🧪 测试场景
天气预报查询
- “未来5天的天气预报是什么?”
- “明天会下雨吗?”
- “温度会是多少?”
农业咨询
- “我现在应该种玉米吗?”
- “我什么时候灌溉庄稼?”
- “现在是施肥的好时机吗?”
多语言支持
- L1:“天气预报怎么说?”
- “明天天气怎么样?”
______________________________________________________________________
📊 性能指标
该框架跟踪:
- 成功率:成功查询的百分比
- 工具调用率:触发MCP工具的查询百分比
- 数据检索率:成功检索MCP数据的百分比
- 平均响应时间:每次查询的平均处理时间
- 意图分类准确性:正确的意图检测率
- 语言检测精度:正确的语言识别
- 结构化数据提取率:结构化输出解析的成功率
______________________________________________________________________
🔒 护栏
审核(通过OpenAI)
- 通过OpenAI审核API进行内容审核
- 自动屏蔽不适当的内容
- 为被阻止的查询生成安全的响应
越狱检测
- 检测快速注射企图
- 防止系统提示操作
- 安全处理对抗性输入
PII检测
- 个人信息检测
- 敏感数据匿名化
- 隐私保护响应
注: 护栏使用OpenAI API,即使主代理使用Gemini。
______________________________________________________________________
🔌 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-gemini/
├── batch-test-sdk.js # Main test script
├── intent-classifier.js # Intent detection
├── intents.json # Intent definitions
├── utils/
│ ├── process-query.js # Query processing
│ ├── gemini-agent.js # Gemini client
│ ├── gemini-mcp-tool.js # MCP tool integration
│ ├── guardrails.js # Safety checks
│ ├── excel-utils.js # Excel export
│ └── config.js # Configuration
└── test-results/ # Generated reports添加新查询
编辑 utils/query-loader.js 添加新的测试查询。
自定义提示
修改 utils/prompt-template.js 用于代理行为变化。
______________________________________________________________________
📊 对比测试
这个Gemini版本可以与OpenAI版本并行运行:
# From parent directory
node compare-sdks.js --queries=10这使得:
- 并排性能比较
- 成本分析
- 响应质量评估
- 工具调用成功率比较
______________________________________________________________________
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 为新功能添加测试
- 确保所有测试通过
- 提交拉取请求
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
🔗 相关项目
- GAP SDK测试(OpenAI) -OpenAI SDK版本
- GAP农业MCP服务器 -天气预报MCP服务器
- TomorrowNow决策树MCP服务器 -作物咨询MCP服务器
- TomorrowNow GAP平台 -全球接入平台
______________________________________________________________________
📞 支持
______________________________________________________________________
内置于❤️ TomorrowNow全球接入平台
