N S W E
Open Source · LangGraph Agent · Node.js

旅途 Travel Agent AI-Powered Travel Planning

基于 LangGraph Agent 架构的 AI 旅行规划助手,8 个专业工具协同工作,从行程规划到打包清单,一站式搞定旅行全流程。

8专业工具
12+覆盖城市
2接入模型
0TypeScript

Core Features

八大核心功能

Agent 根据用户问题自动决策调用哪些工具、调用几次,复杂规划任务会串联多个工具一次性给出完整答案。

逐日行程规划

根据目的地、天数、旅行风格(慢节奏/深度/美食等)和预算档次,生成完整分日行程,含具体时间安排、景点顺序、午晚餐餐厅推荐、住宿区域选择、每天交通贴士和费用估算,由 DeepSeek 实时生成。

generate_itinerary
目的地天气查询

支持对接 OpenWeatherMap 真实 API,同时内置主流城市模拟气象数据作为兜底。返回当前气温、湿度、风速、未来 7 天预报,并自动输出穿着建议与是否携带雨具等旅行贴士。

get_weather
景点与目的地信息

内置东京、巴黎、曼谷、巴厘岛等热门城市完整数据(景点门票、游览时长、避坑贴士、美食、住宿区域、交通方式)。未覆盖城市由 DeepSeek 实时生成,支持按兴趣关键词过滤排序。

get_attractions
旅行预算估算

按住宿、餐饮、本地交通、景点门票、购物五个维度分项计算。支持经济 / 中等 / 豪华三档预算,内置 20+ 主流城市基准日费,自动换算为人民币,并附 10% 应急备用金和省钱建议。

calculate_budget
签证要求查询

内置 12+ 热门目的地中国护照签证信息,覆盖免签、落地签、电子签、申根签等类型,列出所需材料清单、办理时间线、官方渠道链接及重要注意事项,标注"以官方实时政策为准"。

check_visa
货币换算与消费参考

内置 20+ 货币汇率,可通过目的地名自动推断目标货币,提供 100/500/1000/5000 元常用换算参考表。附当地消费习惯贴士,如日本无小费、泰国集市可砍价 20-30% 等实用信息。

convert_currency
个性化打包清单

根据目的地、天数、季节、旅行类型(度假/商务/背包)和活动(潜水/登山/滑雪)生成分类清单,覆盖证件、电子设备、衣物、洗漱、医药、旅行便利品六大类,自动推荐行李箱尺寸。

generate_packing_list
旅行短语翻译

内置日语、泰语、韩语、法语等语言高频旅行短语,附罗马音/拼音发音指导。复杂表达调用 DeepSeek 翻译并推荐同场景相关用语,覆盖点餐、问路、购物砍价、紧急求助等场景。

translate_phrase

AI Models

接入的大模型

「主力模型做规划生成,轻量模型做结构化辅助」双模型策略,在效果与成本之间取得最优平衡。

主力模型 · Primary
DeepSeek

承担 Agent 主循环全部推理:理解用户旅行需求、决策调用哪些工具及顺序、整合多工具结果,最终生成结构清晰、语气友好的中文规划内容。行程生成任务由它独立完成,直接输出完整 JSON 逐日计划。

主要场景
Agent 决策、行程生成、综合回复
调用方式
bindTools() + streamEvents
Temperature
0.7(规划生成)
配置变量
CHAT_MODEL
提供方
DeepSeek API
辅助模型 · Mini
DeepSeek

专门处理轻量化结构化任务:数据库未覆盖城市的景点信息实时生成、旅行短语的多语言翻译与发音指导、未知目的地的基础信息补全。温度为 0 时输出确定性 JSON,速度快、成本低。

主要场景
景点生成、翻译、信息补全
输出格式
JSON(严格结构)
Temperature
0 / 0.7(按任务)
配置变量
MINI_MODEL
提供方
DeepSeek API
可替换 · Compatible
自定义模型

系统通过 LangChain.js 的 ChatOpenAI 接口调用,任何兼容 DeepSeek API 格式的模型均可直接替换,只需修改 .env 中的两个变量即可切换,无需改动代码逻辑。

Claude
Anthropic API
DeepSeek
deepseek-chat
通义千问
Qwen API
本地模型
Ollama(llama3 等)
替换方式
修改 .env 即可
How It Works

Agent 工作流程

基于 LangGraph StateGraph 构建的 ReAct 模式 Agent,自主决策工具调用顺序,最多循环 15 步防止失控。

STEP · 01Memory
加载用户记忆上下文

系统从本地 JSON 文件读取该用户的偏好(预算等级、旅行风格、兴趣爱好、饮食限制)、愿望清单、历史去过的地方,拼接进系统提示词。Agent 从一开始就了解这位旅行者,无需用户重复自我介绍。

TravelMemorydata/users/*.jsonSystemMessage
STEP · 02Agent Node
DeepSeek 分析意图,选择工具

Agent 主节点读取完整对话历史和系统提示,理解用户意图后从 8 个绑定工具中选择合适的工具调用。简单问题只调一次,复杂规划(如"东京5天行程")会串联 weather → attractions → itinerary 三个工具。

DeepSeek bindTools(ALL_TOOLS)LangGraph StateGraph
STEP · 03ToolNode
执行工具,返回结构化结果

LangGraph 内置 ToolNode 接收工具调用请求,执行对应工具函数,将结果以 ToolMessage 格式追加到消息列表,控制权自动返回 Agent 节点判断是否继续调用其他工具。

get_weatherget_attractionsgenerate_itinerarycalculate_budgetcheck_visa+3 more
STEP · 04Generate
整合结果,流式输出最终回复

所有工具结果收集完毕后,DeepSeek 将结构化数据转化为流畅的中文旅行规划内容,主动补充避坑建议和延伸推荐。通过 SSE 流式推送至客户端,用户看到第一个字的延迟通常在 1 秒以内。

streamEventsSSEtoken 级推送
STEP · 05Persist
持久化记忆,下次更懂你

用户偏好、愿望清单、历史旅行记录保存在 data/users/ 下的 JSON 文件,下次对话自动加载。通过 API 还可手动保存生成的行程计划,最多保留 20 条历史行程供随时查阅。

JSON 文件持久化跨会话记忆行程保存 API

API Reference

REST API 接口一览

提供同步和 SSE 流式两种聊天模式,用户管理接口支持偏好、愿望清单、行程历史的完整 CRUD。

Method
Path
说明
GET
/health
服务健康检查,返回状态和当前模型
GET
/api/tools
列出所有已注册工具的名称和描述
POST
/api/chat
同步聊天,传入 messages 数组,返回完整回复文本
POST
/api/chat/stream
SSE 流式聊天,实时推送 token / tool 状态 / done 事件
GET
/api/users/:id/profile
获取用户完整档案(偏好、愿望清单、历史旅行)
PATCH
/api/users/:id/preferences
更新旅行偏好(预算等级、风格、兴趣、饮食限制等)
POST
/api/users/:id/wishlist
添加目的地到愿望清单
GET
/api/users/:id/wishlist
获取用户愿望清单列表
POST
/api/users/:id/trips
保存生成的行程计划(最多保留 20 条)
GET
/api/users/:id/trips
获取历史保存的行程列表
POST
/api/users/:id/history
添加已去过的目的地到旅行历史

Tech Stack

技术栈

纯 JavaScript ESM,无需 TypeScript 编译步骤,npm install 后即可直接运行。

Runtime
Node.js 20
ESM · --watch 热重载
AI Framework
LangGraph
StateGraph · ToolNode
LLM Abstraction
LangChain.js
ChatOpenAI · LCEL
AI Models
DeepSeek
+ DeepSeek
Web Server
Express.js
REST + SSE streaming
Memory
JSON 文件
本地跨会话持久化
Validation
Zod
工具参数 Schema
Weather API
OpenWeatherMap
可选,内置模拟兜底
Interface
内嵌 Web UI
访问 / 直接使用
CLI
彩色终端
npm run cli
License
MIT
Open Source