
昨天翻本地模型库的时候突然想,之前找短剧脚本要么要会员要么生成的太套路,不如自己整个本地跑的,不用爬接口也不用付token费,说搞就搞了。
先把依赖和模型下对
我这边用的Python 3.10版本,之前试过3.12装llama-cpp-python卡了好半天编译失败,换3.10就顺了。先装基础依赖:
pip install llama-cpp-python fastapi uvicorn
如果是N卡用户想GPU加速,装llama-cpp-python之前要先设环境变量,Windows下命令是:
set CMAKE_ARGS="-DLLAMA_CUBLAS=on"
pip install llama-cpp-python --force-reinstall --upgrade
Mac用户把CMAKE_ARGS的值换成-DLLAMA_METAL=on就行,M系列芯片的速度我还没细测,反正能正常跑。模型不用下那种几十G的大版本,找Q4_K_M量化的7B短剧微调模型就够用,大概4G左右,放本地任意目录记好路径就行。
核心代码其实没几行
新建个drama_gen.py文件,把下面的代码粘进去,记得把模型路径换成你自己本地的:
from llama_cpp import Llama
import sys
# 加载本地模型
llm = Llama(
model_path="./models/short_drama_7b_q4.gguf",
n_ctx=2048,
n_gpu_layers=-1, # 有GPU全量调用,纯CPU跑设为0
verbose=False
)
def gen_script(prompt, eps=3):
input_prompt = f"""你是专业竖屏短剧编剧,根据用户需求写{eps}集脚本,每集要有爽点和反转:
用户需求:{prompt}
脚本内容:"""
output = llm(
input_prompt,
max_tokens=2048,
temperature=0.7,
stop=["用户需求:"],
echo=False
)
return output['choices'][0]['text']
if __name__ == "__main__":
user_demand = sys.argv[1]
print(gen_script(user_demand))
运行的时候直接在命令行传需求参数就行,比如:
python drama_gen.py "赘婿上门被丈母娘羞辱,当场亮出首富身份"
小提示:n_ctx参数别一开始设太大,尤其是纯CPU跑的用户,先从1024开始试,跑不动再往下调,不然容易直接内存占满卡退,具体能开多大看设备配置。
我自己用着的小调整
- 觉得生成内容太生硬的话,别先忙着调模型参数,先改prompt,加上“台词口语化”“每集结尾留钩子”这类具体要求,效果提升比改temperature明显多了
- 想要可视化界面的话,把gen_script函数套个FastAPI接口,前端整个简单的输入框加按钮,花不了多少时间就能搭出本地网页版,我这边现在就是这么用的,同事没事就来蹭着生成爽文脚本摸鱼
- 不用纠结7B模型效果差,专门针对短剧微调过的量化版本,生成的套路逻辑比很多平台免费送的脚本靠谱,至少不会出现前后人物设定矛盾的硬伤
对了,要是跑的时候遇到模型加载报错,先看看存放模型的路径有没有中文,我之前卡了好一会才发现是文件夹名叫“短剧模型”,改成英文名瞬间就加载成功了。就写到这,我去生成个重生复仇的脚本摸会鱼。
评论一下?