【2026飞猪AI旅行创新大赛】-商旅融合行程官(在会议间隙自动塞入最优"微行程"——带薪旅行,不耽误正事)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 20/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- python
- Lĩnh vực
- ai, full-stack
Hướng nghiên cứu
Start with the linked project repository, Geohzy/bleisure-planner, and read its README, then inspect app.py and demo.py to understand the web and command-line entry points. Run the documented demo with API keys configured to see the full planning flow. Done means the described meeting parsing, POI selection, time-constrained itinerary, route display, and one-stop replacement work as shown; this issue provides no specific change request to implement.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
商旅融合行程官(Bleisure 助手)
参赛项目名称
商旅融合行程官(Bleisure 助手)
- 一句话介绍:输入出差城市 + 会议时段,Agent 在会议间隙自动塞入最优"微行程"——带薪旅行,不耽误正事。
- 赛道:开放命题
团队 / 作者与奖品领取人
- 团队名称/作者:PinkyPN(个人独立参赛)
- 主要提交人 GitHub ID(仅 1 位,必填):Geohzy
- 其他成员(可选,仅用于署名):无
旅行场景与目标用户
面向场景:行程规划(会议间隙的微行程)+ 目的地探索 + 酒店/POI 选点 + 飞猪预订闭环。
打工人的刚需:出差到了一个城市,会议间隙有 2–3 小时空档,想出去转转又怕算不好时间耽误正事。
目标用户:异地出差、展会/会议参会的商旅人群——白天被议程占满,真正能自由支配的往往只有会议之间的两三个小时;后续可复用到企业差旅、会展(如云栖大会)等场景。
我做了什么
「商旅融合行程官」把会议之间的碎片时间当成一个约束求解问题来处理,全链路五步:
- 一句话会议解析(百炼):中文口语描述(如"明天下午2点到4点开会,晚上7点半客户晚宴")→ 结构化会议列表;再反推空闲窗口,两端各削 30 分钟作缓冲,短于 45 分钟的碎片不硬塞景点;
- 空间感知选点:用 flyai 真实 POI / 酒店数据,按酒店位置做 haversine 距离排序 + 偏好加权;多品类抓取(人文/地标/博物馆/园林/市集/文创)+ 关键词兜底(夜市/美食街/咖啡),按名去重,单路失败不中断整轮;
- 交通感知排站:两站之间按距离自动选步行/骑行/地铁公交/打车,并计入等车、进出站等固定耗时;再叠加开放时间约束——到访时段必须完整落在开放窗口内,打烊自动跳过并换同窗口备选,夜景类地点自动排到傍晚;
- AI 对比裁决(百炼):为每一站生成"为什么选它、为什么没选它",且提示词硬性约束:所有距离、耗时、时刻只能原样引用后端计算结果,模型只负责解释、不许编造数字;
- 输出与闭环:路线示意图 + 时间轴行程卡,每站直达飞猪详情/预订页;不满意可一键换站(只换指定站、路线图与裁决同步重算,不重跑全流程);实在排不下时给出结构化说明(约束 / 现实 / 处理),不硬排一个去不了的地点。
创新性:切入"时间硬约束 × 出行意愿"的联合优化,做时空约束下的微行程规划,人肉算不好;命中官方鼓励的"空间感知"方向,预设命题里无同类。另一个差异点是"数字纪律":距离、时刻全由确定性代码计算,大模型只做解析与解释,从机制上杜绝行程里的数字幻觉。
完整度:全链路真实数据、行程时间可复算;网页版 + 命令行版双入口;单元测试覆盖核心逻辑且全程不触网;无百炼 Key、额度用尽、单路接口失败时全链路降级,主流程不中断。
市场前景:商旅高频刚性需求,可扩展到企业差旅、会展(如云栖大会)等场景。
百炼使用说明(必填)
- 百炼能力 / 模型:通过百炼 DashScope 接口调用文本模型。模型链定义在
llm.py(默认依次为qwen3.8-2.4t-a95b、deepseek-v4-pro-0813、qwen3.8-flash、qwen3.8-27b、qwen3.8-max),可用环境变量QWEN_MODELS(逗号分隔)或QWEN_MODEL(单个)覆盖;链上前一个模型额度用尽、报错或返回空内容时,自动回退到下一个。 - 调用方式(百炼 API / DashScope SDK / 百炼 CLI
bl/ OpenWork):DashScope OpenAI 兼容 REST 接口(https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions),标准库urllib直连,无额外 SDK 依赖;Key 只放环境变量DASHSCOPE_API_KEY,不进代码、不进版本库。调用代码见llm.py(生成/裁决)与natural.py(会议解析)。 - 使用环节与输入输出(三处,均在运行时链路):
- 会议解析(
natural.py的parse_meetings):把一句话口语会议描述解析成结构化会议列表,12 小时制自动转 24 小时制,未写明时长默认 1 小时;
输入=一句中文会议描述(如"明天下午2点到4点开会,晚上7点半客户晚宴")→ 输出=纯 JSON 数组(含会议标题与起止时刻),不附加解释文字; - 开场白生成(
llm.py的generate_intro):把排好的微行程(时间、地点、距离)写成 80 字内的行程寄语;
输入=城市 + 酒店名 + 各站"时刻 / 名称 / 距酒店 km"清单 → 输出=一段 80 字内中文开场白; - AI 对比裁决(
llm.py的judge_verdict):为每一站生成"选它 / 没选备选"的理由,只能引用后端给定的真实数字;
输入=选中站的"距酒店 km / 交通方式 / 耗时 / 停留分钟" + 1–2 个同窗口落选备选的同口径数字 → 输出="选它:…;没选《备选》:…"两段中文(temperature=0、max_tokens=200,保证稳定且短)。 - 生成阶段对开场白与裁决关闭思考模式(
enable_thinking=false),避免 reasoning 占用几十秒;对强制思考、无法关闭的模型自动跳过、换下一个候选。
- 会议解析(
- Skill 名称(如有):未在百炼控制台单独登记 Skill;通过 DashScope OpenAI 兼容接口直接调用。
- 其他工具 / 技术栈:Python 3(标准库为主)|Gradio 6.30(网页版 Demo,暖米白 Editorial 风格)|
@fly-ai/flyai-cli(npm,飞猪 POI / 酒店数据)|自实现 haversine 距离与四档交通耗时模型|标准库unittest编写、pytest运行的单测(42 例,全程不触网)|Mermaid(README 工作流图)。 - 容错与验证:无 Key 时会议解析回退默认会议、文案与裁决走本地模板,流水线仍可完整跑通;配好 Key 后走真实调用。仓库附
bailian_smoke.py,一条命令验证 Key 与模型链是否调通,并打印实际生效的模型名。
flyai 使用说明
- 使用的 flyai 能力:
search-poi(多品类 + keyword 兜底)、search-hotel - 调用方式:
@fly-ai/flyai-cli(npm 全局安装),flyai_client.py薄封装 - 数据说明:POI 名称/地址/经纬度/免费状态/预订链接、酒店名称/地址/经纬度/价格(正式 Key 下价格不脱敏)
效果展示
- 演示视频(66 秒:一句话输入 → 五步生成 → AI 裁决 → 一键换站 → 飞猪预订页):
https://github.com/user-attachments/assets/7eb5f71f-f140-4a86-9104-cefa148e36da
- 运行截图:



- 示例输入(即网页版默认值):城市 = 杭州;酒店 = 锦江之星(杭州西湖店);会议描述 = "明天下午2点到4点开会,晚上7点半客户晚宴";偏好 = 人文古迹 / 美食 / 夜景。
项目链接与复现方式
- 代码仓库:https://github.com/Geohzy/bleisure-planner
- 在线 Demo:本地启动 Gradio 网页版(无公网部署);命令行版可直接生成 Markdown 行程卡
git clone https://github.com/Geohzy/bleisure-planner && cd bleisure-planner
npm i -g @fly-ai/flyai-cli
pip install gradio # 网页版需要;命令行版可跳过
export FLYAI_API_KEY=你的飞猪Key
export DASHSCOPE_API_KEY=你的百炼Key # sk- 开头
python3 bailian_smoke.py # 先验证百炼链路(可选)
python3 app.py # 网页版:打开打印出的本地链接
python3 demo.py # 命令行版:生成 demo_output.md 行程卡
-
无 Key 也可跑通:POI 抓取失败或百炼不可用时走本地模板兜底,主流程不中断,便于先看效果再配 Key。
-
演示视频:https://github.com/Geohzy/bleisure-planner/releases/tag/travel-planner/bleisure_Demo.mp4 (见release附件)
踩坑记录(可选)
- flyai CLI 的 JSON 写在 stderr 里:响应不进 stdout,且夹带 ANSI 色码,直接解析 stdout 会
JSONDecodeError。解法:同时读取 stdout + stderr,正则去掉\x1b\[…m,再截取最外层{…}解析。 - flyai 有并发限流:9 路查询串行要 30–60 秒(每次都是 npx 冷启动);一上来开到 6 并发又触发
Rate limit exceeded,9 路丢 5 路、POI 从 56 条掉到 20 条。解法:限并发 3 + 失败按错误类型退避重试(限流 2.5s),稳定在 9–10 秒拿全 56 条,并加 5 分钟内存缓存。 - 思考型模型"空回复"与超长延迟:
reasoning会吃掉 340–500 tokens、单次 20–50 秒,max_tokens小时甚至只返回推理、content为空。解法:文案与裁决请求关闭思考模式(同一个 prompt 从 20–50 秒降到 1–2 秒),对强制思考的模型识别 400 后自动跳过;空内容模型自动回退下一个。 - 大模型的数字幻觉:让模型自己算距离/耗时,结果会与真实路线对不上。解法:距离、耗时、时刻全部由
planner.py/transport.py算好写进 prompt,模型只做解释;单测校验裁决中的数字与计算结果自洽。 - Gradio 两个前端坑:空
label会被前端回退成组件默认名(如 "Textbox"),需"非空 label +show_label=False+ 样式隐藏";带圆角的输入框配overflow会把首字裁掉,需把内层border-radius显式归零。 - 页面宽度被长内容撑开:长地址、长 URL 会把卡片顶宽,导致点击后布局跳动。解法:弹性容器统一
min-width:0,长文本overflow-wrap:anywhere,页面级overflow-x:hidden。
**奖品说明:**每个团队最多发放 1 份奖品。同一团队即使提交多个参赛作品,也只登记 1 位奖品领取人;其他团队成员可以共同署名,但不重复发放奖品。
- Ngôn ngữ chính
- HTML
- Star
- 11
- Fork
- 3
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelstudioai/modelstudioai.github.io
-
2026飞猪AI旅行创新大赛 showcase
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
-
【2026飞猪AI旅行创新大赛】别白跑 · AI 旅行攻略体检官Đang mở2026飞猪AI旅行创新大赛 showcase
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 1/100
-
2026飞猪AI旅行创新大赛 showcase
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 10/100
-
2026飞猪AI旅行创新大赛 showcase
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 1/100
Tất cả issue của modelstudioai/modelstudioai.github.io
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
melgarafael/DeskcommCRM#3421 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug doc-audit
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area/config comp/agent P2 type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
NousResearch/hermes-agent#144306 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày