这里写目录标题
- 一、聊天交互组件(Chat elements)
-
- 1. `st.chat_input`:聊天输入框
-
- 1.1 核心参数
- 1.2 返回值
- 1.3 代码示例
- 2. `st.chat_message`:对话消息气泡容器
-
- 2.1 核心参数
- 2.2 返回值
- 2.3 代码示例
- 3. `st.status`:任务运行状态提示框
-
- 3.1 核心参数
- 3.2 常用方法
- 3.3 代码示例
- 4. `st.write_stream`:流式打字机文本输出
-
- 4.1 核心参数
- 4.2 返回值
- 4.3 代码示例
一、聊天交互组件(Chat elements)
1. st.chat_input:聊天输入框
专门用于对话场景的底部输入框,主页面调用时自动固定在页面底部;也可嵌入侧边栏、标签页、列等容器内实现内嵌聊天框,接收用户文本消息并返回输入内容。
1.1 核心参数
| placeholder | 输入框空白提示文字,默认Your message |
| max_chars | 限制最大输入字符数量,None无限制 |
| disabled | 是否禁用输入框 |
| on_submit | 提交消息时触发的回调函数 |
1.2 返回值
用户提交的文本字符串,无提交时返回None
1.3 代码示例
import streamlit as st
# 基础全局聊天框,固定页面底部
user_msg = st.chat_input("请输入你的问题")
if user_msg:
st.write(f"用户输入:{user_msg}")
# 侧边栏内嵌聊天框
with st.sidebar:
msg_box = st.container(height=300)
if prompt := st.chat_input("侧边栏对话"):
msg_box.chat_message("user").write(prompt)
msg_box.chat_message("assistant").write(f"回复:{prompt}")

2. st.chat_message:对话消息气泡容器
生成带有专属头像与样式的对话气泡容器,区分用户/AI两种预设样式,气泡内可写入文字、图表、表格等任意组件,是搭建LLM聊天页面的核心组件。
2.1 核心参数
| name | 消息发送方标识:user/human代表用户、ai/assistant代表AI助手,自定义字符串会显示首字符头像 |
| avatar | 自定义头像,支持图片路径、emoji、Material图标 |
2.2 返回值
容器对象,支持with上下文写法或直接链式调用组件
2.3 代码示例
import streamlit as st
import numpy as np
# 用户消息气泡
with st.chat_message("user"):
st.write("你好!")
st.line_chart(np.random.randn(30, 3))
# AI助手消息气泡
ai_msg = st.chat_message("assistant")
ai_msg.write("你好,我是AI助手")
ai_msg.bar_chart(np.random.randn(30, 2))

3. st.status:任务运行状态提示框
可折叠的任务进度状态容器,用于展示耗时任务(文件下载、模型推理、数据查询)的执行日志,自带运行/完成/错误三种状态图标,执行结束自动切换状态。
3.1 核心参数
| label | 状态框标题文字,支持Markdown |
| expanded | 初始化是否展开详情面板,默认False收起 |
| state | 初始状态:running(加载转圈) / complete(对勾完成) / error(叉号错误) |
3.2 常用方法
.update(label=…, state=…, expanded=…):动态修改标题、运行状态、展开状态
3.3 代码示例
import streamlit as st
import time
# 自动切换完成状态
with st.status("正在下载数据…") as task_status:
st.write("检索数据源…")
time.sleep(2)
st.write("找到文件链接")
time.sleep(1)
st.write("开始下载")
time.sleep(1)
# 手动更新状态为完成
task_status.update(label="下载完成", state="complete", expanded=False)

4. st.write_stream:流式打字机文本输出
接收生成器、迭代器、LLM流式返回对象,逐块输出内容,文字会自带逐字打印的打字机动画效果,完美适配大模型实时流式回复场景,同时支持流式输出表格、图表等组件。
4.1 核心参数
- stream:生成器函数、可迭代对象、OpenAI/LangChain等LLM流式响应对象
4.2 返回值
完整拼接后的文本字符串(纯文本流)或流式输出对象列表
4.3 代码示例
import streamlit as st
import time
# 模拟文字流式生成器
def llm_stream():
text = "这是一段模拟AI流式输出的文本内容"
for word in text:
yield word
time.sleep(0.05)
if st.button("开始流式输出"):
full_text = st.write_stream(llm_stream)
st.write("完整输出内容:", full_text)



