Skip to content

Repository files navigation

Tour Pass

Tour Pass 当前是一个可独立部署的旅行规划 Web 平台。用户可以通过结构化表单或自然语言提交需求,系统使用 LLM 编排行程,并调用高德地图和天气服务核验地点、路线与天气,最终保存、展示和分享结构化行程。

当前功能

  • 结构化需求表单:城市、天数、日期、住宿区域、同行人、节奏、交通、预算、每日时段、必去地点、兴趣和补充要求。
  • 自由描述与后续修改:可恢复历史消息和上一版完整行程,在同一会话中重新规划。
  • 真实地点证据:高德 POI 搜索、地点详情、规范名称、地址、坐标和营业时间。
  • 真实路线证据:步行、公交和驾车路线;仅在坐标及证据匹配时采用路线距离和时长。
  • 天气证据:优先和风天气,高德天气兜底。
  • 有界规划循环:默认最多 16 个模型决策步骤、20 个底层工具查询;支持一次并行执行 2~5 个独立工具查询。
  • 实时进度:通过 SSE 展示模型阶段、工具调用、缓存、耗时、结构处理和保存状态。
  • 结果页:逐日时间轴、住宿锚点、区域组合、交通段、地图点位、风险提示、候选区域比较和完整度报告。
  • 自动保存与版本:保存会话、消息、每次成功生成的完整版本和运行事件。
  • 匿名体验:首次访问无需注册,默认每天 5 次规划额度。
  • 基础账号:注册、登录、退出、Argon2id 密码哈希和跨设备行程恢复;默认每天 20 次额度。
  • 所有权隔离:访客和账号只能访问自己的私有行程。
  • 分享与发现:访客生成不公开收录的私密链接;登录账号可把固定快照发布到发现页。
  • PDF 导出:使用浏览器原生打印能力和专用打印样式。
  • 持久化:本地默认 SQLite,生产环境通过 DATABASE_URL 使用 PostgreSQL。
  • 运行观测:脱敏 JSONL 日志、请求 ID、模型和工具耗时、缓存命中及错误阶段。
  • 部署:FastAPI 单容器和 Render PostgreSQL Blueprint。

一次完整行程生成链路

浏览器初始化身份和额度
  -> 用户填写结构化表单或自由描述
  -> POST /chat/stream
  -> 校验会话、CSRF、所有权和每日额度
  -> 创建 session_id / run_id
  -> 读取当前会话历史和上一版行程
  -> LLM 选择下一批事实查询
  -> Provider Cache
  -> 高德地点 / 地点详情 / 路线,和风或高德天气
  -> 汇总已核验地点、路线和天气证据
  -> LLM 基于证据输出完整结构化行程
  -> 后端规范化地点、路线、地图和风险来源
  -> 生成完整度报告
  -> 保存消息、行程版本和运行轨迹
  -> SSE 返回最终结果
  -> 前端渲染时间轴、交通、地图、风险和完整度

模型每轮只能返回 toolbatchaskplan。地点证据达到目标后,工具范围收缩为路线查询,避免继续无界扩展候选地点。工具响应按请求参数缓存;重复成功查询会被拒绝且不重复计入预算。

当前校验边界

本轮不实现硬校验器。当前后端会执行证据规范化和完整度检查,但完整度结果只用于透明展示,不阻止交付。

已经确定性执行的内容:

  • 未经工具核验的地点不能伪装成高德实体。
  • 路线坐标或证据哈希不匹配时,不采用模型给出的精确距离和时长。
  • 地图点位根据规范化后的行程重新生成。
  • 缺少营业时间证据时,开放状态降级为 unknown

当前仍由模型判断、尚未成为硬门禁的内容:

  • 必去地点是否全部覆盖。
  • 到访时间是否真正落在营业时间内。
  • 时间轴是否存在冲突。
  • 每天是否有完整的酒店出发与返回路线。
  • 步行强度和节奏是否严格满足用户约束。

因此,当前定位是“有真实地点、路线和天气证据的 LLM 行程规划平台”,不是“确定性 Solver + Hard Validator”的 Grounded Planner。

主要接口

方法 路径 作用
GET /health 服务、Provider、缓存和数据库状态
GET /api/auth/session 获取或创建浏览器身份
POST /api/auth/register 注册账号
POST /api/auth/login 登录
POST /api/auth/logout 退出登录
GET /api/sessions 当前身份的已保存行程
GET /api/sessions/{session_id} 行程消息和最新版本
POST /api/sessions/{session_id}/publish 分享或公开行程
DELETE /api/sessions/{session_id}/publish 取消分享
GET /api/public/itineraries 查询公开行程
GET /api/public/itineraries/{slug} 读取公开快照
POST /chat 非流式规划接口
POST /chat/stream SSE 流式规划主入口

本地运行

python -m pip install -r trip_agent/requirements.txt
python -m trip_agent.app

复制 trip_agent/.env.example.env,至少配置 LLM Key;启用真实地点和天气能力时再配置高德与和风天气 Key。运行状态数据库、Provider 缓存、日志和 .env 均已加入 Git 忽略规则。

About

Tour Pass 是一个 AI 行程规划系统。项目可以帮助用户可保存的旅行方案。项目支持 AI 对话规划、结构化表单规划、热门行程推荐、行程保存与分享等功能。

Resources

Stars

32 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages