当前位置: 首页 > news >正文

每天分钟,混剪视频Agent产出条爆款,单月变现位数(喂饭级教程)

哦凑型旨Streamlit 是一款专为数据科学家和机器学习工程师设计的 Python 库,可快速将数据脚本转换为交互式 Web 应用,无需前端开发经验,所以最近研究了一下,结合LangChain 1.0 实现了简单的智能问答前后端应用,大模型使用DeepSeek。

依赖库

streamlit:用于构建Web交互界面

langchain 及相关组件:处理LLM交互逻辑

python-dotenv:加载环境变量,比如加载存储在配置文件中的API KEY。

Highlight code

1. 初始化配置

# 加载环境变量

load_dotenv()

# 配置页面

st.set_page_config(

page_title="DeepSeek 问答应用",

page_icon="??",

layout="wide",

initial_sidebar_state="expanded"

)

使用 load_dotenv() 加载 .env 文件中的环境变量

st.set_page_config() 配置页面基本属性,包括标题、图标和布局

2. 页面UI构建

# 设置页面标题和说明

st.title("?? DeepSeek 智能问答应用")

st.markdown("使用 LangChain 1.0 和 Streamlit 构建的对话系统")

通过 st.title() 和 st.markdown() 设置页面标题和说明文字

3. 侧边栏配置

with st.sidebar:

st.header("配置选项")

# API 密钥配置

deepseek_api_key = st.text_input(

"DeepSeek API Key",

value=os.getenv("DEEPSEEK_API_KEY", ""),

type="password",

help="请输入您的 DeepSeek API Key"

)

# 清除对话历史按钮

if st.button("清除对话历史", type="secondary"):

st.session_state["messages"] = []

st.rerun()

使用 st.sidebar 创建侧边栏配置区域

提供API密钥输入框(密码类型),默认从环境变量获取

实现清除对话历史功能,通过操作 st.session_state 实现

4. 对话历史管理

# 初始化对话历史

if "messages" not in st.session_state:

st.session_state["messages"] = []

# 显示对话历史

for message in st.session_state["messages"]:

if isinstance(message, HumanMessage):

with st.chat_message("user"):

st.markdown(message.content)

elif isinstance(message, AIMessage):

with st.chat_message("assistant"):

st.markdown(message.content)

使用 st.session_state 存储对话历史,实现页面刷新后数据保留

区分用户消息(HumanMessage)和助手消息(AIMessage)并分别显示

5. 用户输入处理

user_input = st.chat_input("请输入您的问题...")

if user_input:

# 验证API密钥

if not deepseek_api_key:

st.error("请在侧边栏配置您的 DeepSeek API Key")

st.stop()

# 添加用户消息到会话历史

st.session_state["messages"].append(HumanMessage(content=user_input))

# 显示用户消息

with st.chat_message("user"):

st.markdown(user_input)

使用 st.chat_input() 获取用户输入

进行API密钥验证,确保调用模型前密钥已配置

将用户消息添加到历史记录并显示

6. AI响应生成

# 显示助手思考中状态

with st.chat_message("assistant"):

with st.spinner("正在思考..."):

chat_model=init_chat_model(model="deepseek:deepseek-chat")

# 创建提示模板

prompt = ChatPromptTemplate.from_messages([

("system", "你是一个智能助手,使用中文回答用户问题,保持友好和专业。"),

*st.session_state["messages"]

])

# 创建链

chain = prompt | chat_model | StrOutputParser()

try:

# 生成回答

response = chain.invoke({})

# 显示回答

st.markdown(response)

# 添加助手消息到会话历史

st.session_state["messages"].append(AIMessage(content=response))

except Exception as e:

st.error(f"请求失败: {str(e)}")

st.error("请检查您的API密钥或网络连接")

使用 st.spinner() 显示加载状态,提升用户体验

通过 init_chat_model() 初始化DeepSeek模型

使用LangChain 1.0的链(Chain)语法:prompt | chat_model | StrOutputParser()

异常处理确保错误时能友好提示用户

关键技术点

Streamlit 会话状态:利用 st.session_state 保存对话历史,实现状态管理

LangChain 1.0 链语法:采用新的管道运算符 | 构建处理流程

消息类型区分:使用 HumanMessage 和 AIMessage 区分不同角色的消息

API 密钥管理:支持环境变量和手动输入两种方式配置API密钥

错误处理:完善的异常捕获和用户提示

http://www.jsqmd.com/news/462323/

相关文章:

  • ccmusic-database/music_genre入门必看:PyTorch DataLoader在音频批处理中的内存优化技巧
  • Wan2.1-UMT5高帧率视频生成挑战:测试其在60FPS下的表现
  • 001 局域网其他电脑也能访问wsl服务
  • fft npainting lama镜像应用案例:电商图片去水印实战分享
  • 手机拍照偏色?5分钟搞懂AWB自动白平衡的底层原理与实战调优
  • SQLines数据库迁移工具:开发者避坑指南与问题解决方案
  • GLM-4.7-Flash惊艳效果展示:高精度中文摘要、法律条款解析与技术文档生成
  • 手把手教你用R语言绘制顺式元件热图+柱状图(附完整代码)
  • 机械设计场景实战:CLIP工具如何智能关联零件图与技术规范
  • 目标检测数据增强避坑指南:为什么YOLOv4最终选择了CutMix和Mosaic?
  • 2026防脱固发洗发水权威测评排行榜,口碑品牌推荐,成分实测+安全验证 - 资讯焦点
  • MogFace-large镜像使用:如何挂载本地目录实现检测图片自动持久化
  • 测试go语言函数和结构体
  • 鸿蒙应用开发从入门到实战(二十):ArkUI内置弹窗组件
  • Nanbeige4.1-3B应用场景:建筑设计AI助手——规范条文解读+材料用量估算+图纸描述生成
  • 南北阁 Nanbeige 4.1-3B 快速部署:Raspberry Pi 5(8GB)ARM64轻量级运行实测
  • 2026年探讨口碑好的商场绿植租赁服务公司,哪家更值得选 - 工业品网
  • 2026年售后完善的酒店绿植租赁公司,服务靠谱吗 - 工业品牌热点
  • SenseVoice-Small语音识别模型在在线教育平台中的应用实践
  • 利用FireRedASR-AED-L辅助C语言教学:学生代码讲解语音转注释
  • Qwen3-ASR-0.6B保姆级教程:解决‘服务无法访问’的5种排查方法
  • Qwen3-0.6B-FP8行业落地:跨境电商多语言客服响应系统部署实践
  • 增量式编码器信号处理避坑指南:eQEP正交解码的5个常见错误
  • 肺功能下降怎么恢复?2026护肺调理产品TOP10实测解析,成分、适用人群一文读懂 - 资讯焦点
  • 2026年能上门测量的移动阳光房厂家哪家好,鑫美脱颖而出 - 工业推荐榜
  • 咸鱼大量流出全新1TB英特尔MLC原厂正片颗粒固态U盘,号称全盘不掉速,引23万人次浏览,超五千人点想要,高级货还是智商税?
  • Qwen3-ForcedAligner-0.6B与AI智能体的协同工作流设计
  • StructBERT开源模型部署价值:相比商用API年省23万元,准确率提升4.2个百分点
  • ECG信号处理避坑指南:Python小波去噪时千万别忽略这个参数
  • 事件 表示已经发生的事情,需要通知其他模块进行处理 . 事件发布器 负责发布事件的对象 . 事件处理器 实际接收到通知并处理事件的对 ...