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

news2025/7/26 8:29:38

🚀实现视频脚本生成器

视频文本生成器

在这里插入图片描述

📚目录

  • 一、游戏设计思路
  • 二、完整代码解析
  • 三、扩展方向建议
  • 四、想说的话

一、⛳设计思路

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

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

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

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模型进行调用获取

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进行页面布置

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资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Rust】Rust获取命令行参数以及IO操作

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【Redis】Zset 有序集合

文章目录 常用命令zaddzcardzcountzrange && zrevrangezrangebyscorezpopmax && bzpopmaxzpopmin && zpopmaxzrank && zrevrankzscorezremzremrangebyrankzremrangebyscorezincrby 集合间操作交集 zinterstore并集 zunionstore 内部编码应用场…

manus对比ChatGPT-Deep reaserch进行研究类论文数据分析!谁更胜一筹?

目录 没有账号,只能挑选一个案例 1、manus的效果 Step-1:直接看结果 Step-2:看看其他文件的细节 Step-3:看最终报告 2、Deep reaserch 3、Deep reaserch进行行业分析 总结一下: 大家好这里是学术Anan&#xff…

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解 一、前言:移动开发声明式 UI 框架的技术变革 在移动操作系统的发展历程中,UI 开发模式经历了从命令式到声明式的重大变革。 根据华为开发者联盟 2024 年数据报告显示,HarmonyOS 设备…

用提示词写程序(3),VSCODE+Claude3.5+deepseek开发edge扩展插件V2

edge扩展插件;筛选书签,跳转搜索,设置背景 链接: https://pan.baidu.com/s/1nfnwQXCkePRnRh5ltFyfag?pwd86se 提取码: 86se 导入解压的扩展文件夹: 导入扩展成功: edge扩展插件;筛选书签,跳转搜索,设置背景

初识PS(Photoshop)

初识PS(Photoshop) 1、Photoshop界面 2、常用快捷键

go语言的GMP(基础)

1.概念梳理 1.1线程 通常语义中的线程,指的是内核级线程,核心点如下: (1)是操作系统最小调度单元; (2)创建、销毁、调度交由内核完成,cpu 需完成用户态与内核态间的切…

电路图识图基础知识-高、低压供配电系统电气系统的继电自动装置(十三)

电气系统的继电自动装置 在供电系统中为保证系统的可靠性,保证重要负荷的不间断供电,常采用自动重合闸装置和备用电源自动投入装置。 1 自动重合闸装置 供配电系统多年运行实践表明,架空线路发生的故障多属于暂时性故障,如雷击…

Qt实现的水波进度条和温度进度条

一.效果 二.原理 1.水波 要模拟波浪,就要首先画出一条波浪线,正弦余弦曲线就很适合。 y=A*sin(ω*x+φ)+k y=A*cos(ω*x+φ)+k 这是正弦余弦曲线的公式,要想实现水波效果,那需要两条曲线,一条曲线的波峰对着另外一条曲线的波谷,要实现这样的曲线效果,只有让正弦曲线前移…

WEBSTORM前端 —— 第3章:移动 Web —— 第4节:移动适配-VM

目录 一、适配方案 二、VM布局 ​编辑 三、vh布局 四、案例—酷我音乐 一、适配方案 二、VM布局 三、vh布局 四、案例—酷我音乐

【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事

好的,下面是Zephyr 系列第 3 篇:聚焦 多线程与调度机制的实践应用,继续面向你这样的 Ubuntu + 真板实战开发者,代码清晰、讲解通俗、结构规范,符合 CSDN 高质量博客标准。 🧠关键词:Zephyr、线程调度、k_thread、k_sleep、RTOS、BluePill 📌适合人群:想从裸机开发进…

Kotlin-特殊类型

文章目录 数据类型枚举类型匿名类和伴生对象单例类伴生对象 数据类型 声明一个数据类非常简单: //在class前面添加data关键字表示为一个数据类 data class Student(var name: String, var age: Int)数据类声明后,编译器会根据主构造函数中声明的所有属性自动为其生成以下函数…

nssctf第二题[SWPUCTF 2021 新生赛]简简单单的逻辑

这是题目&#xff0c;下载后得到一个python文件,打开 解读代码&#xff1a; for i in range(len(list)):key (list[i]>>4)((list[i] & 0xf)<<4)result str(hex(ord(flag[i])^key))[2:].zfill(2)list[i]>>4&#xff1a;从列表中取数字同时高4位向右位…

《Discuz! X3.5开发从入门到生态共建》第3章 Discuz! X3.5 核心目录结构解析-优雅草卓伊凡

《Discuz! X3.5开发从入门到生态共建》第3章 Discuz! X3.5 核心目录结构解析-优雅草卓伊凡 3.1 系统核心目录结构 Discuz! X3.5采用模块化设计&#xff0c;主要目录结构如下&#xff1a; discuz_root/ ├─ api/ // API接口目录 ├─ config/ …

【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能

【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能 一、前言 图(1-1) HarmonyOS 系统提供的核心场景化视觉服务,旨在帮助开发者快速实现移动端文档数字化功能。 其核心能力包括:扫描合同、票据、会议记录并保存为 PDF 分享。拍摄课堂 PPT、书籍章…

Python_day43

DAY 43 复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 关于 Dataset 从谷歌图片中抓取了 1000 多张猫和狗的图片。问题陈述是构建一个模型&#xff0c;该模型可以尽可能准确地在图像…

STM32CubeDAC及DMA配置

STM32CubeDAC及DMA配置 一&#xff0c;问题1二&#xff0c;解决11&#xff0c;宏观思路CubeMX配置2&#xff0c;HAL_TIM_Base_Start(&htim6) 的作用1&#xff0c;作用1&#xff1a;使能TIM6的时钟并让它开始计数2&#xff0c;作用2&#xff1a;当 TIM6 溢出时&#xff0c;会…

行业案例 | OPPO借助Azure AI Speech国际服务实现音频文件智能转录

OPPO是全球领先的智能终端与移动互联网服务提供商&#xff0c;业务覆盖50余国&#xff0c;通过超40万销售网点和2500个服务中心与全球用户共享科技。作为软硬服一体化科技公司&#xff0c;OPPO以ColorOS为核心优化软件平台&#xff0c;为4.4亿月活用户打造智能操作系统&#xf…

基于 OpenCV 和 DLib 实现面部特征调整(眼间距、鼻子、嘴巴)

摘 要 本文介绍如何利用Dlib面部特征点检测和OpenCV图像处理技术&#xff0c;通过Python实现面部特征的精准调整。我们将以改变眼间距为例&#xff0c;演示包括地标检测、三角剖分变形等关键技术&#xff0c;该方法可扩展至嘴唇、眉毛等面部特征的调整。 技术栈 Python 3.8 …

spring-boot接入websocket教程以及常见问题解决

我们使用spring-boot接入websocket有三种方式&#xff1a;使用EnableWebSocket、EnableWebSocketMessageBroker以及ServerEndpoint&#xff0c;本文主要介绍使用ServerEndpoint方式的流程以及碰到的问题解决 接入方式 添加依赖 确保spring-boot-starter-websocket依赖 <d…