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

article/2025/6/30 12:14:02

🚀实现视频脚本生成器

视频文本生成器

在这里插入图片描述

📚目录

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

一、⛳设计思路

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

  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 | modelcontent_chain = script_content | model# 调用获取真正标题title = title_chain.invoke({"video_object": video_object}).content# 调用获取真正内容content = content_chain.invoke({"title": title, "duration": video_length}).contentreturn title, content

2.4🚀前端

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

import streamlit as st #前端库
from backend import catch_contentst.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.hkcw.cn/article/TVZldmEmOF.shtml

相关文章

BFS每日刷题

目录 P1332 血色先锋队 173. 矩阵距离 P1162 填涂颜色 P1506 拯救oibh总部 P2895 [USACO08FEB] Meteor Shower S P3395 路障 P1332 血色先锋队 #include <iostream> #include <cstring> #include <queue> using namespace std; int dis[600][600]; in…

中国城市规模指数(1992-2023)

1816 中国城市规模指数(1992-2023) 数据简介 中国城市规模指数&#xff0c;参考丁从明等&#xff08;2020&#xff09;的做法&#xff0c;通过中国夜间灯光数据&#xff0c;提取其中各城市夜间灯光值大于等于22的区域取其平均值&#xff0c;再取其自然对数即为城市规模指数数…

基于贝叶斯优化神经网络的光伏功率预测综述

基于贝叶斯优化神经网络的光伏功率预测综述 一、贝叶斯优化的基本原理与核心组件 贝叶斯优化&#xff08;Bayesian Optimization, BO&#xff09;是一种基于概率模型的全局优化方法&#xff0c;特别适用于高成本评估的黑盒函数优化问题。其核心由代理模型和采集函数构成&…

【Zephyr 系列 4】串口通信进阶:打造自己的 AT 命令框架

&#x1f9e0;关键词&#xff1a;Zephyr、UART、串口通信、AT命令、Shell、RTOS &#x1f4cc;适合人群&#xff1a;希望开发设备控制协议、调试接口、CLI 命令的嵌入式开发者 &#x1f3af; 本篇目标 使用 Zephyr 提供的 UART API 与 Shell 模块 实现一套可扩展的 ATCMD 风格…

Docker 镜像原理

目录 操作系统基础 Union FS(联合文件系统) 再看 Docker 镜像是什么 镜像实现原理 docker 镜像加载原理 docker 是操作系统层的虚拟化&#xff0c;所以 docker 镜像的本质是在模拟操作系统。我们先看下操作系统是什么。 操作系统基础 操作系统由&#xff1a;进程调度子系统、…

仓颉语言---Socket编程

一、什么是Socket编程&#xff1f; 1.定义 Socket&#xff08;套接字&#xff09;可以被理解为网络上两个进程之间通信的端点。它是网络通信的抽象表示&#xff0c;封装了底层网络协议的复杂性&#xff0c;为应用程序提供了一个简单统一的接口。 Socket 编程是一种网络编程范式…

格密码-LWE问题

格密码是一种备受关注的 PQC 算法&#xff0c;其安全性基于最坏情况下格问题的困难性&#xff0c;它是来自于 Regev 密码系统和 Lyubashevsky-Peikert-Regev 密码系统的思想。 2022 年&#xff0c;NIST 完成了 PQC 第三轮标准化过程&#xff0c;共有四种候选算法被选中进行标准…

力扣刷题Day 67:N 皇后(51)

1.题目描述 2.思路 方法1&#xff08;自己写的传统型回溯&#xff09;&#xff1a;将第一行的皇后依次放置在0 ~ n - 1上&#xff0c;可以发现0 ~ (⌊n / 2⌋ - 1)上的放置方案与⌈n / 2⌉ ~ (n - 1)上的放置方案是对称的&#xff0c;此外&#xff0c;如果n是奇数的话还需额外…

超级 AI 助手进阶攻略:Reflection 模式,开启 Agent 智能飞跃之旅

反思之言&#xff1a; 你有没有注意到&#xff0c;同样是AI&#xff0c;有些能帮你写代码、做决策&#xff0c;甚至聊人生&#xff1b;而有些却连基本的问题都答不对&#xff1f;这背后其实有一个关键差异&#xff1a;它会不会“反思”自己。 所谓Reflection&#xff08;反思…

[RoarCTF 2019]Easy Calc

查看源代码 <!--Ive set up WAF to ensure security.--> <script>$(#calc).submit(function(){$.ajax({url:"calc.php?num"encodeURIComponent($("#content").val()),type:GET,success:function(data){$("#result").html(<div …

【LLM】AI Agents vs. Agentic AI(概念应用挑战)

note AI Agent 已经可以自动感知环境、拆解任务、并灵活应对变化&#xff1b;与此同时&#xff0c;Agentic AI 又一次将“协作”提到新高度&#xff0c;让多个小团队般的 Agent 分工协作&#xff0c;共同实现“更高层次的目标”AI Agents 将在五个关键领域实现突破&#xff1a…

UE5 2D地图曝光太亮怎么修改

UE5 2D地图曝光怎么修改 在场景添加后期处理体积 修改后期处理体积Exposure曝光参数最大值最小值都改为0 勾选Infinite Extend 全地图范围应用此后期处理体积

pikachu通关教程-File Inclusion

文件包含漏洞 本地文件包含 http://127.0.0.1:1000/pikachu/vul/fileinclude/fi_local.php?filenamefile1.php&submit%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2 首先我们把file1改成file2&#xff0c;发现切换成功 那我们可不可以上传本地文件呢&#xff0c;答案是肯定的&a…

树莓派实验

一、在树莓派上完成驱动程序控制的 PWM LED灯。 1.PWM概述 PWM&#xff08;Pulse Width Modulation&#xff0c;脉宽调制&#xff09; 是一种通过调节信号脉冲宽度来模拟不同幅度模拟信号的技术。它通过周期性地改变信号的占空比&#xff08;即在一个信号周期内&#xff0c;高…

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

【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能 一、前言 图(1-1) HarmonyOS 的 ** 文档扫描控件(DocumentScanner)** 是 AI Vision Kit 提供的核心场景化视觉服务,旨在帮助开发者快速实现移动端文档数字化功能。 其核心能力包括:扫描合同、…

volatile,synchronized,原子操作实现原理,缓存一致性协议

文章目录 缓存一致性协议&#xff08;MESI&#xff09;volatile1. volatile 的作用2.volatile的底层实现3,volatile 实现单例模式的双重锁&#xff08;面手写&#xff09; synchronized1,基本用法2,可重入性3,Java对象头4,实现原理&#xff08;1&#xff09;代码块同步的实现&a…

Arch安装botw-save-state

devkitPro https://blog.csdn.net/qq_39942341/article/details/148387077?spm1001.2014.3001.5501 cargo https://blog.csdn.net/qq_39942341/article/details/148387783?spm1001.2014.3001.5501 megaton https://blog.csdn.net/qq_39942341/article/details/148388164?spm…

15-2021剑侠情缘2-各种修复完善+虚拟机单机端+外网服务端整理+文本教程+视频教程

任务完善 泉州三大BOSS 剑荡燕云 藏剑 通天顶 梁上等————–

css使用scoped之后样式失效问题

项目中的vue代码原本用的style标签来写css&#xff0c;现在想改成<style langscss scoped>&#xff0c;但是改完之后发现样式不对&#xff1a; 原来是&#xff1a; 将style改成scoped之后变成了&#xff1a;检查发现是之前定义的一些变量无法被识别&#xff0c;导致这些样…

大模型的开发应用(六):使用 Xtuner QLoRA 微调模型

这里写目录标题 0 前言1 Xtuner 简介1.1 主要特点1.2 核心功能1.3 优势与不足1.4 安装 2 数据集格式2.1 开源数据集2.2 自定义数据集2.3 数据集存放位置 3 微调大模型3.1 Qwen1.5的QLoRA配置文件3.2 修改配置文件&#xff08;1&#xff09;PART 1 基本设置&#xff08;2&#x…