旅行规划是一个组合优化问题,需要同时平衡多种约束与偏好:预算限制、航班可用性、天气状况、个人兴趣以及安全考量。传统的基于规则的旅行引擎提供僵化、模板化的推荐,无法适应细腻的用户意图。
现代大语言模型(LLM)提供了自然语言理解与生成式规划能力,但单一的整体式提示不足以支撑可靠的多领域旅行规划。这种方式存在幻觉、跨规划维度推理不一致以及缺乏可验证性等问题。
NaviGo 是一个基于 LangChain/LangGraph 构建的多智能体旅行规划系统,将旅行规划分解为多个专业化、协作式的 AI 智能体。每个智能体负责一个独立的领域(需求解析、表单补全、偏好提取、目的地选择、行程构建、预算分析、打包建议与安全审查)。主管式路由器协调智能体执行,而持久化状态图确保规划会话可断点续传。
| 原则 | 实现方式 |
|---|---|
| 领域分解 | 每个规划关注点隔离在专用智能体中,具备类型化的输入/输出 |
| 有状态编排 | 基于 PlannerState 的 StateGraph,通过 PostgreSQL 实现线程级断点续传 |
| 外部信息 grounding | 航班搜索(Duffel)与天气预报(Open-Meteo)通过类型化工具调用获取 |
| 双接口 | 同一编译后的图通过 HTTP(Fastify)与 CLI 提供服务,行为完全一致 |
| 双输入模式 | 支持结构化 UserRequest 或自然语言对话(含澄清式追问) |
| 安全内建 | 风险守卫智能体在每个规划阶段前后运行;提示注入与不安全输出检测采用规则 + LLM 双层扫描 |
| 层级 | 技术 |
|---|---|
| 运行时 | Node.js 18+ (ESM) |
| 语言 | TypeScript 5.6+,NodeNext 模块解析 |
| AI 框架 | LangChain / LangGraph |
| LLM 提供商 | OpenAI(默认 gpt-4o-mini) |
| 外部 API | Duffel(航班报价)、Open-Meteo(天气预报 + 地理编码) |
| 持久化 | PostgreSQL,通过 @langchain/langgraph-checkpoint-postgres |
| 可观测性 | LangSmith(可选,环境门控) |
| 服务器 | Fastify 5,含 @fastify/rate-limit 与 @fastify/static |
| 测试 | Vitest |
| 校验 | 所有边界使用 Zod schema |
用户请求(结构化 UserRequest)
|
v
[risk_guard] -- 扫描注入/不安全模式
|
v
[supervisor] -- 根据状态缺口决定下一步智能体
|
+----+----+----+----+----+
| | | | |
v v v v v
[preference] [destination] [itinerary] [budget] [packing]
| | | | |
+----+----+----+----+----+
|
v
[plan_synthesizer] -- 组装最终产物
|
v
最终计划
用户消息(自然语言)
|
v
[requirement_parser] -- 提取结构化字段
|
v
[form_completer] -- 检查完整性;如缺失则发起追问
|
+---> END(pendingQuestions)---+
| |
+---< 用户回复 <----------------+
|
v
[risk_guard]
|
v
[supervisor] + 下游智能体
|
v
[plan_synthesizer]
每个智能体输出 Partial<PlannerState> 更新,并追加到共享的 decisionLog,为每一步规划决策创建可审计的追踪。
navi-gosrc/index.ts(默认 API 模式;--cli 为 CLI 模式).ts 文件使用 .js 导入符以兼容 ESM)