ollama -linux部署

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


安装对应的包

bash 复制代码
# linux 安装
 
curl -fsSL https://ollama.com/install.sh | sh
 
pip install ollama

pip install streamlit

启动ollama

bash 复制代码
 ollama serve

启动llama2大模型(新开一个终端)

c 复制代码
ollama pull llama2
ollama run llama2

python接口对话

bash 复制代码
import ollama
 
response = ollama.chat(model='llama2', messages=[
  {
    'role': 'user',
    'content': '为什么天空是蓝色的?',
  },
])
print(response['message']['content'])
bash 复制代码
天空呈现蓝色调是因为光线的特定波长被空气中的分子和微粒散射的结果。当阳光通过地球的大气层时,它包含了各种波长的光线,从紫色到红色。其中一部分蓝光和少量紫外线会穿过大气层到达我们的眼睛,而其他波长的光则会被大气的分子和悬浮在空气中的微粒(如氮气和氧气分子、臭氧和灰尘)散射。

散射过程遵循物理学中的瑞利-贾可夫定律,该定律指出当波长较短的电磁波(如蓝光)遇到气体分子的自由电子时,它们更有可能被偏转角度较大的方向散射出去;而波长较长的光线(如红光)则不太容易被散射。这就是为什么天空在日出和日落时会呈现出鲜艳的橙黄色,因为这时太阳光中的蓝色成分已经被大量散射了,而红色光线穿透大气层的能力相对较强。

此外,由于地球的自转,我们观察到的天空是左右不对称的。从地球上看向太空的方向(例如北方),蓝光会被更多地散射回来,因此天空看起来更蓝。而在南边,蓝光已经被更多的大气分子和灰尘吸收或反射了,所以天空的颜色会相对较暗。这种偏振效应也解释了为什么我们在夜晚看到的星空通常是黑暗的,而白天则是明亮的蓝色背景。

streamlit对话

app.py

bash 复制代码
# 引入streamlit UI库
import streamlit as st
# 引入 ollama
import ollama
# 获取ollama的模型列表
model_list = ollama.list()
# 设置默认模型名字为 llama2:7b-chat
if "model_name" not in st.session_state:
    st.session_state["model_name"] = "yi"
# 初始化聊天信息数组
if "messages" not in st.session_state:
    st.session_state.messages = []
# 设置边栏
with st.sidebar:
    # 侧边栏的标题
    st.subheader("Settings")
    # 下拉框   选择模型, 默认选中llama2
    option = st.selectbox(
        'Select a model',
        [model['name'] for model in model_list['models']])
    st.write('You selected:', option)
    st.session_state["model_name"] = option
# 页面标题  与llama聊天
st.title(f"Chat with {st.session_state['model_name']}")
# 遍历聊天数组
for message in st.session_state.messages:
    # 根据角色
    with st.chat_message(message["role"]):
        # 输出内容
        st.markdown(message["content"])

if prompt := st.chat_input("What is up?"):
    
    st.session_state.messages.append({"role": "user", "content": prompt})
    
    with st.chat_message("user"):
        st.markdown(prompt)
    
    with st.chat_message("assistant"):
        # 大模型返回后就清空输入框
        message_placeholder = st.empty()
        full_response = ""
        for chunk in ollama.chat(
            model=st.session_state["model_name"],
            messages=[
                {"role": m["role"], "content": m["content"]}
                for m in st.session_state.messages
            ],
            # 逐渐打出
            stream=True,
        ):
            if 'message' in chunk and 'content' in chunk['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})

再开一个终端,streamlit run app.py


bash 复制代码
[ollama模型](https://ollama.com/library)
[https://juejin.cn/post/7346919387351859234?share_token=2936809a-a663-4704-94f2-3c48d50d3ade]
[https://juejin.cn/post/7347667306460577843]
[https://zhuanlan.zhihu.com/p/679893306]
[https://zhuanlan.zhihu.com/p/686952702]
[https://sspai.com/post/85193#!]
[https://qwen.readthedocs.io/zh-cn/latest/run_locally/ollama.html]
[https://blog.csdn.net/weixin_40425640/article/details/136700562]
相关推荐
幸福指北37 分钟前
🚀 开源了,一个人 + AI 肝出一个 AI 终端 | AShell 技术分享
运维·人工智能·ai·终端
肥胖小羊2 小时前
微信社群自动化管理与防骚扰系统的设计与实现
运维·自动化
AI办公探索者3 小时前
仓储物流AI任务执行的技术拆解:从WMS自动化到多设备协同的落地路径
运维·人工智能·ai·自动化
longerxin20204 小时前
nano编辑器插入、编辑完整操作教程(Linux日志/配置专用)
linux·运维·编辑器
cesium vue5 小时前
nginx 流媒体配置
运维·nginx
木心术15 小时前
GitHub Actions自动化运维实战:从CI/CD到全链路DevOps
运维·自动化·github
糯米导航5 小时前
实践教程|搭建电商 AI 无限画布,实现百款商品主图自动化批量生成
运维·人工智能·自动化
朴马丁5 小时前
从制造到智造:PLM如何赋能企业研发创新
大数据·运维·人工智能·食品行业·流程行业plm·化工新材料行业·新能源材料行业
爱小黄5 小时前
使用docker搭建集群-使用 Docker 搭建 KingbaseES 集群
运维·docker·容器
zhougl9966 小时前
Gateway 和 Nginx 路由区别
运维·nginx·gateway