快速使用ollama搭建对话窗口项目

51 阅读1分钟

案例: 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()