FlyAI 高铁 vs 飞机比价
核心功能
使用 FlyAI 搜索高铁票和机票,进行价格和时间对比,给用户推荐最优出行方式。
比价逻辑
1. 基准价设定
以明天出发的高铁票为基准:
- 搜索明天(或用户指定日期)的高铁车次
- 选择时间最短的车次作为基准
- 记录该车次的:价格、时长、出发/到达时间
2. 机票搜索(含前后一天比价)
搜索 3 天的机票价格:
- 用户指定日期 D
- 搜索 D-1、D、D+1 三天的机票
- 直飞航班优先
- 筛选合理时间段(如 6:00-23:00)
- 记录每天的最低价格航班
目的:帮助用户选择最便宜的出行日期,有时提前或推后一天能省很多钱。
2.5 弃程票搜索(可选)
核心定义(来自 flyai-skipticket):
- 弃程票:中转城市 = 实际目的地,在中转城市下机,放弃后续航段
- 示例:想去昆明,买北京→昆明→曼谷联程票,在昆明下机
- 对比对象:只对比直飞价格和弃程票价格,不展示普通中转票
搜索策略:
-
直飞搜索:出发地 → 实际目的地(如北京→昆明)
-
弃程票搜索:出发地 → 更远城市(中转城市=实际目的地)
- 示例:北京→昆明→曼谷(昆明是中转城市=实际目的地)
"更远城市"Y 的选择策略(完整来自 flyai-skipticket):
策略 1:目的地附近省份的省会城市
对于实际目的地 X,选择 X 周边省份的省会作为 Y:
| 实际目的地 X | 附近省份省会 Y(推荐搜索顺序) |
|---|
| 西安(陕西) | 成都(四川)、重庆(直辖市)、兰州(甘肃)、银川(宁夏)、太原(山西)、郑州(河南)、武汉(湖北) |
| 成都(四川) | 重庆、昆明(云南)、贵阳(贵州)、西安(陕西)、兰州(甘肃) |
| 重庆 | 成都、贵阳、昆明、西安、兰州 |
| 武汉(湖北) | 长沙(湖南)、郑州(河南)、合肥(安徽)、南昌(江西)、西安(陕西) |
| 长沙(湖南) | 武汉、广州(广东)、南宁(广西)、贵阳、南昌 |
| 郑州(河南) | 武汉、西安、太原、石家庄、济南(山东) |
| 济南(山东) | 郑州、石家庄(河北)、太原、北京、天津 |
| 南京(江苏) | 上海、杭州(浙江)、合肥、武汉、郑州 |
| 杭州(浙江) | 上海、南京、福州(福建)、南昌、合肥 |
| 广州(广东) | 南宁(广西)、海口(海南)、福州、南昌、长沙 |
| 昆明(云南) | 贵阳、成都、重庆、南宁、拉萨(西藏) |
| 厦门(福建) | 福州、杭州、上海、南昌、广州 |
策略 2:本省份的热门城市/旅游城市
对于实际目的地 X(非省会),选择本省份的省会或热门旅游城市作为 Y:
| 实际目的地 X | 本省热门城市 Y |
|---|
| 青岛(山东) | 济南、烟台、威海 |
| 大连(辽宁) | 沈阳、丹东 |
| 厦门(福建) | 福州、泉州 |
| 深圳(广东) | 广州、珠海 |
| 宁波(浙江) | 杭州、温州 |
| 苏州(江苏) | 南京、无锡 |
| 北海(广西) | 南宁、桂林 |
| 三亚(海南) | 海口 |
| 丽江(云南) | 昆明、大理、西双版纳 |
| 桂林(广西) | 南宁、柳州 |
| 珠海(广东) | 广州、深圳 |
| 烟台(山东) | 济南、青岛 |
| 威海(山东) | 济南、青岛 |
策略 3:跨省热门旅游城市
一些热门旅游城市本身就是很好的"更远城市"选项:
| 热门旅游城市 Y | 可作为 Y 的中转城市 X |
|---|
| 北海(广西) | 南宁、桂林、贵阳、昆明 |
| 三亚(海南) | 海口、广州、南宁 |
| 丽江(云南) | 昆明、大理、成都、重庆 |
| 西双版纳(云南) | 昆明、成都、重庆 |
| 厦门(福建) | 福州、杭州、上海 |
| 青岛(山东) | 济南、北京、上海 |
| 大连(辽宁) | 沈阳、北京 |
| 桂林(广西) | 南宁、贵阳、长沙 |
FlyAI 搜索命令示例:
# 直飞
flyai search-flight --origin 北京 --destination 昆明 --dep-date 2026-05-01
# 弃程票(昆明是中转城市=实际目的地)
# 策略 1:附近省份省会
flyai search-flight --origin 北京 --destination 成都 --dep-date 2026-05-01 --journey-type 2
flyai search-flight --origin 北京 --destination 重庆 --dep-date 2026-05-01 --journey-type 2
flyai search-flight --origin 北京 --destination 贵阳 --dep-date 2026-05-01 --journey-type 2
# 策略 3:热门旅游城市
flyai search-flight --origin 北京 --destination 曼谷 --dep-date 2026-05-01 --journey-type 2
flyai search-flight --origin 北京 --destination 三亚 --dep-date 2026-05-01 --journey-type 2
注意:FlyAI 搜索时,目的地是联程票的最终目的地 Y,中转城市是用户实际想去的地方 X。
推荐规则:
- 如弃程票价格 < 直飞价格 * 0.8,推荐弃程票方案(便宜 20%+)
- 必须清晰告知风险和限制
⚠️ 重要风险提示(必须告知用户):
- 不可托运行李 - 行李直挂最终目的地,只能手提行李
- 后续航段取消 - 放弃任何非最后一段,航空公司会取消所有后续航段(含返程)
- 常旅客风险 - 可能影响里程、会员资格,甚至被禁飞
- 航班变动风险 - 如原航班取消,航司可能改签不经过实际目的地的航线
- 违反承运合同 - 虽不违法,但违反航司合同条款
最佳实践:仅用于单程票,或往返票的回程最后一段。
3. 对比维度
| 维度 | 高铁 | 飞机 |
|---|
| 价格 | 基准价 | 最低价 |
| 时长 | 高铁行驶时间 | 飞行时间 + 往返机场 + 安检候机(通常 +3 小时) |
| 舒适度 | 座位宽敞、可走动 | 空间有限、起降耳压 |
| 准点率 | 高(>95%) | 中(受天气影响) |
| 便利性 | 市区到市区 | 郊区机场,需额外交通 |
| 行李 | 宽松 | 有限制,托运额外收费 |
4. 推荐规则
# 基础比价
if 机票价格 < 高铁价格 * 0.8:
推荐飞机(便宜 20% 以上)
elif 机票价格 < 高铁价格:
if 总时长(飞机)< 总时长(高铁):
推荐飞机(更便宜且更快)
else:
推荐高铁(时间相近,高铁更舒适)
elif 机票价格 < 高铁价格 * 1.3:
if 总时长(飞机)< 总时长(高铁)* 0.6:
推荐飞机(贵一点但快很多)
else:
推荐高铁(性价比更高)
else:
推荐高铁(明显更便宜)
# 弃程票检查
if 弃程票价格 < 直飞价格 * 0.8:
提示弃程票选项(便宜 20%+),但告知风险
# 前后一天比价
if D-1 或 D+1 价格 < D 价格 * 0.8:
推荐调整日期(提前/推后一天能省 20%+)
总时长计算
高铁总时长
高铁总时长 = 高铁行驶时间 + 市区到火车站(约 30 分钟)
飞机总时长
飞机总时长 = 飞行时间
+ 市区到机场(约 60 分钟)
+ 安检候机(约 90 分钟)
+ 机场到市区(约 60 分钟)
= 飞行时间 + 约 3.5 小时
输出格式
推荐结果
## 🚄 vs ✈️ 出行方式对比
### 📍 行程:[出发地] → [目的地]
### 📅 日期:[出发日期]
---
### 🚄 高铁(推荐 ✓)
**车次**:Gxxx
**时间**:HH:MM - HH:MM(x 小时 x 分)
**价格**:¥xxx(二等座)
**总时长**:约 x 小时(含市区交通)
**优势**:
- ✅ 市区到市区,交通便利
- ✅ 准点率高,不受天气影响
- ✅ 座位宽敞,可自由走动
- ✅ 无需提前很久到站
---
### ✈️ 飞机
**航班**:xxxx
**时间**:HH:MM - HH:MM(飞行 x 小时 x 分)
**价格**:¥xxx(经济舱)
**总时长**:约 x 小时(含往返机场 + 安检)
**劣势**:
- ❌ 机场较远,往返需约 2 小时
- ❌ 需提前 90 分钟到机场
- ❌ 受天气影响可能延误
---
### 📅 前后一天价格对比(如适用)
| 日期 | 最低机票 | 差价 | 建议 |
|------|---------|------|------|
| D-1(提前 1 天) | ¥xxx | -¥xxx | ⭐ 更便宜 |
| D(原定) | ¥xxx | - | - |
| D+1(推后 1 天) | ¥xxx | +¥xxx | - |
**建议**:[如调整日期能省多少钱,是否值得]
---
### 🎫 弃程票选项(如适用)
**直飞价格**:
| 航班 | 价格 | 时间 |
|------|------|------|
| [航班号] | ¥xxx | HH:MM-HH:MM |
**弃程票选项**(中转城市=实际目的地):
| 联程路线 | 价格 | 相比直飞 | 节省 |
|---------|------|---------|------|
| [出发地]→[实际目的地]→[更远城市 1] | ¥xxx | -¥xxx | ✅ 省 xx% |
| [出发地]→[实际目的地]→[更远城市 2] | ¥xxx | +¥xxx | ❌ 无优惠 |
**推荐**:
✅ [联程路线] ¥xxx,可在 [实际目的地] 下机,省¥xxx
⚠️ **风险提示**:
- 不可托运行李(行李直挂最终目的地)
- 放弃后续航段,航司会取消所有后续航段(含返程)
- 可能影响常旅客里程和会员资格
- 仅推荐用于单程票或往返票的回程最后一段
**建议**:[如弃程票便宜 20% 以上且用户无行李,可考虑;否则不推荐]
---
### 💡 推荐理由
[根据比价逻辑给出具体推荐原因]
**价格对比**:高铁 ¥xxx vs 飞机 ¥xxx(差价 ¥xxx)
**时间对比**:高铁 x 小时 vs 飞机 x 小时(含往返机场)
**综合建议**:[具体建议]
特殊情况处理
1. 无高铁直达
- 搜索高铁中转方案
- 如中转总时长 > 飞机总时长 * 1.5,直接推荐飞机
2. 无直飞航班
- 搜索中转航班
- 中转航班总时长 = 飞行时间 + 中转等待时间 + 额外机场时间
- 如中转等待 > 3 小时,提示用户高铁可能更舒适
3. 价格波动大
4. 特殊日期(春运、节假日)
- 高铁票难买,提示提前抢票
- 机票价格可能翻倍,提示错峰出行
5. 前后一天价差大
- 如 D-1 或 D+1 便宜 20% 以上,强烈推荐调整日期
- 计算调整日期的额外成本(如请假、住宿)
- 给出净节省金额
6. 弃程票可用
判断标准(来自 flyai-skipticket):
- 弃程票价格 < 直飞价格 * 0.8(便宜 20% 以上)→ 推荐
- 弃程票价格 >= 直飞价格 * 0.8 → 不推荐,直飞更省心
操作流程:
- 确定实际目的地 X(如昆明)
- 选择更远城市 Y(如曼谷、新加坡、成都、重庆等)
- 搜索出发地→Y 的联程票(中转城市=X)
- 对比联程票价格 vs 直飞 X 价格
- 如便宜 20% 以上,展示弃程票选项并告知风险
必须告知的风险:
- ⚠️ 不可托运行李(行李直挂最终目的地 Y)
- ⚠️ 放弃后续航段会导致所有后续航段取消(含返程)
- ⚠️ 可能影响常旅客里程和会员资格
- ⚠️ 违反航司承运合同条款(虽不违法)
- ⚠️ 航班变动时航司可能改签不经过 X 的航线
推荐人群:
- ✅ 单程出行、无托运行李、预算有限
- ❌ 往返票去程、有托运行李、航司高级会员
使用场景
用户询问以下问题时触发:
- "[A] 到 [B] 坐高铁还是飞机?"
- "[A] 到 [B] 怎么走最划算?"
- "帮我对比一下高铁和飞机的价格"
- "明天去 [B],推荐高铁还是飞机"
- "[A] 到 [B] 有没有便宜的机票/弃程票"
- "帮我看看前后几天的价格,哪天最便宜"
- "[A] 到 [B] 有没有隐藏城市票/跳城票"
- "预算有限,怎么买票最便宜"
示例
示例 1:基础比价
输入:
北京到上海,明天出发,高铁还是飞机?
处理流程:
- 搜索明天北京→上海高铁,找到最快车次(如 G1,4 小时 18 分,¥662)
- 搜索明天北京→上海机票,找到最低价(如 ¥450,飞行 2 小时 10 分)
- 计算总时长:
- 高铁:4h18m + 30m = 约 5 小时
- 飞机:2h10m + 3h30m = 约 6 小时
- 对比:
- 价格:飞机便宜 ¥212(32% off)
- 时间:高铁更快 1 小时
- 推荐:根据用户偏好给出建议
示例 2:含弃程票 + 前后一天比价
输入:
北京到昆明,5 月 1 日出行,帮我对比高铁和飞机,看看有没有便宜的选择
处理流程:
-
高铁搜索:
- 搜索 5 月 1 日北京→昆明高铁
- 最快:G403,11h28m,¥1,147.5(二等座)
-
机票搜索(3 天比价):
- 4 月 30 日:最低¥1,535(3U3125,中转)
- 5 月 1 日:最低¥1,300(CA4174,红眼)
- 5 月 2 日:最低¥775(3U8282,红眼)
- 发现:推后一天能省¥525(40% off)⭐
-
弃程票搜索(参考 flyai-skipticket 策略):
- 昆明是实际目的地,搜索北京→昆明→更远城市
- 更远城市选择:贵阳、成都、重庆
- 搜索北京→成都(经昆明中转)联程票
- 结论:本次未发现昆明作为中转城市的弃程票优惠
-
对比分析:
- 高铁:¥1,147.5,12 小时
- 飞机(5/1):¥1,300,7.5 小时
- 飞机(5/2):¥775,7.5 小时 ⭐ 最便宜
- 弃程票:无优惠
-
推荐:
- 性价比最高:5 月 2 日飞机(¥775)
- 如必须 5 月 1 日:高铁(¥1,147.5)比飞机(¥1,300)便宜¥152.5
- 弃程票:本次无优惠
输出
## 🚄 vs ✈️ 北京→上海 出行对比
### 📅 明天(2026-04-14)出发
---
### 🚄 高铁(时间更短 ✓)
**车次**:G1
**时间**:09:00 - 13:18(4 小时 18 分)
**价格**:¥662(二等座)
**总时长**:约 5 小时
**优势**:
- ✅ 更快(比飞机少 1 小时)
- ✅ 北京南→上海虹桥,市区直达
- ✅ 准点率>98%
---
### ✈️ 飞机(价格更低 ✓)
**航班**:CA1501
**时间**:11:00 - 13:10(飞行 2 小时 10 分)
**价格**:¥450(经济舱,3.5 折)
**总时长**:约 6 小时
**优势**:
- ✅ 便宜 ¥212(省 32%)
- ✅ 飞行时间短
**劣势**:
- ❌ 首都机场较远
- ❌ 需提前 90 分钟到机场
---
### 💡 推荐建议
**追求时间** → 选高铁(快 1 小时,市区直达)
**追求性价比** → 选飞机(省¥212,适合不赶时间)
**我的建议**:差价不大(¥212),高铁更舒适准点,推荐高铁。
注意事项
- 价格时效性:机票价格实时变动,告知用户仅供参考
- 高铁票紧张:节假日提示提前购票(提前 15 天开售)
- 天气因素:雷雨季节提示飞机可能延误
- 行李需求:大件行李推荐高铁(无额外费用)
- 报销需求:询问是否需要报销凭证(高铁票更易获取)
- 弃程票风险(来自 flyai-skipticket):
- 不可托运行李 - 行李直挂最终目的地,只能手提行李
- 后续航段取消 - 放弃任何非最后一段,航空公司会取消所有后续航段(含返程)
- 常旅客风险 - 可能影响里程、会员资格,甚至被禁飞
- 航班变动风险 - 如原航班取消,航司可能改签不经过实际目的地的航线
- 违反承运合同 - 虽不违法,但违反航司合同条款
- 最佳实践 - 仅用于单程票,或往返票的回程最后一段
- 前后一天比价:
- 如价差>20%,强烈推荐调整日期
- 提醒用户考虑额外住宿/请假成本
- 计算净节省金额