使用streamlit搭建前端页面调用ollama
·
简单入门python使用pycharm调用ollama
前提:pycharm中执行窗口安装
streamlit
pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
ollama
pip install ollama -i https://mirrors.aliyun.com/pypi/simple/
且ollama运行且已经安装qwen,ds等大模型
基础使用
import streamlit as st
from numpy.ma.core import maximum_fill_value
st.title('标题')
st.divider()
# 设置用户名
user_name=st.text_input(label='请输入用户名',max_chars=10,key='username')
# 设置密码
password=st.text_input(label='请输入密码',max_chars=10,key='password',type='password')
# 设置年龄
age=st.number_input(label='请输入年龄',min_value=0,max_value=100,step=1,value=10,key='age')
flag = st.button(label='确定提交')
if flag:
st.success('用户点击了提交')
print(f'{user_name},{password},{age},{flag}')
模拟人机搭建对话框
import streamlit as st
from numpy.ma.core import maximum_fill_value
st.title('标题')
st.divider()
# 机器人默认发送一句话
st.chat_message('assistant').write('你好')
# 用户输入
user_content=st.chat_input('请输入你的问题')
if user_content:
st.chat_message('user').write(user_content)
#模拟自动回复功能
assistant_content='我是人机'
st.chat_message('assistant').write(assistant_content)
加入存储器保存多轮对话
import streamlit as st
from numpy.ma.core import maximum_fill_value
st.title('标题')
st.divider()
# 初始化存储器
if 'messages' not in st.session_state:
# 说明不再这里边,定义一个列表存储数据
st.session_state['messages'] = []
st.session_state['messages'].append({'role':'assistant','messages':'你好'})
# ==================================================================
# 遍历打印消息存储器将每一条消息都输出到页面中
for message_dict in st.session_state['messages']:
# 输出到页面
st.chat_message(message_dict['role']).write(message_dict['messages'])
# 用户输入
user_content=st.chat_input('请输入你的问题')
if user_content:
# 如果输入了将内容填充到机器人聊天窗口
st.chat_message('user').write(user_content)
#将输入的内容保存到消息存储器里
st.session_state['messages'].append({'role':'user','messages':user_content})
#模拟自动回复功能
assistant_content='我是人机'
st.chat_message('assistant').write(assistant_content)
#将机器人相应的数据保存到消息存储器
st.session_state['messages'].append({'role':'assistant','messages':assistant_content})
调用ollama
import streamlit as st
import ollama #确保启动ollama启动
#构建ollama客户端
client = ollama.Client(host='http://127.0.0.1:11434')
# 通过客户端操作ollama发起聊天
response = client.chat(model='deepseek-r1:1.5b',messages=[{'role':'user','content':'你好'}])
#获取结果
# content=response['message']['content']=
content=response.messages.content
print(content)
最终方案
import streamlit as st
import ollama #确保启动ollama启动
from fontTools.misc.cython import returns
from lief import exception
def chat_message(prompt):
try:
#构建ollama客户端
client = ollama.Client(host='http://127.0.0.1:11434')
# 通过客户端操作ollama发起聊天
response = client.chat(model='deepseek-r1:1.5b',messages=[{'role':'user','content':prompt}])
#获取结果
# content=response['message']['content']=
content=response.message.content
return content
except exception as e:
print(e)
return "服务器繁忙"
# # 程序的主要入口
# if __name__ == '__main__':
# print(chat_message("nihao"))
st.title('标题')
st.divider()
# 初始化存储器
if 'messages' not in st.session_state:
# 说明不再这里边,定义一个列表存储数据
st.session_state['messages'] = []
st.session_state['messages'].append({'role':'assistant','message':'你好'})
# ==================================================================
# 遍历打印消息存储器将每一条消息都输出到页面中
for message_dict in st.session_state['messages']:
# 输出到页面
st.chat_message(message_dict['role']).write(message_dict['message'])
# 用户输入
user_content=st.chat_input('请输入你的问题')
if user_content:
# 如果输入了将内容填充到机器人聊天窗口
st.chat_message('user').write(user_content)
#将输入的内容保存到消息存储器里
st.session_state['messages'].append({'role':'user','message':user_content})
#回复
assistant_content=chat_message(user_content)
#吧机器人回复的内容填充到聊天窗口
st.chat_message('assistant').write(assistant_content)
#将机器人相应的数据保存到消息存储器
st.session_state['messages'].append({'role':'assistant','message':assistant_content})
更多推荐

所有评论(0)