案例: streamlit 输入框相关.
使用步骤: 1. 导包. import streamlit as st 2. 通过 模块名.功能名() 的方式调用. st.title(...)
import streamlit as st
from chat_utils import get_model_message, get_model_list, get_model_message_stream
from langchain.memory import ConversationBufferMemory
st.title('小吴求索')
model_list = tuple(get_model_list())
5. 聊天信息框.(chat_input)
select_value = st.selectbox('请选中模型', model_list)
6. 角色信息框.
with st.chat_message('user')
创建消息容器, 存储: 用户的信息.(user)
def render(): if 'memory' not in st.session_state: st.session_state.memory = ConversationBufferMemory
st.session_state.message_list = [{ 'role': 'assistant', 'content': '你好, 我是杭州小吴, 有什么能够帮助您的么?' }]
if 'message_list' not in st.session_state:
st.session_state.message_list = [{
'role': 'assistant',
'content': '你好, 我是杭州小吴, 有什么能够帮助您的么?'
}]
for i, item in enumerate(st.session_state.message_list):
with st.chat_message(item['role']):
st.markdown(item['content'])
def chat_box(): input_value = st.chat_input('请输入问题')
if input_value:
st.session_state.message_list.append({
'role': 'user',
'content': input_value
})
st.chat_message('user').markdown(input_value)
with st.spinner('宝,等一会吧.....'):
res = get_model_message(content=input_value, model_name=select_value)
if res:
st.chat_message('assistant').markdown(res)
st.session_state.message_list.append({
'role': 'assistant',
'content': res
})
创建消息容器, 存储: AI的信息.(assistant)
def chat_box_stream(): input_value = st.chat_input('请输入问题')
if input_value:
st.session_state.message_list.append({
'role': 'user',
'content': input_value
})
st.chat_message('user').markdown(input_value)
with st.chat_message('assistant'):
msg = st.empty()
full_res = ''
for chunk in get_model_message_stream(content=input_value, model_name=select_value):
full_res += chunk
msg.markdown(full_res+"|")
msg.markdown(full_res)
st.session_state.message_list.append({
'role': 'assistant',
'content': full_res
})
if __name__ == '__main__':
render()
chat_box_stream()