Linux操作,Ollama部署及AI应用开发
给虚拟机的Linux安装SSH服务(用于远程连接) 连接成功 Linux的目录结构 基础命令 命令基础格式 ls命令 参数的作用 …
给虚拟机的Linux安装SSH服务(用于远程连接)
- 打开终端,在虚拟机Linux桌面右键后点击 open in terminal
- 输入命令: sudo apt install openssh-server
- 执行命令 ip addr 查看IP地址
- 使用MobaXterm连接Linux


连接成功
Linux的目录结构


基础命令
命令基础格式

- command 命令本体,必写
- options可选选项,控制命令的细节
- parameter,可选参数,控制命令的指向目标
ls命令
ls [-a -l -h] [参数]
参数的作用
决定ls命令要查看的目标
ls / 查看根目录内容
ls /usr 查看/usr目录内容
-a选项
查看全部文件,包括隐藏文件,都显示
在Linux中以.开头的文件是隐藏文件和隐藏文件夹
-l选项
以列表形式查看内容
不用-l 以平铺形式查看
-h选项
以更容易理解的方式显示文件大小(以K M G为单位)
HOME目录
在Linux系统中每一个用户都有的专属文件夹,有全部操作权限
默认路径是:/home/用户名
比如用户名:caoyu则路径是:/home/caoyu
当前工作目录
终端软件当前所在的目录,可以通过pwd 命令查看
隐藏文件
以.开头的文件和文件夹是默认隐藏的需要用ls -a 的模式查看
cd命令
更改工作目录
语法:
cd 路径
- 绝对、相对路径都可以
pwd命令
查看当前的工作目录
语法:
pwd
没有选项、没有参数
相对、绝对路径
相对:以当前所在文件夹为路径起点- 绝对:以根目录所在文件夹为路径起点
路径符号
.,当前目录..,上一级目录~,用户的家目录-,上一次的目录
mkdir命令
语法:
mkdir [-p] 路径
功能:创建指定文件夹
-p连续创建多层级的文件夹,如mkdir -p 111/222/333
touch
功能:创建空文件
语法:
touch 文件路径
cat
功能:查看文件内容
语法:
cat 文件路径
more
功能:查看文件内容
语法:
more 文件路径
- 可以翻页查看,按空格翻页,按
q退出查看
cp
功能:复制文件和文件夹
语法:
cp -r 参数1 参数2
-r选项用于文件夹复制- 参数1 被复制的
- 参数2 要复制去的地方
mv
功能:移动文件和文件夹(Windows中的剪切)
语法:
mv 参数1 参数2
- 参数1 被移动的
- 参数2 要移动去的地方 如果不存在则改名
- 不需要
-r选项
rm
功能:删除文件和文件夹
语法:
rm [-r -f] 参数1 参数2 ... 参数N
- 参数,被删除的文件或文件夹
-r删除文件夹用-f强制删除(不提示,直接删除)
可以写rm -rf *.txt * 表示通配符,表示 删除全部以.txt结尾的
注意,不要以root用户执行:rm -rf /*
which
功能:查看在Linux系统中所有可执行的命令的文件本地所在。
在Linux系统中执行的命令,本身是一个程序,即一个程序文件。
语法
which 命令
find
功能:查找符合条件的文件所在
按文件名
语法:
find 起始路径 -name "被查找的文件名"
起始路径如果是
/表示全盘搜索。这样需要管理权限,即root权限。
可以通过执行:
sudo su -切换到root管理员用户去执行,- 或
sudo find ...在find命令前加入sudo临时获得管理员权限
被查找的文件名,支持通配符,如:
find / -name "test*"是在全盘搜索,以test开头的文件find / -name "*test"搜索以test结尾的文件find / -name "*test*"搜索包含test的文件
即,* == 任何 的结果都是True
按文件大小
语法:
find 起始路径 -size +|-n(k|M|G)
+表示大于,-表示小于n表示数字k M G表示大小单位,k KB M MB G GB
示例
+10k大于10KB-10M小于10MB+1G大于1G
grep
功能:在指定的内容(输入)中过滤包含关键字的行(仅保留包含关键字的行)
语法:grep [-n] "关键字" 输入内容
-n显示过滤后的内容,在原始输入内容中的行号
示例:
grep hello a.txt在a.txt文件中,过滤hello关键字(仅保留包含hello关键字的行)grep -n hello a.txt在a.txt文件中,过滤hello关键字(仅保留包含hello关键字的行),并显示行号
一般搭配管道符使用,如:
ls /usr/bin | grep gst查看/usr/bin下,带有gst关键字的内容
wc
功能:用来统计输入中的如:字节数量、字符数量、单词数量、行数量
语法:
wc [-c -m -l -w] 输入内容
-c统计字节m统计字符-l统计行-w统计单词数
如果不提供选项,则wc本身统计:字节、单词、行数
一般搭配管道符使用
管道符
功能:将管道符的左侧的结果,作为管道符右侧程序的输入。管道符本身是:|
示例
ls -l /usr/bin | wc -l将ls -l /usr/bin的结果作为wc命令的输入,含义就是:- 统计/usr/bin文件夹下的内容数量
管道符可以写多个,如下:
ls -l /usr/bin | grep gst | wc -l- 将
ls -l /usr/bin的结果作为grep gst的输入 - 将
ls -l /usr/bin | grep gst的结果作为wc -l的输入 - 含义:统计
/usr/bin下带有gst关键字的内容的数量
- 将
echo
功能:和Python的print一样,将内容输出到屏幕中。
语法:
echo 内容
反引号 `
在Linux中,被`包围的内容,将作为命令去执行。
如:
tail
功能:查看文件尾部或跟踪文件更改
语法:
tail [-f | -num] 文件路径
-f表示持续跟踪文件更改,如需退出按ctrl + c退出-num表示查看文件尾部多少行,默认是-10
head
功能:查看文件头部内容
语法:
head [-num] 文件路径
-num表示查看头部多少行,默认是-10
重定向符号
含义:将输出的内容重新定向到文件中记录 Linux中有2个:
>将符号左侧内容的结果,重新定向即覆盖写入右侧的文件中>>将符号左侧内容的结果,重新定向即追加写入右侧的文件中
如果右侧提供的文件不存在,则新建
vi/vim编辑器

VI编辑器是命令行下面的类似文本编辑器的程序,可以在命令行下完成文件的编辑。
有3个工作模式:
- 命令模式,可以输入各类快捷指令,如删除行、跳转光标等等
- 输入模式,可以正常输入你想要的内容,即开始编辑文件
- 底线命令模式,可以完成对整个文件的控制,如保持、退出等
语法:
vi 文件
即可进入vi编辑器界面
命令模式
当进入vi编辑器,就是命令模式,此模式下可以通过快捷键完成对文件内容的控制,如下:

输入模式
输入模式可以在这个模式下正常编写内容
如果要进入输入模式,必须在命令模式下,通过快捷键进入:
i在当前光标位置,开始编辑o在光标下一行开启新行进行编辑O在光标上一行开启新行进行编辑a在光标右侧开始编辑A在光标所在行的尾部开始编辑
一般就用:
i立刻编辑 或o下一行开始编辑
输入模式要回退到命令模式,按esc 即可
底线命令模式
可以对整个文件做控制。
进入方式为:在命令模式下,输入: 进入底线命令模式。
常见的控制指令有:
w保存更改q退出vi程序!强制(强制退出、强制保存)set nu显示文件行号
组合使用:
wq保存并退出q!忽略更改强制退出wq!强制保存并退出
apt
Linux系统的应用商店,在命令行模式下是:apt 命令
通过这个命令可以联网安装软件
语法:
apt install | remove 程序名 [-y]
必须联网
install安装程序remove删除程序-y可选,表示不要提示直接执行
此命令需要root权限,普通用户无权执行。
解决方式:
- 通过
sudo su -切换到root用户执行 - 通过
sudo apt install xxx以root权限执行这个命令- sudo 表示不切换用户,但是此命令以root身份执行
更换apt的网址为国内网站
专业说法:更换APT程序的源
国内有很多公司提供了镜像网站,使用和官方的完全一致,但是网络条件好非常多,常见有:阿里云源、163源、清华源等
步骤:
-
打开清华源官网:
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu -
选择Ubuntu版本,我们是
20.04,复制下图红框中的文本内容 -

-
备份原有文件,命令是:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak -
编辑文件:
sudo vim /etc/apt/sources.list将原有内容清空,粘贴刚刚在网站复制的文本,保存 -
执行
sudo apt update即可 -
后续的
apt命令将从清华大学网站下载内容
后台运行程序
命令:
nohup 你要执行的命令 >> 日志记录文件 2>&1 &
比如启动ollama命令:ollama serve 这个会前台运行(终端关闭或ctrl + c关闭后,程序会停止)
我们需要转入后台运行:
nohup ollama serve >> ollama.log 2>&1 &
nohup表示进入后台执行,linux自带程序>>将程序运行的日志记录到文件内2>&1 &将标准输出和标准错误都记录到日志文件内并后台执行
WSL 安装
首先先在Windows系统中完成了WSL 功能的开启

如果这个功能无法开启,请尝试更新Windows系统到最新
通过应用商店图形化安装即可,注意如果网络条件不好,可以用热点,大概消耗500MB流量。

打开提示这个,需要开启虚拟机平台特性
需要确认:
首次打开需要等待一会,如下图

之后可以设置用户名


自行设置密码,完成后即可使用。

如图一切完事。
通过命令提示符安装WSL Ubuntu发行版
- 打开命令提示符程序,执行
wsl --update即更新到最新版 - 执行命令查看有那些Linux可以装:
wsl --list --online - 执行命令安装:
wsl --install Ubuntu-20.04
AI大模型开发-聊天机器人重点笔记
Ollama 的部署
Ollama介绍
Ollama是一个开源软件,主要作用就是:部署大语言模型。
我们课上主要运行的模型就是:deepseek-r1:1.5b
Windows系统
找到资料中提供的:Ollama-setup.exe 双击打开后,点击Install 即可。

安装好后找到Ollama 软件运行,正常会在右下角出现图表,点击图表选择Settings

更改模型的安装目录即可。
MacOS系统
略
Linux系统
只需要在命令行下执行一条命令,如下:
curl -fsSL https://ollama.com/install.sh | sh
即可自动化完成安装。
开启系统代理
使用自己的:
export http_proxy="http://ip地址:端口"
export https_proxy="https://ip地址:端口"
使用老师的:
export http_proxy="http://192.168.40.85:7890"
export https_proxy="https://192.168.40.85:7890"
手动安装Ollama
- 下载安装包:
ollama-linux-amd64.tgz已经在课堂同步的资料文件夹中有 - 打开WSL Ubuntu,通过
cd /mnt找到你的Windows系统中存放这个安装包的地方 - 找到安装包后执行:
cp ollama-linux-amd64.tgz ~将这个安装包从Windows系统复制到Linux系统的用户家目录 - 回到家目录:
cd ~ - 解压Ollama:
sudo tar -xvf ollama-linux-amd64.tgz -C /usr(注意-C是大写的C) - 执行:
ollama serve启动- 或后台启动:
nohup ollama serve >> ollama.log 2>&1 &
- 或后台启动:
后续就可以正常用了。
运行模型
无论什么操作系统,都可以在终端中运行:
ollama run deepseek-r1:1.5b
即可运行1.5b参数的deepseek-r1蒸馏模型。
首次运行需要联网下载,大概1.1GB空间。
蒸馏模型
我们运行的模式都是蒸馏模型,即非完整模型。
蒸馏:按照需求进行模型提纯(保留核心网络并进行简化)
我们选择的1.5b参数就是蒸馏后的(提纯和简化),为了方便低性能设备的运行。
完整的DeepSeek模型,简单来说显卡不花个20W基本没啥体验。
模型运行是基于GPU(显卡),因为GPU特点:核多(并行计算能力超强)
- CPU:核心少,比如
i7-13650HX仅仅有20个核心,这些核心每一个都超强,CPU适合通用计算- GPU(显卡):核心超多,动辄上千的流处理器(核心),每个核心都垃圾(对比CPU),GPU适合做并行计算
因为模型的神经网络计算,一般来说是量大,而非计算难度高。
量大的计算,用显卡超爽(核多)
Ollama客户端命令
当安装好Ollama后就可以在命令行中运行ollama命令。
查看帮助
ollama --help
可以给出命令执行的帮助信息

启动Ollama
前台启动
ollama serve
后台启动(推荐)
nohup ollama serve >> ollama.log 2>&1 &
其它控制命令
运行模型:
ollama run 模型名称
ollama run deepseek-r1:7b
查看本地有那些模型
ollama list
查看当前正在运行的模型
ollama ps

查看模型的详细信息
ollama show 模型名称

复制一个模型
ollama cp 模型名称 新模型名称

删除模型(慎用)
ollama rm 模型名称

下载模型
ollama pull 模型名称
模型名称可以在Ollama官网查询你想要的

此命令,仅下载模型,并不会运行。
ChatBoxAI工具连接Ollama
我们可以安装ChatboxAI 软件在自己电脑中提供一个对话工具,和我们电脑的Ollama进行连接。
安装:略(找到安装包,一路下一步即可)
前置要求
使用ChatBoxAI软件之前,必须启动你电脑的Ollama
- 启动你Windows版的Ollama
- Windows的Ollama默认无法调用显卡的CUDA计算加速
- 或
WSL Linux版的Ollama都可以用(推荐使用WSL)- Linux下CUDA加速性能更好
配置

使用

Streamlit
Streamlit是一个Python的第三方库,可以通过很少的代码,开发功能丰富的网页应用。
安装
打开Windows系统的cmd ,运行:
pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
测试Streamlit
打开Windows系统的cmd ,运行:
streamlit hello
会自动打开一个网页,可以看到丰富的官方demo 效果。
看完了就可以关了,没啥用。
运行Python代码
使用streamlit编写的Python代码无法直接在PyCharm中执行,需要用cmd执行。
打开系统的命令提示符(CMD)程序,执行:
streamlit run python代码
session_state
Streamlit工具编写的网页会定期刷新,等同于每隔一段时间,重新执行整个Python代码。
比如:
import streamlit as st
st.....
st.....
d = {}
while True:
d[key] = xxx # 每次循环的Key 假设永不重复
我们代码写的无限循环,不停的给字典添加信息,但是这个字典能够记录的信息永远只有1个key
因为这段代码被Streamlit执行起来,相当于每隔一段时间都定期执行。
则每一次执行字典d 都会被赋值为空字典。原有记录信息会丢失。
如果想要在网页运行的过程中存储下来信息,可以用Streamlit内置的字典,这个字典将不会丢失内容。
即将代码改为:
import streamlit as st
st.....
st.....
while True:
st.session_state[key] = xxx # 每次循环的Key 假设永不重复
st.session_state 就是一个字典,我们用这个字典,记录的内容就不会丢失。
Python调用Ollama
Python有一个第三方库叫做:ollama
要注意我们现在电脑有2个Ollama:
- WSL Linux中运行的Ollama:
软件程序 - Python的第三方库Ollama
安装Ollama Python库
pip install ollama -i https://pypi.tuna.tsinghua.edu.cn/simple
使用Python调用Ollama
"""
演示使用Python调用Ollama进行模型对话
先确保Ollama已经启动
"""
import ollama
# 建立和Ollama的连接(代码和Ollama程序)
client = ollama.Client(host="http://127.0.0.1:11434")
# 准备用户的提问
prompt = input("请输入你的问题:")
# 封装要提问的格式
# [{"role":"user", "content": "提问的内容"}]
message = [{"role": "user", "content": prompt}]
# 调用ollama进行回答
result = client.chat(
model="deepseek-r1:7b", # 模型名
messages=message # 封装好的列表(内含提问信息)
)
# 只输出回答信息
print(result['message']['content'])
在云平台使用模型
获取云平台API KEY
需要在阿里云百炼平台注册账户,创建应用,创建API KEY
https://bailian.console.aliyun.com

如图点击新增应用,选择智能体应用。

获取API KEY

通过LangChain完成Python代码连接阿里云通义模型
pip安装库
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain-community -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install dashscope -i https://pypi.tuna.tsinghua.edu.cn/simple
示例
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain_community.llms import Tongyi
memory = ConversationBufferMemory(return_message=True)
def get_response(prompt, api_key):
model = Tongyi(model="qwen-max", api_key=api_key)
chain = ConversationChain(llm=model, memory=memory)
# 发送请求
response = chain.invoke({"input": prompt})
return response["response"]
if __name__ == '__main__':
print(get_response("请python 1-100的输出", "sk-fa5b080ac78b4323b13f733b50f1d5c0"))
抄一遍即可,无需理解代码含义,因为有很多基础知识还未学,目前仅仅体验一下。
Streamlit结合LangChain完成聊天机器人
"""
通过Streamlit完成聊天机器人页面开发
"""
import streamlit as st
import langchain_util as utils
# 添加标题
st.title("黑马聊天机器人(阿里云通义千问模型版)")
# 添加分割线
st.divider()
# 输出第一条消息 机器人欢迎语
if "message" not in st.session_state:
st.session_state["message"] = [{"role": "assistant", "content": "你好我是人工智能机器人,有什么可以帮到您!"}]
# st.session_state["message"].append({"role": "assistant", "content": "你好我是人工智能机器人,有什么可以帮到您!"})
# list.append({"role": "user", "content": "内容"})
# state["message"] = [ {"role": "user", "content": "内容"} , {"role": "user", "content": "内容"}]
# 每一个消息的对话分为2部分: 角色,内容
# 机器人 角色:assistant 内容:说的话
# 人 角色:user 内容:说的话
for message in st.session_state["message"]:
st.chat_message(message["role"]).write(message["content"])
# 用户输入 在页面下方添加用户输入栏
prompt = st.chat_input()
if prompt: # 如果prompt有内容 表示用户提问
# 首先将用户的提问在页面输出
st.chat_message("user").write(prompt)
# 把用户提问这个对话保存到session_state内
st.session_state["message"].append({"role": "user", "content": prompt})
# 调用AI回答
with st.spinner("正在思考中..."): # 转圈圈的加载框
res = utils.get_response(prompt, "sk-fa5b080ac78b4323b13f733b50f1d5c0")
# 将AI回答信息写到屏幕上
st.chat_message("assistant").write(res)
# 将AI回答的消息记录到session_state内
st.session_state["message"].append({"role": "assistant", "content": res})
抄一遍即可