张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 关于

Streamlit 聊天窗体界面

2025-06-18 张子阳 分类: 大语言模型

上一篇 《Streamlit 页面处理流程》中简要介绍了 Streamlit 页面的处理流程,接下来我们就看一下如何使用 Streamlit 构建一个常见的AI聊天窗体界面。这篇文章的代码源自Streamlit官方文档(Build a basic LLM chat app),额外使用了container空间。

Streamlit有专门用于构建聊天窗口的widget,例如 chat_input、chat_message、st.write_stream 等,下面的代码,综合使用了这些widget,模拟了一个常见的AI聊天窗体界面。

import streamlit as st import random import time def response_generator(): response = random.choice( [ "Hello there! How can I assist you today?", "Hi, human! Is there anything I can help you with?", "Do you need help?", ] ) for word in response.split(): yield word + " " time.sleep(0.05) st.title("Simple chat") chat_container = st.container() with chat_container: if "msgs" not in st.session_state: st.session_state.msgs = [] for msg in st.session_state.msgs: with st.chat_message(msg["role"]): st.markdown(msg["content"]) prompt = st.chat_input("有什么问题,尽管提问吧(shift + enter换行)") if prompt : with st.chat_message("user") : st.markdown(prompt) st.session_state.msgs.append({ "role": "user", "content": prompt }) with st.chat_message("assistant"): response = st.write_stream(response_generator()) st.session_state.msgs.append({"role":"assistant", "content":response})

感谢阅读,希望这篇文章能给你带来帮助!