印度铁路人工智能助理
在LinkedIn上观看完整的工作演示:\ https://www.linkedin.com/feed/update/urn:li:activity:7415069287402356736/
一个由人工智能驱动的印度铁路查询系统,允许用户提出自然语言问题,并接收准确、实时的铁路信息。使用LLM、MCP服务器和LangGraph构建工具驱动的代理AI架构,以确保可靠、无幻觉的输出。
______________________________________________________________________
特性
| 特性 | 描述 |
|---|---|
| PNR状态 | 使用乘客详细信息、图表状态和行程信息检查预订状态 |
| 车站代码查找 | 将城市/车站名称转换为官方IRCTC车站代码 |
| 直播列车 | 查找未来几个小时在车站之间运行的列车 |
| 火车时刻表 | 获取所有车站的完整路线/时刻表 |
| 票价查询 | 查看不同级别(SL、3A、2A、1A等)的票价 |
| 实时列车状态 | 追踪列车的当前位置、延误和运行状态 |
| 座位可用性 | 查看各舱位的座位可用性,并提供确认机会 |
| 列车搜索 | 搜索两个车站/城市之间的所有列车 |
______________________________________________________________________
系统架构
User (Streamlit Chat UI)
│
▼
┌─────────────────────────────────┐
│ LLM Agent (GPT-4o-mini) │
│ + LangGraph Orchestration │
└─────────────────────────────────┘
│
│ decides which tool(s) to call
▼
┌─────────────────────────────────┐
│ FastMCP Tool Server │
│ (8 Railway API Tools) │
└─────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ IRCTC APIs (via RapidAPI) │
└─────────────────────────────────┘______________________________________________________________________
项目结构
.
├── RailwayServer.py # FastMCP tool server with 8 railway API tools
├── app.py # Streamlit UI + LangGraph agent orchestration
├── .env # Environment variables (API keys)
├── requirements.txt # Python dependencies
└── README.md # Project documentation______________________________________________________________________
技术栈
| 组件 | 技术 |
|---|---|
| 语言 | Python 3.10+ |
| 工具服务器 | FastMCP |
| 代理框架 | LangChain+LangGraph |
| LLM | OpenAI GPT-4o-mini |
| 前端 | 流式传输 |
| 数据来源 | IRCTC API(RapidAPI) |
______________________________________________________________________
可用工具
1. get_pnr_status
获取详细的PNR状态,包括列车信息、行程详情和乘客预订/当前状态。
输入: 10位PNR编号
2. resolve_station_code
将城市或车站名称转换为官方车站代码。
例子: “德里”→ “NDLS”、“孟买”→ "BCT"
3. get_live_station_trains
查找未来N小时内在两个车站之间运行的列车。
输入: 源代码、目标代码、小时数(默认值:4)
4. get_train_schedule
获取列车的完整路线/时刻表,包括所有站点、时间和站台号。
输入: 4-5位列车号
5. get_fare
获取两站之间不同舱位的票价。
输入: 列车号、源代码、目的地代码、日期(可选)
6. get_live_train_status
追踪列车的当前位置、延误分钟数和运行状态。
输入: 列车号、日期(可选)
7. check_seat_availability
查看座位可用性,包括舱位状态、票价和确认机会。
输入: 源代码、目的地代码、日期(DD-MM-YYYY)、列车号(可选)
8. search_trains
搜索车站或城市之间的所有列车。支持主要城市扩张(德里搜索NDLS、ANVT、DLI、DEE、DEC、SZM)。
输入: 来源、目的地、日期(可选)
______________________________________________________________________
支持的主要城市
系统会自动在所有主要车站搜索这些城市:
| 城市 | 搜索的车站 |
|---|---|
| 德里/新德里 | NDLS、ANVT、DLI、DEE、DEC、SZM |
| 孟买 | CSMT、BCT、LTT、BDTS |
| 加尔各答 | HWH、SDAH、KOAA |
| 钦奈 | MAS、MS、MSB |
______________________________________________________________________
安装说明
1.克隆存储库
git clone https://github.com/KripaAI/railway-inquiry-ai-assistant.git
cd railway-inquiry-ai-assistant2.创建虚拟环境
python -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate3.安装依赖项
pip install -r requirements.txt4.配置环境变量
创建一个 .env 项目根目录中的文件:
OPENAI_API_KEY=your_openai_api_key
RAPIDAPI_KEY=your_rapidapi_key获取API密钥:
- OpenAI API密钥: platform.openai.com
- RapidAPI密钥: rapidapi.com/irctc-api
______________________________________________________________________
运行应用程序
streamlit run app.py打开浏览器: http://localhost:8501
______________________________________________________________________
查询示例
"What is the PNR status of 1234567890?"
"Station code for Varanasi"
"Trains running from NDLS to CNB in the next 4 hours"
"Show me the schedule for train 12565"
"What is the fare from Delhi to Mumbai on train 12951?"
"Check seat availability from HJP to NDLS on 15-01-2026"
"Search trains from Kolkata to Chennai"
"Live status of train 12301"______________________________________________________________________
设计原则
- 工具优先AI -LLM从不猜测铁路数据;始终使用经过验证的API工具
- 的确定性行为 -LangGraph确保可预测、可重复的代理流
- 关注点分离 -MCP服务器独立处理所有API逻辑
- 智能车站处理 -提供时直接使用电台代码,仅在需要时解析
- 生产就绪架构 -考虑到可扩展性和可靠性而构建
______________________________________________________________________
运作原理
- 用户输入 -用户通过Streamlit聊天用自然语言提问
- 代理决策 -LangGraph代理分析查询并决定调用哪个工具
- 工具执行 -FastMCP服务器执行适当的IRCTC API调用
- 响应格式 -代理将API响应格式化为用户友好的答案
- 显示 -聊天界面以正确的格式显示响应
______________________________________________________________________
未来的增强功能
- 多语言支持(印地语、地区语言)
- 语音输入/输出集成
- 基于可用性的预订建议
- 带连接的行程规划
- 价格提醒和通知
- 移动响应PWA版本
- 用于频繁访问数据的缓存层
______________________________________________________________________
故障排除
| 问题 | 解决方案 |
|---|---|
| “未找到RAPIDI_KEY” | 确保 .env 存在具有有效API密钥的文件 |
| “未找到列车” | 验证车站代码是否正确;尝试城市名称 |
| 连接超时 | 检查互联网连接;API可能有费率限制 |
| “列车今天不运行” | 实时状态仅适用于当天运行的列车 |
______________________________________________________________________
许可证
MIT许可证
______________________________________________________________________
贡献
欢迎投稿、问题和功能请求!请随意分叉存储库并提交拉取请求。
______________________________________________________________________
