模型文件硬塞进 Git,GitHub 直接打回原形:使用Git-LFS管理大文件
醋孔啥投Streamlit 是一款专为数据科学家和机器学习工程师设计的 Python 库可快速将数据脚本转换为交互式 Web 应用无需前端开发经验所以最近研究了一下结合LangChain 1.0 实现了简单的智能问答前后端应用大模型使用DeepSeek。依赖库streamlit用于构建Web交互界面langchain 及相关组件处理LLM交互逻辑python-dotenv加载环境变量比如加载存储在配置文件中的API KEY。Highlight code1. 初始化配置# 加载环境变量load_dotenv()# 配置页面st.set_page_config(page_titleDeepSeek 问答应用,page_icon??,layoutwide,initial_sidebar_stateexpanded)使用 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,valueos.getenv(DEEPSEEK_API_KEY, ),typepassword,help请输入您的 DeepSeek API Key)# 清除对话历史按钮if st.button(清除对话历史, typesecondary):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(contentuser_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_modelinit_chat_model(modeldeepseek: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(contentresponse))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.coloradmin.cn/o/2408573.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!