Ollama 本地开源大模型聊天应用
点击关注公众号,“技术干货”及时达!前言如果您想在localhost部署并运行开源大模型,可以试试Ollama。本文我们将使用Ollama部署,并通过API的方式调用大模型。
安装Ollama提供了python和js两种开发包,对前端开发者挺友好的,用它!
pip install ollama
npm install ollama
应用场景聊天接口
多模态
模型我们可以通过 library (ollama.com) 查看Ollama支持的模型清单,有gemma、llama2、mistral、mixtral等,非常的丰富。
比如我们要使用的开源模型是llama2, 我们可以使用如下代码下载(首次)并运行模型
# 拉取模型
ollama pull llama2
# 运行模型
ollama run llama2
接口如果我们使用过openai的一些接口, 那么就了解文本补全、聊天、嵌入等。ollama提供了REST API来提供了请求接口。
生成式接口curlhttp://localhost:11434/api/generate-d'{
"model":"llama2",
"prompt":"Whyistheskyblue?"
}'
聊天接口curlhttp://localhost:11434/api/chat-d'{
"model":"mistral",
"messages":[
{"role":"user","content":"whyistheskyblue?"}
]
}'
嵌入curlhttp://localhost:11434/api/embeddings-d'{
"model":"all-minilm",
"prompt":"Hereisanarticleaboutllamas..."
}'
实战我们将结合Streamlit和Ollama,开发一个聊天应用。
Streamlit[1]是一款Web开发框架,适用于python快速完成一些大模型、数学科学计算的UI开发。
我们还会用到 Build a ChatGPT-like App | Streamlit 代码快速构建类chatgpt应用。
#引入streamlitUI库
importstreamlitasst
#引入ollama
importollama
#获取ollama的模型列表
model_list=ollama.list()
#设置默认模型名字为llama2:7b-chat
if"model_name"notinst.session_state:
st.session_state["model_name"]="llama2:7b-chat"
#初始化聊天信息数组
if"messages"notinst.session_state:
st.session_state.messages=[]
#设置边栏
withst.sidebar:
#侧边栏的标题
st.subheader("Settings")
#下拉框选择模型,默认选中llama2
option=st.selectbox(
'Selectamodel',
[model['name']formodelinmodel_list['models']])
st.write('Youselected:',option)
st.session_state["model_name"]=option
#页面标题与llama聊天
st.title(f"Chatwith{st.session_state['model_name']}")
#遍历聊天数组
formessageinst.session_state.messages:
#根据角色
withst.chat_message(message["role"]):
#输出内容
st.markdown(message["content"])
ifprompt:=st.chat_input("Whatisup?"):
st.session_state.messages.append({"role":"user","content":prompt})
withst.chat_message("user"):
st.markdown(prompt)
withst.chat_message("assistant"):
#大模型返回后就清空输入框
message_placeholder=st.empty()
full_response=""
forchunkinollama.chat(
model=st.session_state["model_name"],
messages=[
{"role":m["role"],"content":m["content"]}
forminst.session_state.messages
],
#逐渐打出
stream=True,
):
if'message'inchunkand'content'inchunk['message']:
full_response+=(chunk['message']['content']or"")
message_placeholder.markdown(full_response+"▌")
message_placeholder.markdown(full_response)
st.session_state.messages.append({"role":"assistant","content":full_response})
image.png拉取模型ollama pull
image.png除了llama2, 我们再拉取下orca-mini
列出当前所有模型ollama list
image.png运行streamlitstreamlit run app.py
image.png总结Ollama在本地部署开源大模型,真心方便且靠谱。我在红米老爷机上运行了, 可以。结合streamlit 快速将Web搭建了出来。参考资料Ollama 官网Ollama Python开发包实例 | 基于本地部署开源大模型的Streamlit聊天应用ollama-libraries-example/python/app.py at main · sugarforever/ollama-libraries-example (github.com)Reference[1]https://streamlit.io/: https://link.juejin.cn/?target=https%3A%2F%2Fstreamlit.io%2F
点击关注公众号,“技术干货”及时达!
阅读原文
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。 项目经理在线