基于Springboot+LangChain4J+Agent+RAG+Function Calling的AI Agent旅游行程智能规划平台

SpringbootLangChain4JAgentRAGFunction Calling地狱锤炼

项目简介:基于 SpringBoot + LangChain4j、攻略知识库 RAG、MySQL 向量检索、Function Calling 与数据库驱动工具中心,实现候选池预热与工具收窄、多城联游行程编排、14 条代码硬校验驱动的反思重排、教训记忆与多版本对比、三道闸防空转、编排前探活、预算测算和 Agent 执行时间线,覆盖从需求识别到行程交付的完整闭环。

资料包含

完整源码 + SQL 脚本
喂饭学习教程
配套面试文档
环境安装文档
项目运行文档

项目详情

一、项目技术栈

前后端分离

后端:SpringBoot + LangChain4j + MyBatis + PageHelper + Hutool + Java JWT + PDFBox + POI(Java 21 / Maven)
前端:Vue3 + Vite + Element-Plus + Vue-Router + Axios + ECharts(Agent 执行进度与时间线、多版本行程并排对比、路线图自绘)
AI 技术:攻略知识库 RAG(文档解析 + 文本切分 + Embedding 向量检索)+ 数据库驱动工具中心(工具注册 + 真启用开关 + 调用日志)+ 带记忆的反思 Agent(外层反思循环由业务代码控制、内层单轮是框架托管的工具调用循环)+ 候选池预热与大规模资源下的工具收窄 + 多城联游 + AI 调用观测
数据库:MySQL 8(25 张表)

版本要求:JDK 21、MySQL 8、Node.js 18+、Maven 3.8+。模型调用走 OpenAI 兼容接口,需要对话与向量两类模型:三条模型配置分别对应行程编排、偏好抽取与向量模型,API Key 在管理端页面上填入后立即生效,不需要重启后端。

二、项目功能描述

1. 管理员

  • 用户管理与账号维护。
  • 旅行资源底座:目的地城市(80 个)、旅游点位库(1828 条)、酒店(850 家)、交通班次时刻表(4240 条)的增删改查与启停。
  • 行程规则管理(休闲游 / 标准游 / 暴走游三套约束模板,标准游为默认)与系统参数配置(Agent 三道闸、编排反思轮数、候选池规模、向量维度)。
  • AI 模型配置(三条,覆盖对话与向量两类,支持连通性测试)与 Prompt 模板管理(三套,覆盖编排、反思、需求抽取)。
  • 攻略知识库:文档上传与解析、文本切分与知识片段查看、向量化与语义检索。
  • 工具中心:八个工具的注册、真实启用开关与调用日志查询,调用日志可按运行编号反查一次编排里的每一次工具调用。
  • AI 调用观测与运营统计看板:调用场景分布、每日趋势、反思轮次分布、运行状态分布、校验命中排行、工具调用排行、最近运行记录与调用明细下钻。

2. 普通用户

  • 维护偏好画像:预算档位、出行节奏、兴趣标签、体力与同行人构成。
  • 必玩清单:把点位标记为「必去」或「想去」,必去点位在编排时无条件进候选池,漏排判为严重问题。
  • 新建行程单:逐项填写出发城市、目的地、日期、天数、人数与预算,或者写一句话由 AI 识别出这些字段填进表单。
  • 发起规划后进入行程工作台,一张行程单的内容分四个页签查看:
    • 执行过程:规划进度、步骤时间线与候选池收窄结果;
    • 行程单:每日时间轴、跨城与当日路线图(ECharts 自绘)、Markdown 导出;
    • 版本与问题:最多三版行程并排对比,每一版被判出的问题与带到下一版的教训;
    • 预算测算:五类花费、预算偏差、按天花费与最贵三项。

三、项目创新点

  1. 带记忆的反思重排:外层反思循环由业务代码控制,轮次上限取自 sys_configTRIP_MAX_REFLECT_ROUND(默认 3);内层单轮才是框架托管的工具调用循环,一次调用内部几十轮「模型决定调工具 → 执行 → 结果回传」交由 LangChain4j 托管。每一版排完立刻跑 14 条硬校验,没过就把问题转成教训落 agent_reflection,下一轮把教训拼进 Prompt 末尾并强调「没有被点名的部分尽量保持不变」——带着教训改,不是推翻重排。
  2. 14 条硬校验全部由代码判定,是反思循环的判据来源:预算、必玩清单、开放星期、闭园季、开放时段、最晚入场、时段重叠、单日车程、交通缺失、跨城衔接、城市天数、住宿缺失、单日游玩时长、单日点位数量,每条命中生成一条 trip_check(含严重 / 一般两档);判据可复现、可展示,还能按 check_code 统计哪类问题最常命中。
  3. 大规模资源下的工具收窄四件事一起做:点位库 1828 条不可能一次喂给模型,所以候选池在 Agent 启动之前由业务代码预热——按预算档过滤门票上限、按兴趣标签交集与热度排序取前 60 条、必玩清单无条件进池、班次按出发时间分散取;列表工具只返回决策必需字段,要细节调详情工具;每个工具都有来自 function_tool.max_return_rows 的返回上限;返回结构统一带 total / returned / hasMore / limit,模型知道自己看到的是子集才会主动换条件。
  4. 三道闸与逐轮计数:框架托管的内层循环业务代码看不到它转了多少圈,所以轮数上限交给 AiServicesmaxToolCallingRoundTrips 去拦,轮数与 token 用量由挂在对话模型上的 AgentChatModelListener 逐轮累加;工具调用总次数与「同一工具相同参数连续调用」次数在每个工具方法开头计数。AGENT_MAX_ITERATION(40)/ AGENT_MAX_TOOL_CALL(200)/ AGENT_MAX_SAME_TOOL(30)任一超限就中断当轮,中断原因翻译成中文写进运行记录。
  5. 编排前先探活再动数据:重新规划会把上一版的日程、明细、冲突清单与教训删掉重排,所以删除之前先向模型发一次最小请求;余额不足、Key 过期、模型下线这类只有服务商知道的问题在删数据之前就被拦住,上一版原样保留,修改需求要回到行程规划重新生成。
  6. 多城联游:一次行程最多 3 个目的地城市,每个城市至少分到 1 个完整天,城市序列不允许重复折返。跨城当天,目的地城市的点位必须排在城际交通到达 30 分钟之后,转场日上午仍可在出发城市游玩;两城之间没有直达班次时,工具返回 noDirect 标记与经由中转城市的建议,绝不凭空造一趟班次出来。
  7. 不接任何第三方地图 SDK:跨城路线用本地中国地图 GeoJSON 加 ECharts 打点连线,当日路线按经纬度投影绘制;两点距离由 Haversine 公式算直线距离,再乘城市库里维护的路网系数 road_factor 折算成实际路程与预计车程,跨城与同城用不同速度估算。
  8. 统一 AI 出口与全链路观测:同步对话、带工具对话、向量化三类模型调用全部收敛到 AiChatService,每次调用写 ai_usage_log(用途、Token、耗时、成败、错误翻译);Agent 的每一步再落 agent_run / agent_step / tool_call_log 三张过程表,配合统计看板可以一路查到「模型当时看到了什么」。运行失败的原因统一翻译成可操作的中文提示,例如未配置启用的用途模型、API Key 无效、模型名不存在、输入正文太长。
  9. AI 配置全部数据库化:模型连接参数与 Prompt 模板都存在库里,项目引的是普通依赖 langchain4j-open-ai 而不是 starter,它不参与自动配置、也不去配置文件找 Key,模型对象由 LangChain4jModelFactory 按库中配置构建并缓存模型对象,用配置内容拼缓存 key,改了 Key 下一次请求自动换新实例。

四、关键页面截图

课程内容图片

课程内容图片

课程内容图片

课程内容图片

课程内容图片

课程内容图片

课程内容图片

课程内容图片

课程内容图片

¥189¥399

🔥 限时优惠,已省 ¥210

不知道怎么学?点我

购买前请阅读须知

  • 源码和教程资料仅供学习,请勿用于商业用途
  • 购买前请观看完整功能演示视频和阅读项目详情
  • 源码和教程资料属于虚拟产品,下单后不支持退款
  • 我已阅读并同意平台 用户协议购买协议隐私政策
成长 VIP 更划算整单 8 折 性价比拉满 去看看
¥189¥399