航班搜索代理评估员
使用双代理架构(LangChain+MCP)测试飞行搜索代理准确性的评估管道。
快速开始
1.启动Docker服务(LiteLLM+SearXNG)
# Copy and configure environment
cp .env.example .env
# Edit .env and add your Mistral API key from https://console.mistral.ai/
# Start services
docker-compose up -d
# Verify services are running
curl http://localhost:4000/health # LiteLLM
curl http://localhost:8080 # SearXNG2.安装并运行评估
# Install dependencies
npm install
# Run evaluation
node eval.js 10 # Test with 10 random flights需求
- 码头工人 &Docker编写
- Node.js 18+
- Mistral API密钥 从https://console.mistral.ai/
Docker提供了什么
- 文学硕士 (端口4000):用于Mistral模型的统一API
- SearXNG (端口8080):尊重隐私的元搜索引擎
- 瑞迪斯:SearXNG的缓存
建筑
双代理管道:
- 代理人1 (西北风大):具有网络搜索功能的研究代理-从FlightAware、FlightRadar24等网站查找航班详细信息。
- 代理人2 (Mistral small):验证剂-构建具有置信度得分的数据
配置
环境变量(.env)
# Required: Get from https://console.mistral.ai/
MISTRAL_API_KEY=your-mistral-api-key-here
# LiteLLM (defaults work with docker-compose)
LITELLM_URL=http://localhost:4000
LITELLM_API_KEY=sk-local-dev-key-12345
LITELLM_MASTER_KEY=sk-master-local-dev-key-12345
# MCP SearXNG
MCP_SEARXNG_URL=http://localhost:3000/mcp
# Optional
DEFAULT_SAMPLE_SIZE=10Docker服务
停止服务:
docker-compose down查看日志:
docker-compose logs -f litellm
docker-compose logs -f searxng重新启动服务:
docker-compose restart用法
node eval.js # Default (10 flights)
node eval.js 3 # Quick test (3 flights)
node eval.js 20 # Comprehensive (20 flights from sample dataset)样本输出
🚀 Flight Search Agent Evaluation
📊 Dataset: 10 test cases
🔧 LiteLLM: http://localhost:4000
🔍 MCP: http://localhost:3000/mcp
[1/10] Testing: Las Vegas to Albuquerque on 16 Dec 2025 with Southwest
Expected: WN548, Boeing 737NG, 01:30
✓ 1/10 completed in 26.4s
...
════════════════════════════════════════════════════════════════════════════════
📊 BATCH EVALUATION RESULTS
════════════════════════════════════════════════════════════════════════════════
Overall Success Rate: 30.0% (3/10)
Average Duration: 25.1s per test
Field-by-Field Accuracy:
flightNumber : 50.0% (5/10)
airlineCode : 100.0% (10/10)
departureAirport : 100.0% (10/10)
arrivalAirport : 100.0% (10/10)
flightDate : 100.0% (10/10)
aircraftName : 90.0% (9/10)
flightTime : 40.0% (4/10)数据集
包括20个样本航班 data/sample-flights.json 与地面真相:
- 机场代码、航空公司代码、航班号
- 飞机类型(国际民航组织代码)
- 预定出发/到达时间
- 飞行时间
格式:
{
"flight_number": "548",
"airline_iata": "WN",
"dep_iata": "LAS",
"arr_iata": "ABQ",
"aircraft_icao": "B738",
"enriched": {
"dep_time_scheduled": "2025-12-16 10:00",
"arr_time_scheduled": "2025-12-16 12:30",
"duration": 90
}
}评估指标
- 总体成功率:所有7个字段都正确
- 每场精度:个人现场比赛率
- 持续时间容差:±15分钟
- 飞机匹配:家族级模糊匹配(波音737-800=波音737NG)
延伸
添加更多航班
将条目添加到 data/sample-flights.json 遵循上述格式。
自定义数据集路径
产生 .env:
DATASET_PATH=./path/to/your/dataset.json
AIRPORTS_PATH=./path/to/airports.json修改比较逻辑
编辑 compareResults() 功能在 eval.js:
- 持续时间公差(默认±15分钟)
- 飞机模糊匹配规则
- 现场验证逻辑
许可证
麻省理工学院
贡献
PR欢迎!请确保:
- 没有提交API密钥
- 使用样本数据集通过测试
- 文件已更新
