MCPcopy
hub / github.com/PeterH0323/Streamer-Sales

github.com/PeterH0323/Streamer-Sales @v0.10.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.10.0 ↗
1,030 symbols 2,999 edges 148 files 221 documented · 21%
README

Streamer-Sales 销冠 —— 卖货主播大模型

Logo

Streamer-Sales

<a href="https://openxlab.org.cn/apps/detail/HinGwenWong/Streamer-Sales">查看Demo</a>
·
<a href="https://github.com/PeterH0323/Streamer-Sales/issues">报告Bug & 提出新特性</a>

📢 介绍

Streamer-Sales 销冠 —— 卖货主播大模型 是一个能够根据给定的商品特点从激发用户购买意愿角度出发进行商品解说的卖货主播大模型。以其独特的智能魅力,将彻底改变您的购物体验。该模型能深度理解商品特点,以生动、精准的语言为商品量身打造解说词,让每一件商品都焕发出诱人的光彩。无论是细节之处,还是整体效果,都能通过其细腻、独到的解说,激发用户的购买欲望。

模型用 xtunerInternLM2 的基础上指令微调而来,部署集成了 LMDeploy 加速推理🚀,支持 ASR 语音生成文字 🎙️,支持 RAG 检索增强生成📚 做到可以随时更新说明书指导主播生成文案,支持 Agent 通过网络查询快递信息 🌐,还加入带有感情的 TTS 文字转语音🔊 生成,最后还会生成主播数字人视频🦸,让主播不止于文字介绍。

功能点总结:

  1. 📜 主播文案一键生成
  2. 🚀 KV cache + Turbomind 推理加速
  3. 📚 RAG 检索增强生成
  4. 🔊 TTS 文字转语音
  5. 🦸 数字人生成
  6. 🌐 Agent 网络查询
  7. 🎙️ ASR 语音转文字
  8. 🍍 Vue + pinia + element-plus 搭建前端,可自由扩展快速开发
  9. 🗝️ 后端采用 FastAPI + Uvicorn + PostgreSQL,高性能,高效编码,生产可用,具有 JWT 身份验证,接口均采用 RESTful API 规范编写,更规范
  10. 🐋 采用 Docker-compose 部署,一键实现分布式部署

无论是线上直播销售,还是线下门店推广,这款卖货主播大模型都能成为您不可或缺的得力助手。它不仅能够提升销售效率,还能增强用户体验,为您的品牌形象加分。

后续会在该模型的基础上新增根据用户的反馈和行为,实时调整解说策略,确保每一次互动都能带来最佳的购物效果。

让我们的卖货主播大模型成为您销售路上的得力助手,共同开创更美好的商业未来。

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

🎉 NEWS

  • [2024.09.13] 使用 RESTful API 规范重构所有接口,后端全面接入 PostgreSQL 数据库
  • [2024.09.02] 💥💥💥重磅发布:【 AI 卖货主播后台系统 】 ❗❗❗: 前端使用 Vue 重写,后端使用 FastAPI 进一步扩充接口,更加贴近生产,功能添加更为自由灵活,详见架构图
  • [2024.07.23] 支持 Docker-Compose 一键部署,再也不用担心环境问题,服务可以自由编排,一键部署更加丝滑!
  • [2024.07.10] 前后端分离,可以定义服务数量做到负载均衡啦!
  • [2024.06.17] 支持 ASR,可以语音输入和主播互动啦!
  • [2024.06.16] 接入 Agent,可以询问主播关于快递的信息,会调用 Agent 能力进行网上查询
  • [2024.06.10] 重磅发布 数字人 1.0 🦸🦸🦸 ,同时开源 ComfyUI Workflow !详见 ComfyUI 数字人生成 文档
  • [2024.05.28] 项目介绍视频发布B 站
  • [2024.05.25] 发布 TTS 2.0 版本,生成的语音在语气和情感方面有大大增强!
  • [2024.05.23] 发布 TTS 1.0 版本,并支持开放用户自由选择该项功能,但有机器人的感觉
  • [2024.05.22] 支持上传新商品,上传后会自动生成数据库
  • [2024.05.21] 接入 RAG 检索增强,主播每次回答问题都会借鉴说明书,实现加商品无需微调即可让回答更加贴近商品实际
  • [2024.05.19] 新增说明书生成脚本,可以根据网页图片快速生成说明书,具体逻辑:Web 图片 -> OCR -> LLM -> 说明书
  • [2024.05.15] 接入 LMDeploy推理效率提升 3 倍+ 🚀🚀🚀
  • [2024.05.10] 发布【乐乐喵】4 bit 模型
  • [2024.04.16] 发布【乐乐喵】模型,完成初版页面
  • [2024.04.06] 生成数据初版完成,训练初版模型

📌 目录

🛠 架构图

架构图

📺️ 讲解视频

干货满满,欢迎一键三连(疯狂暗示 🍺)

标题 视频
🌟 爆肝 1 个月,我做了个【AI 卖货主播大模型】,文案+语音+本地部署一键启动!干货满满! Link bilibili

📰 媒体转载

media cited gif

🏆 获奖信息

🖼 项目展示

Demo gif

Demo Demo Demo Demo Demo Demo Demo Demo Demo Demo Demo Demo Demo Demo


下面是 v0.8.0 的演示图:

Demo gif

⚙ Model Zoo

模型 基座 数据量 ModelScope(HF) OpenXLab(HF)
streamer-sales-lelemiao-7b interlm2-chat-7b about 40w Toeken ModelScope Open in OpenXLab
streamer-sales-lelemiao-7b-4bit interlm2-chat-7b about 40w Toeken ModelScope Open in OpenXLab

🎨 快速体验

在线体验

目前已将 v0.7.1 版本部署到 OpenXLab 平台,地址 :https://openxlab.org.cn/apps/detail/HinGwenWong/Streamer-Sales

因为 Agent API 需要计费的关系和显存大小的关系,上面失能了 Agent 和 ASR,但项目本身是支持的,可以自行购买 API 服务和本地部署来体验。

本地部署

方式一:Docker-Compose(推荐)

目前只支持后端,后续会加入前端

git clone https://github.com/PeterH0323/Streamer-Sales.git

cd Streamer-Sales
docker build -t streamer-sales:v0.9.0 -f docker/Dockerfile .

docker-compose up

[!NOTE] 如果出现错误:

1、第一次启动需要下载模型,有可能会出现服务之间 connect fail,耐心等待下载好模型重启即可

2、如果您有多卡,可以修改 compose.yaml 中的 device_ids 来配置每个服务部署的显卡 ID

方式二:宿主机直接部署

  • 环境搭建:
git clone https://github.com/PeterH0323/Streamer-Sales.git
cd Streamer-Sales
conda env create -f environment.yml
conda activate streamer-sales
pip install -r requirements.txt

注意:如果您发现下载权重经常 timeout ,参考 权重文件结构 文档,文档内已有超链接可访问源模型路径,可进行自行下载

启动分为两种方式:

前后端分离版本 ( > v0.7.1 ):适合分布式部署,可以配置负载均衡,更适合生产环境。

注意:每个服务都要用一个 terminal 去启动

  1. TTS 服务
bash deploy.sh tts
  1. 数字人 服务
bash deploy.sh dg
  1. ASR 服务
bash deploy.sh asr
  1. LLM 服务
bash deploy.sh llm

默认使用 lelemiao-7b 进行部署,建议使用 40G 显存机器。

如果您的机器是 24G 的显卡,需要换成 4bit 模型,命令如下:

bash deploy.sh llm-4bit
  1. 中台服务

启用中台服务需要先配置数据库环境,详见 数据库环境搭建

# Agent Key (如果没有请忽略)
export DELIVERY_TIME_API_KEY="${快递 EBusinessID},${快递 api_key}"
export WEATHER_API_KEY="${天气 API key}"

# 数据库配置
# export POSTGRES_SERVER="127.0.0.1"  # 数据库 IP,按需配置
export POSTGRES_PASSWORD=""  # 数据库密码,自行填写
# export POSTGRES_DB="streamer_sales_db"  # 数据库名字,按需配置

bash deploy.sh base
  1. 前端

需要先搭建前端的环境,详见 搭建前端环境文档

bash deploy.sh frontend

前后端融合版本 ( <= v0.7.1 ):适合初学者或者只是想部署玩玩的用户

git checkout v0.7.1

# Agent Key (如果没有请忽略)
export DELIVERY_TIME_API_KEY="${快递 EBusinessID},${快递 api_key}"
export WEATHER_API_KEY="${天气 API key}"

streamlit run app.py --server.address=0.0.0.0 --server.port 7860

🖥️ 配置需求

  1. 我的开发机器配置:
组件名 型号/版本
CPU Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz
内存 128G,最小需要 64G
磁盘 500G SSD
显卡 A100,当然 RTX4090、RTX3090 也是可以的
系统 Ubuntu 20.04.6 LTS
CUDA 12.2
显卡驱动 535.54.03
Python 3.10
conda 23.9.0,conda 版本不需要完全一样
docker 24.0.7
docker-compose 1.29.0
  1. 微调显存

需要显存 24G ~ 80G

batch size 显存
2 20G
8 40G
16 80G
  1. 服务部署显存占用一览表
服务名称 显存
TTS 2G (1668MB)
数字人 5G (4734MB)
ASR 5.5G (5562MB)
RAG 2G (1974MB)
LLM - lelemiao-7b 16G (16060MB)

建议使用 40G 显卡 | | LLM - lelemiao-7b-4bit | 6.5G (6406MB)

可以适配 24G 显卡 |

默认是用 lelemiao-7b 进行部署,如果您的机器是 24G 的显卡,请使用以下命令 :

使用 前后端分离版本 ( > 0.7.1 ) 使用 lelemiao-7b-4bit 启动,如果还是 OOM ,不启动 ASR 服务就问题不大了。

前后端融合版本 ( <= v0.7.1 ):适合初学者或者只是想部署玩玩的用户

export USING_4BIT=true # 设置使用 4bit 模型
export KV_CACHE=0.05 # 设置 kv cache 在全部模型启动之后,占用的剩余显存比例

# Agent Key (如果没有请忽略)
export DELIVERY_TIME_API_KEY="${快递 EBusinessID},${快递 api_key}"
export WEATHER_API_KEY="${天气 API key}"

streamlit run app.py --server.address=0.0.0.0 --server.port 7860

🦸 数字人生成 Workflow

已开源数字人生成 ComfyUI workflow,更多教程详见 ComfyUI 数字人生成 文档

Digital_Human

🌐 Agent

目前已支持可以询问主播关于快递单号的信息,可以试试问主播【到杭州需要多久】来触发网络查询,会根据实时网络的信息来反馈给用户。

目前调用的 API 主要有两个:

使用环境变量设置 Key:

export DELIVERY_TIME_API_KEY="${快递鸟 EBusinessID},${快递鸟 api_key}"
export WEATHER_API_KEY="${和风天气 API key}"

🧱 开发计划

  • [x] 生成多个产品数据集
  • [x] 根据产品生成话术,每个都是 5 个往来的对话
  • [ ] 支持多种角色
  • [x] 乐乐喵——可爱萝莉,
  • [ ] 更多角色正在规划中,敬请期待!
  • [x] 模型推理加速
  • [x] 接入 RAG 解读产品文档
  • [x] 支持上传新商品并生成新 RAG 数据库
  • [x] TTS 生成语音
  • [x] 数字人
  • [x] 接入 Agent,支持订单情况、收货时间等实时信息
  • [x] ASR
  • [x] 前后端分离解耦
  • [x] 后端接入数

Extension points exported contracts — how you extend this code

TokenItem (Interface)
(no doc)
frontend/src/stores/userToken.ts
ResultPackage (Interface)
(no doc)
frontend/src/api/base.ts
SystemPluginsInfo (Interface)
(no doc)
frontend/src/api/system.ts
UserInfo (Interface)
(no doc)
frontend/src/api/user.ts
StreamingRoomProductList (Interface)
(no doc)
frontend/src/api/streamingRoom.ts

Core symbols most depended-on inside this repo

make_return_data
called by 33
server/base/utils.py
get
called by 30
server/base/modules/rag/retriever.py
items
called by 29
utils/__init__.py
pop
called by 22
server/base/modules/rag/retriever.py
keys
called by 19
utils/__init__.py
read
called by 16
server/base/modules/rag/file_operation.py
softmax
called by 14
server/digital_human/modules/musetalk/utils/face_detection/api.py
get_padding
called by 13
server/tts/modules/gpt_sovits/module/commons.py

Shape

Method 476
Function 340
Class 167
Route 32
Interface 15

Languages

Python96%
TypeScript4%

Modules by API surface

server/tts/modules/gpt_sovits/module/modules.py71 symbols
server/tts/modules/gpt_sovits/module/models.py53 symbols
server/digital_human/modules/musetalk/whisper/whisper/decoding.py52 symbols
server/tts/modules/gpt_sovits/module/attentions.py39 symbols
server/digital_human/modules/musetalk/utils/face_parsing/model.py33 symbols
server/digital_human/modules/musetalk/whisper/whisper/model.py31 symbols
server/tts/modules/gpt_sovits/module/core_vq.py29 symbols
server/tts/modules/gpt_sovits/AR/modules/transformer.py21 symbols
server/tts/modules/gpt_sovits/module/commons.py20 symbols
server/base/modules/rag/feature_store.py20 symbols
server/digital_human/modules/musetalk/whisper/whisper/tokenizer.py19 symbols
server/digital_human/modules/musetalk/utils/face_detection/models.py19 symbols

Dependencies from manifests, versioned

@rushstack/eslint-patch1.8.0 · 1×
@tsconfig/node2020.1.4 · 1×
@types/jsdom21.1.7 · 1×
@types/node20.14.5 · 1×
@vitejs/plugin-vue5.0.5 · 1×
@vue/eslint-config-prettier9.0.0 · 1×
@vue/eslint-config-typescript13.0.0 · 1×
@vue/test-utils2.4.6 · 1×
@vue/tsconfig0.5.1 · 1×
@vueuse/core11.0.1 · 1×
axios1.7.7 · 1×
echarts5.5.1 · 1×

For agents

$ claude mcp add Streamer-Sales \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact