Skip to content

Wwh-SoEximious/LvBanGPT

 
 

Repository files navigation

image-20240131182121394

项目介绍

亲爱的旅游爱好者们,欢迎来到LvBan恣行-AI旅游助手 ,您的专属旅行伙伴!我们致力于为您提供个性化的旅行规划、陪伴和分享服务,让您的旅程充满乐趣并留下难忘回忆。

“LvBan恣行”基于星火大模型的文生文、图生文以及文生语音等技术,旨在为您量身定制一份满意的旅行计划。无论您期望体验何种旅行目的地、天数、行程风格(如紧凑、适中或休闲)、预算以及随行人数,我们的助手都能为您精心规划行程并生成详尽的旅行计划表,包括每天的行程安排、交通方式以及需要注意的事项等。

此外,我们还采用RAG技术,专为提供实用全方位信息而设计,包括景点推荐、活动安排、餐饮、住宿、购物、行程推荐以及实用小贴士等。目前,我们的知识库已涵盖全国各地区、城市的旅游攻略信息,为您提供丰富多样的旅行建议。

您还可以随时拍摄旅途中的照片,并通过我们的应用上传。应用将自动为您生成适应不同社交媒体平台(如朋友圈、小红书、抖音、微博)的文案风格,让您轻松分享旅途中的点滴,与朋友们共同感受旅游的乐趣。

立即加入“LvBan恣行”,让我们为您的旅行保驾护航,共同打造一段难忘的旅程!

功能模块

  • 旅游规划助手
  • 旅游问答助手
  • 旅行文案助手

技术亮点

  • 充分使用星火大模型API矩阵能力,包含星火大模型、图片理解、超拟人语音合成、embedding等
  • 旅游规划、文案生成Prompt高效设计,ReAct提示框架设计
  • RAG创新:根据用户query,动态加载,读取文本;BM25检索向量检索的混合检索; 重排模型高效使用
  • 多模态生成:图生文TTS数字人视频合成
  • 旅游问答Agent实现:查询天气附近搜索联网搜索
  • tts和数字人视频全部可预览查看、下载,提高体验

项目整体功能逻辑流程图

image-20240131182121394

项目演示

  • 旅游规划助手

Demo gif

  • 旅游问答助手

Demo gif

  • 旅游文案助手

Demo gif

开源不易,如果本项目帮到大家,可以右上角帮我点个 star~ ⭐⭐ , 您的 star ⭐是我们最大的鼓励,谢谢各位!

🎉 NEWS

  • [2024.08.10] 完成PAI-DSW部署演示,以及操作文档撰写
  • [2024.08.10] 发布LvBan v1.5modelscope
  • [2024.08.03] 进一步在旅行规划助手增加用户偏好设置(预算,随行人数)、特殊要求,帮助游客:餐饮安排住宿安排费用估算
  • [2024.07.31] 项目三个模块名称,分别改为旅游规划助手旅游问答助手旅游文案助手
  • [2024.07.28] 改进的用户界面和用户体验(UI/UX)
  • [2024.07.25] 重磅发布联网搜索、附近搜索Agent
  • [2024.07.22] 增加天气查询功能
  • [2024.07.21] 发布LvBan v1.0modelscope
  • [2024.07.20] 重磅发布 数字人 1.0 🦸🦸🦸
  • [2024.07.19] RAG优化,增加混合检索技术(BM25检索向量检索)、精排模型
  • [2024.07.18] 接入 RAG 检索增强,根据用户query,检索相应的pdf文本内容,高效准确地回答用户的旅游攻略问题
  • [2024.07.16] 在文案生成模块,增加文本转语音TTS功能
  • [2024.07.15] 旅游攻略数据收集、清洗
  • [2024.07.14] 发布旅游智能文案生成应用,支持四种风格选择(朋友圈小红书抖音微博),一键上传图片,生成对应风格文案
  • [2024.07.11] 发布旅游规划师应用,根据旅游出发地、目的地、旅游天数以及旅游风格,形成旅行计划表,包括每天的行程安排、交通方式以及需要注意的事项
  • [2024.07.01] 借助星火大模型,开发简单旅游问答DEMO应用

🗂️ 目录

快速使用

在线体验

目前已将 LvBan v1.5 版本部署到modelscope平台,地址: https://www.modelscope.cn/studios/NumberJys/LvBan

本地部署

git clone https://github.com/yaosenJ/LvBanGPT.git
cd LvBanGPT
conda create -n LvBanGPT python=3.10.0 -y
conda activate  LvBanGPT
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
pip install -r requirements.txt
gradio app.py

PAI-DSW部署

1. 登录ModelScope社区,选择ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.14.0魔搭GPU镜像,启动环境。地址: https://www.modelscope.cn/my/mynotebook/preset

2.克隆本项目仓库,环境依赖包安装

git clone https://github.com/yaosenJ/LvBanGPT.git
cd LvBanGPT
pip install -r requirements.txt

3.打开down_rerank_model.ipynb,下载重排模型

4.app.py代码修改

5.修改.env文件,添加自己相关的key

vim .env

SPARKAI_APP_ID=36f6
SPARKAI_API_SECRET=N2IzZDk0NjYzZDRjNmY3ZGUx
SPARKAI_API_KEY=a9b7b68d8bc752e79c4
x_api_key=c71505b1-9d4a-469a-b8d4-3
Weather_APP_KEY=417618eacc504fa4b7
amap_key=189a456127c050ee
api_key=sk-75ec0872c729491
dashscope_api_key=sk-064b2c7a65b
TAVILY_API_KEY=tvly-GH9Ma7CZyvmZK8Uq

6.运行app.py,即python3 app.py,成功界面如下即可

详细指南

数据、模型及工具选型

  • 数据集:全国各地区及景点旅游攻略pdf文本文件

  • 大语言模型:星火大模型(Spark3.5 Max)
  • 图片理解模型:星火图片理解模型
  • 语音合成模型:星火语音合成模型
  • 向量模型:星火文本向量模型

基于本地旅游攻略pdf文本文件的RAG系统

该项目的RAG系统,首先从用户的查询中提取关键信息(如城市名称、地点名称等),并通过这些信息检索匹配的pdf文件,提取相关内容并计算其嵌入向量。然后利用BM25检索和向量检索技术,筛选出与用户查询相似度较高的文本块。在此基础上,利用重排序模型对这些文本块进行进一步排序,最终选择最相关的内容提供给星火大模型。星火大模型根据这些上下文信息,生成对用户问题的准确回答。其详细技术实现流程:

1. 文本处理与文档匹配

  • 城市提取(extract_cities_from_text):使用jieba进行中文分词,提取query文本中提及的地名(城市名称)。
  • PDF文件匹配(find_pdfs_with_city):根据提取的城市名称,在指定目录下寻找包含这些城市名称的pdf文件。

2. 嵌入生成与文档处理

  • PDF内容提取与分割(embedding_make):
      1. 根据用户输入的文本,调用get_embedding_pdf函数提取相关的PDF文件。
      1. 从提取的pdf文件中读取文本内容,并对内容进行清理和分割,使用RecursiveCharacterTextSplitter将文本按(chunk_size=1000, chunk_overlap=300)进行切分,以便后续处理。
      1. 使用BM25Retriever对切分后的文本块进行初步检索,获得与用户问题最相关前20个文档片段。

3. 嵌入计算与相似度匹配

  • 嵌入计算:
      1. 通过加载的EmbeddingModel(星火文本向量模型),为用户的查询问题和检索到的文档片段生成嵌入向量。
      1. 使用余弦相似度(cosine_similarity)计算查询问题与文档片段之间的相似度。
      1. 根据相似度选择最相关的前10个文档片段。

4. 文档重排序与生成回答

  • 重排序(rerank):加载预训练的重排序模型(BAAI/bge-reranker-large),对初步选出的文档片段进行进一步排序,选择出最相关的3个片段。
  • 生成回答:
      1. 将重排序后的文档片段整合,并形成模型输入(通过指定的格式,将上下文和问题整合)。
      1. 调用ChatModel(星火大语言模型)生成最终回答,并返回给用户。

多模态生成:图生文,TTS和数字人视频合成

通过将文本数据处理成音频数据后同视频一起输入,先使用脚本处理视频,该脚本首先会预先进行必要的预处理,例如人脸检测、人脸解析和 VAE 编码等。对音频和图片通过唇同步模型处理,生成对应唇形的照片,匹配所有的音频,最终将音频与生成的图片合成为视频输出。

旅游问答智能体(Agent)实现

  • 查询天气Agent: 利用星火大模型(Spark3.5 Max)和 和风天气API实现联网搜索Agent。
  • 附近搜索Agent: 利用星火大模型(Spark3.5 Max)和高德地图API实现附近搜索Agent。该Agent系统可以根据用户输入的文本请求,星火大模型自动判断是否需要调用高德地图API。若提问关于附近地址查询问题,则调用地图服务来获取地点信息和附近POI,目的帮助用户查询特定地点的周边设施、提供地址信息等,反之,其他问题,不调用高德地图API。
  • 联网搜索Agent:利用星火大模型(Spark3.5 Max)和 Travily 搜索引擎API实现联网搜索Agent。

案例展示

Demo Demo Demo Demo Demo Demo

人员贡献

yaosenJ: 项目发起人,负责前后端开发

shiqiyio: 数字人、演示录制视频

XiaoyangBi: 产品功能规划,计划书撰写

qzd-1: 负责RAG模块

Wwh-SoEximious: 负责代码编写(天气查询功能),产品规划

Dovislu: 数据收集处理,测试

致谢

感谢科大讯飞股份有限公司、共青团安徽省委员会、安徽省教育厅、安徽省科学技术厅和安徽省学生联合会联合举办的“2024「星火杯」大模型应用创新赛”!

感谢科大讯飞提供星火大模型API矩阵能力,包含星火大模型、星火语音识别大模型、图片理解、图片生成、超拟人语音合成、embedding等

感谢Datawhale及其教研团队在项目早期提供的基础教程

感谢Datawhale Amy大佬及其学习交流群的小伙伴们的支持和意见反馈!

感谢A100换你AD钙奶成员们的技术支持和反馈帮助!

感谢上海人工智能实验室,书生浦语大模型实战营的算力和计算平台支持!

参考资料

星火大模型 python sdk库全面使用说明  

星火大模型 python sdk库简易使用说明

gradio前端展示案例

基于Assistant API的旅游助手的demo

About

旅游助手

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.4%
  • Jupyter Notebook 4.6%