铁路查询AI助手

一个由AI驱动的印度铁路查询系统,允许用户通过自然语言提问获取实时准确的铁路信息。

  • by KripaAI
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KripaAI/railway-inquiry-ai-assistant

使用说明

印度铁路人工智能助理

在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-assistant

2.创建虚拟环境

python -m venv venv

# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate

3.安装依赖项

pip install -r requirements.txt

4.配置环境变量

创建一个 .env 项目根目录中的文件:

OPENAI_API_KEY=your_openai_api_key
RAPIDAPI_KEY=your_rapidapi_key

获取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逻辑
  • 智能车站处理 -提供时直接使用电台代码,仅在需要时解析
  • 生产就绪架构 -考虑到可扩展性和可靠性而构建

运作原理

  1. 用户输入 -用户通过Streamlit聊天用自然语言提问
  2. 代理决策 -LangGraph代理分析查询并决定调用哪个工具
  3. 工具执行 -FastMCP服务器执行适当的IRCTC API调用
  4. 响应格式 -代理将API响应格式化为用户友好的答案
  5. 显示 -聊天界面以正确的格式显示响应

未来的增强功能

  • 多语言支持(印地语、地区语言)
  • 语音输入/输出集成
  • 基于可用性的预订建议
  • 带连接的行程规划
  • 价格提醒和通知
  • 移动响应PWA版本
  • 用于频繁访问数据的缓存层

故障排除

问题 解决方案
“未找到RAPIDI_KEY” 确保 .env 存在具有有效API密钥的文件
“未找到列车” 验证车站代码是否正确;尝试城市名称
连接超时 检查互联网连接;API可能有费率限制
“列车今天不运行” 实时状态仅适用于当天运行的列车

许可证

MIT许可证


贡献

欢迎投稿、问题和功能请求!请随意分叉存储库并提交拉取请求。


致谢