【大模型学习】项目练习:视频文本生成器

🚀实现视频脚本生成器

视频文本生成器

📚目录

一、⛳设计思路

本视频脚本生成器采用模块化设计,主要包含三大核心模块:

  1. 显示模块:处理用户输入和菜单显示
  2. 游戏逻辑模块:雷盘状态维护、胜负判断
  3. 声明模块:解耦合,提高代码健壮性

说明:

编译器为Visual Studio codePython版本为3.12,安装库为:

python 复制代码
altair==5.5.0
annotated-types==0.7.0
anyio==4.9.0
attrs==25.3.0
blinker==1.9.0
cachetools==5.5.2
certifi==2025.4.26
charset-normalizer==3.4.2
click==8.2.1
colorama==0.4.6
distro==1.9.0
gitdb==4.0.12
GitPython==3.1.44
greenlet==3.2.2
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
idna==3.10
Jinja2==3.1.6
jiter==0.10.0
jsonpatch==1.33
jsonpointer==3.0.0
jsonschema==4.24.0
jsonschema-specifications==2025.4.1
langchain==0.3.25
langchain-core==0.3.63
langchain-deepseek==0.1.3
langchain-openai==0.3.18
langchain-text-splitters==0.3.8
langsmith==0.3.43
MarkupSafe==3.0.2
narwhals==1.41.0
numpy==2.2.6
openai==1.82.1
orjson==3.10.18
packaging==24.2
pandas==2.2.3
pillow==11.2.1
protobuf==6.31.1
pyarrow==20.0.0
pydantic==2.11.5
pydantic_core==2.33.2
pydeck==0.9.1
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.2
referencing==0.36.2
regex==2024.11.6
requests==2.32.3
requests-toolbelt==1.0.0
rpds-py==0.25.1
six==1.17.0
smmap==5.0.2
sniffio==1.3.1
SQLAlchemy==2.0.41
streamlit==1.45.1
tenacity==9.1.2
tiktoken==0.9.0
toml==0.10.2
tornado==6.5.1
tqdm==4.67.1
typing-inspection==0.4.1
typing_extensions==4.13.2
tzdata==2025.2
urllib3==2.4.0
watchdog==6.0.0
zstandard==0.23.0

二、🎉具体流程操作

2.1 安装虚拟环境

方式一:使用anaconda安装

1.下载anaconda

2.打开

3.创建并进入虚拟环境

4.正常安装相应的库即可

5.删除虚拟环境(可选)

先退出当前虚拟环境,再删除虚拟环境

方式二:在Visual Studio code创建虚拟环境

1.根据图操作

2.找到Python安装环境配置即可


2.2 安装相应的库

1.打开终端

2.输入

requirements.txt自己把相应的库建出来txt文件

3.导入相应的库(可选)

打开终端,输入:

2.3 后端

主要实现功能:

1.标题获取 :使用Langchain中的Deepseek模型进行调用获取--Langchain文档

2.内容获取:使用Langchain中的Deepseek模型进行调用获取

c 复制代码
from langchain.prompts import ChatPromptTemplate #获取标题提示模版 
from langchain_deepseek import ChatDeepSeek #deepseek-chat模型

def catch_content(video_object, video_length, video_create, video_api_key): #参数分别为视频主题、视频长度、创造力和用户API密钥
    # 获取视频标题
    script_title = ChatPromptTemplate.from_messages(
        [
            ("human", "请为'{video_object}'这个主题的视频起一个吸引人的标题,要求有文采")
        ]
    )
     # 获取视频脚本内容
    script_content = ChatPromptTemplate.from_messages(
        [
            ("human",
             """你是一位小红书平台的短视频博主。根据以下标题和相关信息,写一个文本内容。
             视频标题:{title},视频时长:{duration}分钟,生成的文本的长度尽量遵循视频时长的要求。
             要求开头抓住眼球,中间提供干货内容,结尾有惊喜,文本格式也请按照【开头、中间,结尾】分隔。
             整体内容的表达方式要尽量轻松有趣,吸引年轻人。
             你需要根据标题和时长来生成内容,内容要有趣且吸引人。
             """)
        ]
    )
    # 创建模型获取api和创造性
    model = ChatDeepSeek(api_key=video_api_key, temperature=video_create, model="deepseek-reasoner")
    # 获取标题和文本内容
    title_chain = script_title | model
    content_chain = script_content | model
    # 调用获取真正标题
    title = title_chain.invoke({"video_object": video_object}).content

    # 调用获取真正内容
    content = content_chain.invoke({"title": title, "duration": video_length}).content

    return title, content

2.4🚀前端

1.前端页面:使用streamlit进行页面布置

python 复制代码
import streamlit as st #前端库
from backend import catch_content

st.title("📹 视频文本生成器")

with st.sidebar: #侧边栏
    deepseek_api_key = st.text_input("请输入Deepseek API密钥:", type="password")
    st.markdown("[获取Deepseek API密钥](https://platform.deepseek.com/api_keys)")

aim = st.text_input("✨ 请输入视频的主题")
video_length = st.number_input("⏱️ 请输入视频的时长(单位:分钟)", min_value=0.1, step=0.1)
creativity = st.slider("✨ 请输入视频脚本的创造力(数字小说明更严谨,数字大说明更多样)", min_value=0.0,
                       max_value=1.0, value=0.3, step=0.1) #必须都为小数
submit = st.button("生成文本")
# 检查输入
if submit and not deepseek_api_key:
    st.info("请输入你的Deepseeek API密钥")
    st.stop() #检查API密钥是否输入,若输入则不在执行后续代码
if submit and not aim:
    st.info("请输入视频的主题")
    st.stop()
if submit and not video_length >= 0.1:
    st.info("视频长度需要大于或等于0.1")
    st.stop()
if submit:
    # 加载效果
    with st.spinner("AI正在思考中,请稍等..."): #只要以下代码未运行完,这st.spinner就会一直显示
        title, content = catch_content(aim, video_length, creativity, deepseek_api_key)
    st.success("视频文本已生成!")
    st.subheader("❤️‍🔥 标题:")
    st.write(title)
    st.subheader("⭐ 视频文本:")
    st.write(content)

2.5 本地运行

1.终端运行

2.第一次运行之后,会叫你输入邮箱,输入即可

3.运行成功


2.6 streamlit云部署 (可选)

1.注册并登入github网页

2.新建仓库

3.上传文件

4.提交文件

5.登入streamlit云

6.选择

7.然后选择

8.部署成功
视频文本生成器

9.若部署失败,需要删除失败的操作(可选)

三、😉想说的话

3.1 代码现状

个人感兴趣,玩一下,不足之处多多包涵。

主要问题有:
  1. 功能实现不够多
  2. 变量名起的不够精炼

3.2 改进方案

如何解决:

  1. 多学习,多练习,熟练度上去后,尝试表达想法。
  2. 勤注释,换位思考
  3. 多背单词

3.3 开发困难记录

练习过程中遇到的困难:

  1. 在streamlit云部署过程中第一次部署失败,因为库依赖多处发生冲突
  2. 第一次部署失败后,无论尝试多少次,链接一直未能正确更新,依旧卡在第一次失败点处

3.4 解决方案

如何解决的困难:

  1. 因为库依赖数量巨大,改不了,所以选择重新安装库,生成requirements.txt文件
  2. 删除streamlit云上的第一次失败部署

3.5代码汇总

个人主页csdn资源

相关推荐
IT_陈寒1 小时前
React 18实战:7个被低估的Hooks技巧让你的开发效率提升50%
前端·人工智能·后端
数据智能老司机2 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
逛逛GitHub2 小时前
飞书多维表“独立”了!功能强大的超出想象。
人工智能·github·产品
机器之心2 小时前
刚刚,DeepSeek-R1论文登上Nature封面,通讯作者梁文锋
人工智能·openai
数据智能老司机3 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机3 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i3 小时前
drf初步梳理
python·django
每日AI新事件3 小时前
python的异步函数
python
这里有鱼汤5 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python