外观
构建聊天机器人实战

准备工作
安装
shell
pip install ollama streamlit测试是否安装成功
shell
import ollama
import streamlit
# 填写运行Ollama的主机IP,本机填写127.0.0.1
client = ollama.Client("http://192.168.0.129:11434")
print(client.list())
print(streamlit.__version__)Ollama的API使用
基本信息
python
import ollama
client = ollama.Client("http://192.168.0.129:11434")
# 查看模型
print(client.list())
# 查看运行中的模型
print(client.ps())
# 查看模型详情
print(client.show("glm4:latest"))对话
python
# 连续对话
while True:
msg = input("输入:")
if not msg:
break
res = client.chat(
model="glm4:latest",
messages=[{"role": "user", "content": msg}],
)
print(res["message"]["content"] + "\n")构建聊天机器人
前端界面
python
import streamlit as st
import time # 模拟思考延迟
st.title("我的聊天机器人")
st.divider()
# 获取用户输入
user_input = st.chat_input("请输入消息...")
# 初始化对话历史,显示历史消息
if "messages" not in st.session_state:
st.session_state.messages = []
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.write(msg["content"])
if user_input:
# 添加用户消息到历史,并显示
st.session_state.messages.append({"role": "user", "content": user_input})
with st.chat_message("user"):
st.write(user_input)
# 模拟助手思考过程(显示加载动画)
with st.chat_message("assistant"):
with st.spinner("思考中..."):
time.sleep(3) # 模拟延迟
# 简单回复逻辑(实际可对接LLM)
assistant_response = f"你说的是:{user_input},我收到了!"
st.write(assistant_response)
# 添加助手回复到历史
st.session_state.messages.append(
{"role": "assistant", "content": assistant_response}
)后端使用Ollama
python
import ollama
import streamlit as st
client = ollama.Client("http://192.168.0.129:11434")
st.title("我的聊天机器人")
st.divider()
user_input = st.chat_input("请输入消息...")
# 初始化对话历史,显示历史消息
if "messages" not in st.session_state:
st.session_state.messages = []
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.write(msg["content"])
if user_input:
# 添加用户消息到历史,并显示
st.session_state.messages.append({"role": "user", "content": user_input})
with st.chat_message("user"):
st.write(user_input)
# 助手思考回答过程
with st.chat_message("assistant"):
with st.spinner("思考中..."):
res = client.chat(model="glm4:latest", messages=st.session_state.messages)
assistant_response = res["message"]["content"]
st.write(assistant_response)
# 添加助手回复到历史
st.session_state.messages.append(
{"role": "assistant", "content": assistant_response}
)