proginn20522210312026年10月05日
4阅读

技术信息

语言技术
Python、HTML5、JavaScript、MySQL
系统类型
Web
行业分类
人工智能、生活旅游

作品详情

行业场景

传统文旅行业存在三大痛点:一是游客获取攻略依赖搜索引擎和零散UGC内容,信息碎片化且缺乏个性化,需要在多个平台交叉对比;二是多源实时数据(天气、路况、门票、预算、网红打卡点)分散在不同服务商,用户自行整合决策成本高;三是中小城市和非遗民俗文化缺乏数字化传播手段,年轻用户对本地文化认知停留在表面。

「城知」是一个基于大模型ReAct架构的AI文旅Agent,旨在通过LLM自主调度多源工具,为用户自动生成个性化旅游攻略。项目采用FastAPI构建后端,通过OpenAI兼容接口对接DeepSeek大模型,实现Function Calling工具调度;内置天气、路况、景点信息、预算计算、联网搜索、本地知识库共6个工具,LLM根据用户问题自主决定调用顺序。系统采用Planner任务拆解→Executor执行循环→Reflector反思校验的三段式Agent链路,并支持多城市并行协作——当用户提到多个目的地时,多个城市Agent并行收集信息后由总控官整合行程。知识库覆盖川渝9个城市的民俗、景点、美食、交通结构化内容,内置川江号子、川剧变脸、铜梁龙舞、荣昌折扇等非遗民俗;通过关键词路由识别全国60余个旅游城市,无本地知识的城市自动切换联网搜索。项目已完成全链路开发与三轮自动化测试,可直接在线演示。项目已报名参加 2026 年第二届重庆市 AI 大模型应用创新大赛 AI 创意组,目前正在评审中。

功能介绍

「城知」是基于大模型ReAct架构的AI文旅助手,用户用自然语言描述需求(如"重庆3天2晚预算2000喜欢美食"),系统自动调度多源工具生成个性化攻略。

1. 多工具自主调度:LLM通过Function Calling自主决定调用天气、路况、景点信息、预算计算、联网搜索、本地知识库共6个工具,串联获取实时信息后输出完整攻略。

2. 三段式Agent链路:Planner拆解任务→Executor以ReAct循环执行工具调用(最多8轮)→Reflector自动检查时间冲突、天气矛盾、地名张冠李戴等硬错误并修正。支持对话流式输出。

3. 多城市并行协作:通过句式NLP区分出发地与目的地,行程涉及多个城市时最多同时调动3个城市Agent并行收集信息,按出现顺序编排,最后由总控官整合。

4. 城市IP人格化:川渝11个城市配置专属IP角色(重庆"渝渝"、成都"蓉蓉"等),关键词自动识别并路由;全国60余城关键词识别,无本地知识时自动fallback联网搜索。

5. 非遗文化展示:前端非遗文化墙展示川江号子、川剧变脸、铜梁龙舞、荣昌折扇等项目,含图文详情、互动舞台和"问AI"功能。

6. 团建与预算:团建表单收集城市/人数/预算/偏好后由AI生成行程建议;独立预算工具按城市消费档拆分餐饮、住宿、门票、交通明细。

技术栈:Python+FastAPI+DeepSeek大模型(OpenAI兼容接口)+ChromaDB向量库+SQLite+原生HTML/JS前端,集成和风天气、高德地图、博查搜索。SQLite持久化会话并自动裁剪上下文,工具调用带10秒超时保护和异常降级。

项目实现

本人独立完成该项目的全栈开发,由豆包主导编码与测试,Trae、Crow5辅助,同时自主完成架构设计、Prompt工程和工具编排。

技术栈:后端Python + FastAPI,通过OpenAI兼容接口对接DeepSeek大模型;前端原生HTML/CSS/JavaScript单页应用;SQLite存储会话历史;ChromaDB用于知识库向量构建;集成和风天气、高德地图、博查搜索三个外部API。

架构实现:采用Planner-Executor-Reflector三段式Agent链路。Planner通过LLM输出JSON拆解任务;Executor以ReAct循环自主调用6个工具(天气、路况、知识库、联网搜索、景点、预算),最多8轮直至信息充分;Reflector自动检查攻略中的时间冲突、天气矛盾、地名张冠李戴等硬错误并输出修正版本。同时实现Collaborator多城市并行协作,用户提到多个目的地时最多同时调动3个城市Agent并行收集信息后由总控官整合。

测试情况:编写了41条回归测试用例(34条城市识别确定性测试+7条端到端Agent测试),经过基线、Planner优化、最终版三轮迭代评估,最终41条用例100%通过;端到端测试真实调用大模型和外部API验证输出质量。

实现难点:1)通过句式NLP区分出发地与目的地("我在重庆"vs"去成都"),避免城市IP误切换;2)工具调用统一10秒硬超时和异常降级,单个外部API失败不影响整体回复;3)SQLite会话历史自动裁剪最近30条,兼顾长程记忆与token控制;4)LLM调用封装指数退避重试应对限流,流式输出通过SSE推送到前端。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论