Python Streamer-Sales 基于大模型的AI卖货主播生成工具
直播电商的脚本撰写,大概是每个运营团队都绕不开的体力活。一件新品上架,要写卖点、要憋单、要互动话术,还得根据不同的商品类目调整语气风格。更麻烦的是,当商品库有几百个 SKU 时,人工写脚本的速度根本追不上上播的节奏。Streamer-Sales 这个项目试图解决的就是这个问题:给定商品信息,让大模型自动生成一套有“带货感”的解说词,并且把语音合成、数字人视频、实时信息查询这些环节串成一条可运行的流水线。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | Streamer-Sales |
| GitHub地址 | https://github.com/PeterH0323/Streamer-Sales |
| 项目描述 | Streamer-Sales 销冠 —— 卖货主播 LLM 大模型,一个能够根据给定的商品特点从激发用户购买意愿角度出发进行商品解说的卖货主播大模型。内含详细的数据生成流程,另外还集成了 LMDeploy 加速推理、RAG检索增强生成、TTS文字转语音、数字人生成、Agent 使用网络查询实时信息、ASR 语音转文字、Vue 生态搭建前端、FastAPI 搭建后端、Docker-compose 打包部署 |
| 作者 | PeterH0323 |
| 开源协议 | GNU Affero General Public License v3.0 |
| 开源状态 | 公开状态 |
| Languages | Python / Vue / TypeScript / Dockerfile |
| 支持平台 | Linux / Windows / macOS / Web |
| 最后更新 | 2026-10-24 |
一、项目介绍
Streamer-Sales 的核心是一个在 InternLM2 基础上微调而来的 7B 对话模型,项目内部给它起了个名字叫“乐乐喵”。和直接拿通用大模型写带货文案不同,这个模型在训练阶段就灌入了特定的人设和任务范式:主播会称呼观众为“家人们”,语气偏向可爱活泼,并且在组织语言时会刻意放大商品的亮点价值来激发购买欲。
但仅仅有一个会写文案的模型,并不足以构成一个“可用”的卖货系统。作者把整条链路做成了模块化的组合:模型生成文案之后,TTS 模块把文字变成带感情的语音,数字人模块再根据语音生成对应的口播视频。如果观众提问涉及快递时效或天气信息,Agent 模块会调用外部 API 实时查询并融入回答。RAG 模块则让主播在解说时参考商品说明书,这意味着上架新品不需要重新微调模型,只要更新知识库就能让话术贴合实际参数。
从 v0.9.0 开始,项目还加入了基于 Vue 和 FastAPI 的后台管理系统,包含商品管理、直播间配置、数字人管理等页面,接口采用 RESTful 规范并带有 JWT 鉴权。这使得它不再只是一个演示 demo,而具备了小团队内部试用的基本形态。
二、核心优势
数据生成流程完全透明。很多微调项目的 README 只告诉你“我训了一个模型”,但对数据从哪来、 prompt 怎么设计、格式如何清洗闭口不谈。Streamer-Sales 把数据集生成的脚本和配置文件都摊开在 dataset/ 目录下,conversation_cfg.yaml 里定义了主播性格、商品品类、用户可能提问的问题模板,你可以照着这套流程替换成自己的品类重新生成数据。
RAG 带来的“免微调上新品”能力是实用层面最大的亮点。传统做法是每上一个新品就得准备数据、重新训练或至少做一次增量微调。RAG 方案下,你只需要把商品说明书喂给系统,主播回答时就会自动检索相关段落作为参考。对于商品迭代快的团队,这个设计省掉的算力成本和时间成本相当可观。
推理加速做了两档适配。项目接入了 LMDeploy,开启 KV cache 和 Turbomind 之后推理效率相比原生 HF 推理有明显提升。更关键的是它提供了 4bit 量化模型,6.5G 左右的显存占用让 24G 显卡(如 RTX 4090)也能跑起来,大大降低了本地体验的门槛。
部署形态灵活。早期版本是前后端融合的 Streamlit 单页,后来逐步演进到前后端分离,并支持 Docker-Compose 编排。你可以选择一键拉起整套服务,也可以按需关掉数字人、ASR 等吃显存的模块,只跑文案生成和 TTS 这条最小链路。
三、适用场景
电商运营团队的脚本预生产。如果你的团队每天需要产出几十条商品口播稿,人工从零写起效率很低。可以用这个系统批量生成初稿,运营人员再基于初稿做修改和调整,把精力从“憋词”转移到“调优”上。
AI 应用开发者的学习样本。这个项目在架构上覆盖了 LLM 微调、RAG 检索、TTS、数字人驱动、Agent 工具调用、前后端分离、容器化部署等多个环节,而且每个环节的代码都是开源的、可读的。想了解一个完整 AI 应用从模型到产品的链路长什么样,这是一个不错的参照物。
直播场景的自动化尝试。虽然目前距离真正的实时互动直播还有距离,但对于录播式的商品讲解视频、无人值守的循环直播、或者夜间时段的补充内容,用数字人加生成话术的方式可以做到低成本覆盖。
注意:如果你期望的是开箱即用的 SaaS 产品,点开就能上播卖货,那 Streamer-Sales 会让你失望。它本质上是一个需要自己部署、自己配环境、自己调参的技术项目,显存要求、模型下载、依赖冲突这些门槛一个都不会少。
四、安装教程
环境准备
先确认你的机器满足最低要求。显卡方面,如果使用 4bit 量化模型,24G 显存(如 RTX 3090 / 4090)即可运行;如果使用原版 7B 模型,建议 40G 显存以上。系统建议 Ubuntu 20.04 及以上,Python 版本 3.10 左右。
需要提前装好 Git 和 Conda。如果打算用 Docker 部署,Docker 版本建议 24 以上。
获取代码与创建环境
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.txtenvironment.yml 里已经锁定了大部分核心依赖的版本,这比纯靠 pip install -r requirements.txt 要稳妥一些,能避开不少版本冲突的坑。
模型权重预下载(强烈建议)
项目启动时会通过 ModelScope 自动拉取权重,但国内网络环境下这一步经常超时或者卡住。weights/ 目录下有一个 README,列出了 LLM、TTS、数字人、ASR、RAG 各模块需要的模型文件和存放路径。建议先按照清单手动下载好再启动,首次运行的等待时间会短很多。
配置修改
主要配置文件在 server/web_configs.py。几个需要关注的参数:
POSTGRES_PASSWORD:如果使用数据库功能,需要和你本地 PostgreSQL 的密码一致- 功能开关:
ENABLE_RAG、ENABLE_TTS、ENABLE_DIGITAL_HUMAN、ENABLE_ASR,显存紧张时可以先关掉数字人和 ASR - Agent 密钥:快递查询和天气查询的 API Key 通过环境变量注入,没有的话先跳过,不影响文案生成核心功能
启动方式选择
Docker-Compose(快速体验后端):
docker-compose up -d适合只想看看文案生成和 TTS 效果的情况,省去逐个配环境的麻烦。
宿主机分服务启动(完整体验):
按照项目文档的说明,LLM 服务、TTS 服务、数字人服务、ASR 服务、RAG 服务、后端 API、前端各开一个终端依次启动。这种方式能用到完整的后台管理界面,也方便单独调试某个模块。如果显存不够跑全部服务,可以先只启动 LLM 和 TTS,把数字人和 ASR 留到后面再加。
五、使用示例
场景:为一把人体工学椅生成带货文案
假设你上架了一款人体工学椅,卖点是“腰托可调”“网布透气”“扶手四向调节”。在后台的商品管理页面填入这些信息,或者直接调用模型接口,让主播生成一段解说。
用 Python 直接调用模型的一个简化示例如下(实际接口以项目最新文档为准):
from lmdeploy import pipeline, TurbomindEngineConfig
# 使用 4bit 模型以适配 24G 显存
backend_config = TurbomindEngineConfig(model_format='awq', tp=1)
pipe = pipeline('HinGwenWoong/streamer-sales-lelemiao-7b-4bit', backend_config=backend_config)
prompt = """你是一个卖货主播,请根据以下商品信息生成一段口播文案:
商品:人体工学办公椅
卖点:腰托可调、高弹网布透气、扶手四向调节、适合久坐人群
要求:语气活泼,称呼观众为家人们,突出对腰部健康的改善。"""
response = pipe(prompt)
print(response.text)模型会输出类似“家人们看过来,这把椅子真的拯救了我的老腰……”的文案。你可以直接把这段文字拿去用,也可以把生成的文本传给 TTS 模块进一步合成语音。
添加新商品并更新 RAG 知识库
如果不想每次都在 prompt 里粘贴卖点,更工程化的做法是通过 RAG 流程:
- 把商品说明书(文本或从图片 OCR 提取的文本)放入指定目录
- 运行 RAG 初始化脚本,脚本会自动切分文本并写入向量数据库
- 之后在对话中提及该商品,主播的回答会自动检索说明书中的相关内容
这样上架一个新品的时间成本从“准备数据 + 微调或调 prompt”压缩到了“上传文档 + 跑一次索引”。
显存不够时的取舍
如果你的显卡只有 24G,建议的启动组合是:LLM(4bit 版)+ TTS + RAG,关掉数字人和 ASR。这套组合的显存占用大约在 15G 左右,足够完成“输入商品信息 → 生成文案 → 合成语音”的闭环。数字人生成单独占用 5G 左右显存,可以在需要产出视频时再临时开启。
六、常见问题
启动时模型下载卡住或报 ConnectionError
这是最常见的问题,根源是 ModelScope 或 HuggingFace 的网络连通性。解决方案是提前手动下载权重:打开 weights/README.md,里面列出了每个模块需要的模型仓库地址和本地存放路径,用 git lfs 或者 ModelScope 的 SDK 下载后按对应目录放好。项目启动时会检测本地文件,存在就不再重复下载。
24G 显卡跑原版模型爆显存
默认配置使用的是非量化的 7B 模型,需要约 16G 显存仅给 LLM,加上 TTS 和 RAG 之后 24G 会很紧张。切换到 4bit 模型,LLM 部分降到 6.5G 左右,留出足够空间给其他模块。具体启动命令在项目部署文档中有说明,注意修改模型路径或名称。
前端页面能打开但接口报 500
先检查后端服务的日志。常见原因包括:数据库没有初始化(PostgreSQL 需要先建库)、某个依赖服务的端口没启动(比如 TTS 服务没有运行但前端触发了语音生成请求)、或者环境变量中缺少必要的密钥。从 v0.9.0 起接口加了 JWT 鉴权,如果是自己改过前端代码,确认 token 的携带方式是否正确。
生成的文案“AI 味”太重,不够自然
微调模型的表现很大程度上取决于训练数据的质量。项目默认的数据集是用商用大模型生成的,如果你有自己的历史直播脚本,可以替换 conversation_cfg.yaml 中的产品信息和话术模板,重新跑一遍数据生成和训练流程。不过对于大多数试用场景,更实用的做法是在 prompt 里加入具体的风格示例,让模型模仿而不是自由发挥。
数字人生成的视频口型对不上
数字人模块依赖 ComfyUI 的 workflow,项目开源了对应的流程文件。口型同步问题通常出在音频和驱动视频的时长匹配上。如果 TTS 生成的语音比模板视频长,就需要做截断或加速处理。检查 weights/ 中数字人相关模型的版本是否与代码匹配,版本错位也会导致生成异常。
七、总结
Streamer-Sales 是一个野心不小的项目。它把“让大模型卖货”这件事拆解成了文案生成、语音合成、数字人驱动、实时信息检索等多个可独立工作的模块,再用前后端和容器化把整条链路串起来。从技术学习的角度,它的代码结构和数据生成流程有不错的参考价值;从实际使用的角度,RAG 免微调上新品和 4bit 量化适配 24G 显卡是两个实打实的实用设计。
但也要清醒地看到,它目前更适合作为“原型验证”和“二次开发的基础”来使用。部署门槛、显存要求、以及各模块之间的联调复杂度,决定了它离开箱即用的商业产品还有距离。如果你有一个小团队、有一张 24G 以上的显卡、愿意花一个周末折腾环境,它能让你直观感受到一个多模块 AI 应用从代码到运行的全貌。如果你只是想要一个写带货文案的工具,直接调商用大模型的 API 可能是更省事的选择。
把数据生成流程开源这点真的很良心,很多项目只给模型不给数据怎么来的,想复现都没门。
数字人那部分显存占用写得很清楚,5G 左右这个信息帮了大忙,之前一直不敢开。
24G 卡跑 4bit 是能跑,但 TTS 加 RAG 一起开之后还是有点紧,建议作者出一个显存占用对照表。
文章里那个“显存不够时的取舍”挺实用的,LLM+TTS+RAG 的组合我试过确实能跑通。
RAG 免微调上新品这个点被低估了,对于品类多的店铺来说这才是最省成本的功能。
部署那部分写得比较实在,没有把 Docker 一键部署吹成万能药,分服务启动的坑确实多。
想问一下 Agent 的快递查询 API 必须用指定的服务商吗,还是任意快递查询接口都能接?
写文案的 prompt 我照着试了,生成的口播比直接让 GPT 写确实更有带货感,人设的作用不小。
数字人口型对不上那个问题我也遇到了,原来是音频时长和模板视频不匹配,谢了。
作者用 InternLM2 做基座而不是 Llama,对国内用户友好,ModelScope 下载也方便。
文章说“离商业产品还有距离”这句很中肯,项目很棒但确实还在迭代中。
那个 conversation_cfg.yaml 里的产品列表居然连漱口水牙刷这些都有,数据准备做得挺细的。
TTS 2.0 的感情增强到底效果怎么样,有人对比过 1.0 和 2.0 的音频吗?
前后端分离之后接口加了 JWT,自己改前端的时候记得带 token,我在这卡了半天。
能不能出一篇专门讲怎么用自己的商品数据重新生成训练集的教程,RAG 那套会了但微调数据还不太懂。
24G 显存关掉 ASR 和数字人,只跑文案加语音,这套组合对个人开发者最友好。
Agent 查快递这个功能在直播场景里其实很实用,观众问“什么时候发货”不用主播切后台了。
部署文档里权重手动下载的提醒很重要,我第一次跑等了四十分钟卡在 80% 然后超时了。
文章没有回避部署门槛的问题,这点比很多只吹效果的文章好。
想问下如果用 4090 跑 4bit 模型加数字人,总显存大概多少,文章里只给了单项。
RAG 那个说明书生成脚本的 OCR 到 LLM 链路挺有意思的,想看看实际识别准确率怎么样。
博主写的“AI 味太重”的解决思路很务实,不是让人重新训模型而是从 prompt 入手。
项目更新到 v0.10 了,接入了 PostgreSQL,文章如果后续能补一下数据库配置细节就更好了。
数字人这块用 ComfyUI workflow 的思路不错,比端到端训一个模型灵活多了。
评论里好像没人提 ASR,那个语音输入功能在演示里挺流畅的,但实际麦克风设备的兼容性不知道怎么样。
文章整体读下来对新手挺友好的,没有一上来就甩一堆命令,先讲清楚每个模块干嘛的。
开源协议是 AGPL 这点要注意,如果打算基于它做商业产品需要评估一下合规问题。
那个 4bit 模型的显存数据 6.5G 是实测的还是官方标的,有人跑过吗?
后台管理系统的截图在哪能看到,文章里只有文字描述,想看看商品管理页面长什么样。
作者 PeterH0323 在 OpenMMLab 贡献过,代码质量应该有一定保证,这点文章里可以提一下。
“让大模型卖货”听起来像噱头,但看完文章发现链路是完整的,文案到语音到视频都串起来了。
Agent 查天气的功能在实际直播里可能用不上,但快递时效确实是高频问题,方向选得准。
想问下宿主机部署七个终端那个流程,有没有更省事的脚本或者 tmux 配置推荐。
文章最后 Keywords 写的是 Python,但项目前端也是 Vue,感觉关键词覆盖不够全。
试用了一下 RAG 上新品,确实不用微调,但说明书的质量直接影响输出效果,文档写得好才行。