欢迎光临
我们一直在努力

Streamlit(十五)- API 参考文档(八)- 聊天交互组件

这里写目录标题

  • 一、聊天交互组件(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)

在这里插入图片描述

赞(0)
未经允许不得转载:171主机测评 » Streamlit(十五)- API 参考文档(八)- 聊天交互组件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址