一 什么是大模型
1.1 大模型介绍
大模型, 一般也称为"大语言模型", 是一种基于深度学习技术训练出来的人工智能系统, 主要用于处理和生成人类语言。

大模型工作原理:通过学习大量文本,掌握了语言的规律和知识,然后根据输入的提示(prompt)生成相应的输出。
深度学习就是用层数较多(深)的人工神经网络从数据中学习输入与输出之间映射关系的算法,而人工神经网络是受生物神经网络的结构和功能启发下设计的计算模型。

用深度学习训练得到的网络就叫深度神经网络,它可以简单的看成一个函数,能够完成任何输入到输出的转换。
比如:
我们可以用它玩成语补全的游戏,输入成语的前三个字,让网络输出最后一个字(见图1)。
1.2 大模型的发展

关键进展:

1.3 大模型分类

二 大模型核心运行机制
预训练大(语言)模型主要是基于深度学习技术所研发,其核心开发的过程比较深奥,我们以简化的视角去理解大模型是如何训练出来的。
大模型的实现原理可以简单归纳为:三步走

2.1 学会说话
利用深度神经网络来训练语言模型,先收集尽可能多的文本,每次随机抽一段上文,让模型学会接着往下"背诵"。由于看过和背过的文字实在是太多了(实际训练使用了几乎所有能从各种渠道获得的文字和图书资源)模型就可以像模像样地说话了。

2.2 理解意图
简单的说就是理解用户的需求是什么。自然语音(人类语音)是非结构化的,以中文为例,同样的含义可以有不同的说法。通过训练,让大模型可以准确的识别用户的意图。并基于"给上文、补下文"的形式完成回答

2.3 反馈择优
对于某些问题,模型可能会生成带有偏见、歧视或者令人不适的回答。另外,之前提到过,对于同一个问题,模型能够生成多个不同的回答。这一步中我们让人们对同一问题的不同回答进行排序,然后采用强化学习算法进一步调整模型,使输出回答更符合人们的期望。

三 deepseek和蒸馏模型
3.1 deepseek介绍

公司简介:DeepSeek全称杭州深度求索人工智能基础技术研究有限公司,简称深度求索,成立于2023年7月,是幻方量化旗下的AI公司,专注于实现通用人工智能(AGI),具有深厚的软硬件协同设计底蕴。
DeepSeek共研发开源十余款模型,目前最受关注的有V3对话模型和R1推理模型,分别于2024年12月26日和2025年1月20日先后发布。从反映关注度的微信指数上可以看出,两次模型发布都造成了后续DeepSeek关注度的飙升,12月28日DeepSeek指数达到约6000万,1月31日达9.8亿;

OpenAI的o1模型性能曾在推理模型领域难逢敌手;
DeepSeek-R1模型,在AI模型基准能力的各大榜单中,得分与OpenAI o1模型不相上下;
DeepSeek R1 模型的出现,终结了中国AI落后的观点;
作为国产模型,DeepSeek对中文支持更好。
DeepSeek-R1的推理能力进入了第一梯队(媲美OpenAI o1),其训练和推理成本低(仅有OpenAI的十分之一)、速度快、技术全部开源;
DeepSeek打破了硅谷传统的"堆算力、拼资本"的大模型发展路径。
3.2 如何得到模型
很多的大模型是开源的,以deepseek为例,其r1模型就是开源的,任何人都可以下载得到它的模型。
https://github.com/deepseek-ai/DeepSeek-R1

我们可以直接下载,得到deepseek-r1模型,如1.5b参数的蒸馏模型下载地址:
https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B/tree/main

3.3 大模型的蒸馏
大模型的运行需要极高的硬件资源,通常都是服务器集群并挂载数量众多的GPU(显卡)。为了满足低性能设备的运行,可以对大模型进行蒸馏。
假设你有一个超强的老师(大模型),他能讲解很复杂的知识。你想把这些知识传授给一群学生(小模型)。为了让学生们能在不需要过多时间和资源的情况下,快速掌握老师的知识,你可以通过"蒸馏"这种方式,让学生们只学习最精华、最重要的部分。这样,学生虽然没有老师那样强大,但依然能做出优秀表现。
deepseek-r1蒸馏模型:

deepseek的v3、r1模型全部开源,任何人均可下载使用
四 模型的使用
聊天机器人架构

个人电脑与私有云部署架构:

学习步骤:

不管是个人电脑还是云平台,搭建聊天机器人的步骤为:
- 后端和模型部署
- 个人电脑,后端使用Ollama框架搭配deepseek-r1、qwen模型
- 云平台,后端使用LangChain框架搭配阿里云百炼平台、通义千问
- 前端部署,个人电脑或云平台均可使用Streamlit
我们还可以访问各个大模型官网开放的API,直接调用接口即可,如deepseek官网就开放了API接口https://www.deepseek.com/

需要先购买获取API KEY后,才能调用接口

4.1 使用测试工具调deepseek接口

stream:true代表流式输出,即一个字一个字的输出。false为非流式输出,即一次性输出全部内容。
role角色:
- system:告诉大模型,它是什么角色,它是谁
- user:我们自己,即提问者
- assistant:大模型回答者,即回答问题的角色,响应信息的角色

4.2 使用python代码调deepseek大模型的API
deepseek官网已经给出了调用案例,如下:

可以看到,基于openai规范来调deepseek即可,需要先安装第三方库openai

python如何安装第三方库呢?参考这里:python安装第三方库
我们先安装一下openai库

安装后,代码就不报错了

记得把代码里的APIKEY改为自己在deepseek官网申请下来的apikey。
运行:

五 Ollama简介
ollama:是一款旨在简化大型语言模型本地部署和运行过程的开源软件。
ollama提供了一个轻量级、易于扩展的框架,让开发者能够在本地机器上轻松构建和管理LLMs(大型语言模型)
通过ollama,开发者可以导入和定制自己的模型,无需关注复杂的底层实现细节。

ollama模型库
ollama 支持多种开源模型,涵盖文本生成、代码生成、多模态推理等场景。用户可以根据需求选择合适的模型,并通过简单的命令行操作在本地运行。
ollama 官方模型库: https://ollama.com/library


六 Windows系统部署Ollama
6.1 Windows系统安装Ollama
- 下载Ollama,Windows系统安装包:https://ollama.com/download
- 双击提前下载好的OllamaSetup.exe安装包,选择install,然后一直默认安装即可


win+R打开终端,输入ollama -v命令查看是否安装成功

- 默认安装后的目录:C:\Users\用户名\AppData\Local\Programs\Ollama
- 默认安装的模型目录:C:\Users\用户名\ .ollama
- 默认的配置文件目录:C:\Users\用户名\AppData\Local\Ollama
自定义安装
注意:
Ollama默认安装目录是C盘的用户目录,如果不希望安装在C盘的话(其实C盘如果足够大放C盘也没事),就不能直接双击安装了。需要通过命令行安装。
在OllamaSetup.exe所在目录打开cmd命令行,然后命令如下:
python
OllamaSetup.exe /DIR=你要安装的目录位置
如:
python
OllamaSetup.exe /DIR=D:/develop/ollama
配置环境变量
OK,安装完成后,还需要配置一个环境变量,更改Ollama下载和部署模型的位置。环境变量如下:
python
OLLAMA_MODELS=你想要保存下载的模型的目录
环境变量配置方式,配置如图:

6.2 部署deepseek大模型
通过https://ollama.com/library查找要使用的模型

6.3 部署qwen大模型
通过https://ollama.com/library查找要使用的模型

6.4 模型下载到哪里了?
默认安装路径: C:\Users\Lenovo.ollama\models

ollama常用命令
- ollama serve # 启动Ollama
- ollama create # 创建模型
- ollama show # 查看模型的详细信息
- ollama run # 运行一个模型
- ollama stop # 停止正在运行的模型
- ollama pull # 推送一个模型到远端
- ollama push # 拉取(下载)一个模型
- ollama list # 列出所有的模型
- ollama ps # 列出正在运行的模型
- ollama cp # 拷贝模型
- ollama rm # 删除模型
- ollama help # 查看帮助文档
七 WSl简介和安装
Linux是服务器领域最为知名的操作系统,企业级应用基本都会部署在Linux,包括大模型应用。所以,在Linux系统中部署和开发大模型是常态。

我们如果想要在Linux下部署和开发大模型,最主要的就是获得Linux环境。
7.1 WSL介绍
WSL(Windows Subsystem for Linux)是Win10系统推出的全新功能,它是用于Windows系统之上的Linux子系统,让我们可以在Windows环境下获得绝佳的Linux操作系统体验。可以在Linux环境下直接使用宿主机的CPU、内存、显卡等硬件,提供比传统虚拟机更好的硬件性能。它的作用很简单,可以在Windows系统中获得Linux系统环境,并完全直连计算机硬件,无需通过虚拟机虚拟硬件。

简而言之:
Windows10/11的WSL功能,可以无需单独虚拟一套硬件设备,就可以直接使用主机的物理硬件,构建Linux操作系统,并不会影响Windows系统本身的运行。
7.2 WSL部署
WSL是Windows10/11自带功能,需要开启,无需下载

点击确定后会进行部署,最后重启即可。
打开Windows应用商店

搜索Ubuntu

点击获取并安装

点击启动

输入用户名用以创建一个用户:

输入两次密码确认(注意,输入密码没有反馈,不用理会,正常输入即可)

至此,得到了一个可用的Ubuntu操作系统环境

7.3 安装Windows Terminal软件
Ubuntu自带的终端窗口软件不太好用,我们可以使用微软推出的:Windows Terminal软件,在应用商店中搜索terminal关键字,找到Windows Terminal软件下载并安装

使用:

再次打开Windows Terminal软件,即默认使用Ubuntu系统了(WSL)

八 Linux部署Ollama 并使用CUDA加速
8.1 CUDA简介
CUDA是英伟达(NVIDIA)推出的一种并行计算平台和编程模型。它允许开发者利用英伟达 GPU(图形处理单元)的强大计算能力来加速计算密集型任务,而不仅仅是用于图形渲染。即发挥显卡作用,使其不仅仅可以用来渲染图形,还可以做计算。

验证CUDA是否可用
WSL在安装好Ubuntu后,自动安装了显卡驱动以及CUDA,可以通过命令:nvidia-smi验证

如图
- 驱动版本560.94
- CUDA版本12.6
- 显存8G
等信息均正确识别,可以直接使用
8.2 Linux系统安装一键部署ollama
打开Ollama官网,https://ollama.com/download/linux,可以看到,只需要一行命令,即可在Linux系统中部署Ollama

但是一键直接安装很容易失败(网络问题),我们采用手动安装的模式

下载Ollama Linux系统安装包:https://ollama.com/download/ollama-linux-amd64.tgz
下载好安装包后,进入安装流程:
- 解压Ollama到/usr文件夹
sudo tar -xvf ollama-linux-amd64.tgz -C /usr
PS:WSL可以直接访问Windows文件系统
Windows系统的C、D等盘符映射在:/mnt/c /mnt/d 路径
如ollma安装包存放在D盘下,可以:cp /mnt/d/ollama-linux-amd64.tgz ~
复制到Ubuntu的用户HOME内,然后执行上述解压命令

- 启动ollama,执行命令
ollama serve,正常结果输出如下

cuda也可以使用
一切OK后,按ctrl+c退出ollama运行
我本地执行ollama serve报错了,如下:

这是因为我使用的是centos7.9,CentOS 7 及以下版本不支持 Ollama(通常 CentOS 7 仅支持 GLIBC 2.17,而 Ollama 需要 2.27+),验证系统版本和 GLIBC 版本
shell
# 查看系统版本
cat /etc/redhat-release # CentOS 7 会显示 "CentOS Linux release 7.x..."
# 查看 GLIBC 版本
ldd --version # 若显示 "ldd (GNU libc) 2.17",则版本过低
需要升级系统到centos8.x或9.x以上才能解决。或者使用docker来安装ollmam,具体步骤参考8.3章节
- 创建Ollama运行所用用户
bash
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)
- 配置Ollama为系统服务,方便启动、停止
创建新文件:sudo touch /etc/systemd/system/ollama.service
将右侧内容保存到上述文件内 - 执行如下命令生效
bash
sudo systemctl daemon-reload
- 命令使用
bash
sudo systemctl enable ollama 开启ollama开机自启
sudo systemctl disable ollama 关闭ollama开机自启
sudo systemctl start ollama 启动ollma
sudo systemctl status ollama 查看ollama运行状态
sudo systemctl stop ollama 停止ollama

- 启动Ollama查看运行状态
bash
sudo systemctl start ollama
sudo systemctl status ollama
- 下载模型文件(或第一次启动模型的时候,也会自动下载)
shell
ollama pull deepseek-r1:7b
ollama pull qwen2:7b
- 在命令启动模型使用
bash
ollama run deepseek-r1:7b
测试
java
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:7b",
"prompt":"解释一下量子计算的基本原理"
}'
8.3 docker安装ollama
拉取并运行 Ollama 的 Docker 镜像
shell
# 如果你的centos有GPU的话,执行如下命令下载镜像并启动容器
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# 如果你的centos没有GPU的话,上边命令会报错,需要执行如下命令下载镜像并启动容器
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
在ollmam里安装模型
shell
# 通过docker来安装deepseek或者其他模型
docker exec -it ollama ollama run deepseek-r1:1.5b
# 或者使用阿里的Qwen模型
docker exec -it ollama ollama run qwen2:7b
与模型交互

退出与大模型交互,可以使用ctrl+D快捷键。下次再次与大模型交互,还是使用如下命令即可
shell
# 通过docker来安装deepseek或者其他模型
docker exec -it ollama ollama run deepseek-r1:1.5b
# 或者使用阿里的Qwen模型
docker exec -it ollama ollama run qwen2:7b
运行指定模型
shell
# 后续运行命令
docker exec -it ollama ollama run deepseek-r1:1.5b
# 列出本地已有的模型
docker exec ollama ollama list
在宿主机验证大模型是否可以,执行如下命令
shell
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:7b",
"prompt":"解释一下量子计算的基本原理"
}'
结果如下:

九 Python开发环境部署
9.1 Python所需库的安装
WSL(Ubuntu)内置了Python(版本3.8),所以无需部署Python,但如果需要编写代码调用Ollama,需要安装Ollama库。
- 安装pip工具
sudo apt install python3-pip - 验证pip的使用
pip -V,注意V是大写字母 - 安装ollama库(用于Python调用Ollama)
pip install ollama - 安装Streamlit库(用于Python开发对话页面)
pip install streamlit



9.2 PyCharm连接WSL(Ubuntu)
IDE PyCharm内置WSL的支持,可以将Python解释器程序直接连接到WSL内。
实现:用Windows的PyCharm,在Linux上写代码,并在Linux上运行。
- 创建一个基于WSL的PyCharm工程

- 选择在WSL部署的PyCharm版本,以及选择工程路径


- 安装好后,可以打开此工程,点击如下工程名,同意用户协议

- 点击右下角的Python解释器,进入Interpreter Settings,确认解释器是Linux路径

- 创建Python代码文件,执行如下代码,如未报错则ollama和streamlit库可用。
请先启动Ollama服务(sudo systemctl start ollama)
python
import ollama
import streamlit
print(f"Ollama当前可用模型:{ollama.list()}")
print(f"streamlit版本:{streamlit.__version__}")

十 Ollama库的基础API使用
首先确认Ollama已经启动(sudo systemctl start ollama)
可以查看官方文档

如下:

我们主要关心"聊天"的接口

10.1 使用测试工具调用本地大模型
使用测试工具(postman或者apifox等),按照上边的案例进行测试

10.2 使用python代码调本地大模型
使用Python操作Ollama,最主要的一步是获得Ollama客户端对象,使用如下代码

当有了client对象后,可以使用client对象提供的方法,完成对Ollama的操作
client对象提供的操作API有
- list方法,列出可用模型 clent.list()
- show 方法,显示指定模型的详细信息 client.show('deepseek-r1:7b')
- ps方法,显示当前正在运行的模型 client.ps()
- chat方法,与模型进行对话,示例代码
python
response = client.chat(model='deepseek-r1:7b', messages=[{'role': 'user', 'content': '你是谁'}])
print(response['message']['content'])
如果使用Ollama库出现问题,可以对其进行异常捕获,捕获异常是:ollama.ResponseError
示例
python
model = 'xxx_model'
try:
response = ollama.chat(model)
except ollama.ResponseError as e:
print('Error:', e.error)
十一 Streamlit开发入门
11.1 Streamlit介绍
现在我们已经有了Ollama后端,同时也掌握了其Python的编程,接下来就是提供一个前端界面。
从可定制的角度分析,我们选择Streamlit框架用以实现所需前端界面。

Streamlit 是一个开源 Python 库。它旨在让数据科学家和工程师能够以最少的代码和配置,将他们的数据分析和模型展示转化为交互式的 Web 应用。Streamlit 的设计目标是简单易用,同时保持高度的灵活性和可定制性。官网地址: https://streamlit.io
它能在几分钟内把 Python 脚本变成可分享的网站。只需使用纯 Python ,无需前端经验。甚至,你只需要懂 markdown ,然后按照一定规则去做也能搞个网页出来。它还支持免费部署,感动到落泪。

需要先安装streamlit
python
# 安装streamlit
pip install streamlit
11.2 Streamlit示例程序
使用 st.title() 可以设置标题内容。
python
import streamlit as st
st.title('Python从入门到大神')
运行脚本:
python
streamlit run mypy.py

打开浏览器进行访问

11.3 Stremlit API入门
我们使用少量的Streamlit API即可开发出聊天WEB页面。
导包:import streamlit as st


总结:
Streamlit是一个Python框架库,可以快速构建可交互的网页。
构建交互网页常用API有:
- title,显示标题
- write,显示段落文本
- diviler,显示分割线
- chat_input,聊天输入框
- spinner,等待提示
- chat_message,消息容器
- chat_message.markdown,以markdown形式展示内容
Streamlit代码运行:streamlit run xxx.py
Streamlit运行后自动打开网页,自动无限循环执行用户代码
Streamlit支持markdown语法
streamlit 是支持使用 markdown 语法来写页面内容的,只需使用单引号或者双引号的方式将内容包起来,并且使用 markdown 的语法进行书写,页面就会出现对应样式的内容。
python
import streamlit as st
"# 1级标题"
"## 2级标题"
"### 3级标题"
"#### 4级标题"
"##### 5级标题"
"###### 6级标题"
效果:

十二 Streamlit开发对话网页
掌握了基础API后,现在可以开发一个基础的对话网页了

如图所示,可以完成多轮对话
- 用户可以提问
- 也可以输出回答(固定回答,后续替换为大模型回答)
基于API,可以由如下代码得到基础对话网页
python
import time
import streamlit as st
count = 1
st.title("测试对话网页")
prompt = st.chat_input("请输入问题")
if prompt:
st.chat_message("user").markdown(prompt)
with st.spinner("思考中..."):
time.sleep(3)
st.chat_message("assistant").markdown(f"我不会{count}")
count += 1

session_state的使用
Streamlit本质是无限循环执行用户代码,可以看到上述代码的count永远是1,同时历史会话被清除。
如果要保存上下文状态,可以使用Streamlit的session_state
session_state是一个字典,基于Key-Value形式,可以保存任意用户所需的内容

十三 Streamlit + Ollama开发聊天机器人界面
接下来我们让Streamlit聊天界面添加上Ollama的支持即可完成真正的AI聊天机器人开发

如图所示,将回答信息替换为基于Ollama获得的回答即可
十三 会话记忆
我们调用大模型接口,默认是没有会话记忆功能的。也就是说,你连续问两个或者多个问题,它不会把这些多个问题关联起来的,每一个问题对于大模型都是新的问题。但是在各个大模型官网使用对话功能的话,是有会话记忆功能的。
如:下边俩问题,AI就不能连起来思考

与AI大模型的交互本质是无状态的,每一次请求响应都是相互独立的。AI大模型本身没有真正的会话记忆能力
会话记忆-处理方案(会话历史滚雪球)

即,每次提问的时候,把上几次大模型的回答内容都带上。
通过测试工具进行测试:

可以看到,此时明显有了会话记忆功能。