大模型入门学习笔记(一):大模型基础与 Ollama 本地部署
本篇主要记录大模型学习第一阶段的内容,包括大模型基础概念、私有化部署、Ollama 的安装与使用、常用命令、HTTP/API 基础,以及使用 ChatBox 快速搭建本地 ChatBot。
一、大模型与聊天机器人基础
1.1 什么是聊天机器人
聊天机器人(ChatBot)是一种基于人工智能和自然语言处理技术开发的软件程序,可以通过文字或语音与用户进行交互。
最基本的工作流程可以理解为:
用户输入问题
↓
系统理解用户输入
↓
模型生成回答
↓
将结果返回给用户
目前比较常见的聊天机器人包括:
-
DeepSeek
-
Kimi
-
通义千问
-
豆包
-
讯飞星火
一个较完整的聊天机器人通常包含以下几种能力:
自然语言理解
能够理解用户输入的文字或语音,并从中提取用户意图和关键信息。
例如:
用户:北京今天天气怎么样?
系统需要识别出:
地点:北京
时间:今天
任务:查询天气
对话管理
聊天机器人需要保存一定的上下文,保证多轮对话能够正常进行。
例如:
用户:北京有什么好玩的?
AI:故宫、天坛、颐和园等。
用户:第二个在哪里?
这里模型需要知道“第二个”指的是前面提到的“天坛”。
个性化交互
模型还可以根据用户之前提供的信息、历史对话或者业务场景生成不同回答。
执行任务
聊天机器人不仅可以回答问题,还可以进一步用于:
-
客户服务
-
知识问答
-
教育辅导
-
文本生成
-
信息提取
-
数据查询
-
调用其他工具
1.2 一个 AI 聊天机器人由什么组成
本次学习中,一个基础聊天机器人的整体架构可以简单理解为:
用户
↓
前端页面
↓
后端程序
↓
大语言模型
课程中使用的技术组合为:
Streamlit + Ollama + Qwen
其中:
Streamlit
主要负责前端页面,例如:
-
输入框
-
发送按钮
-
聊天记录
-
模型回答展示区域
Ollama
负责模型的运行与管理,例如:
-
下载模型
-
加载模型
-
运行模型
-
删除模型
-
提供 API
Qwen
是真正负责自然语言理解与内容生成的大语言模型。
整个调用过程大致为:
用户输入问题
↓
Streamlit
↓
Python 后端
↓
Ollama
↓
Qwen
↓
模型生成回答
↓
返回前端页面
1.3 什么是大模型
这里所说的大模型,主要指大型人工智能基础模型。
其中比较常见的是:
Large Language Model,LLM,大语言模型。
大语言模型通过大量文本数据进行训练,从而获得理解和生成自然语言的能力。
例如:
输入:
请解释一下什么是 HTTP。
模型:
HTTP 是一种用于客户端和服务器之间进行通信的协议……
需要注意的是,大语言模型并不是简单从数据库中查询固定答案,而是根据输入内容以及训练过程中学习到的参数生成结果。
1.4 大模型的主要类型
按照模型处理的数据类型,可以分成多种类型。
1.4.1 自然语言处理模型
主要处理:
文本
可以完成:
-
文本生成
-
问答
-
翻译
-
摘要
-
信息提取
-
情感分析
-
代码生成
例如:
GPT
BERT
T5
Qwen
DeepSeek
1.4.2 计算机视觉模型
主要处理:
图片
视频
常见任务包括:
-
图像分类
-
目标检测
-
图像生成
-
图像理解
-
语义分割
例如:
Stable Diffusion
ViT
DALL·E
CLIP
1.4.3 语音模型
语音模型主要处理声音数据。
典型任务包括:
语音识别 ASR
语音合成 TTS
语音翻译
语音增强
说话人识别
声音事件识别
其中:
ASR:
语音 → 文字
TTS:
文字 → 语音
例如:
Whisper
WaveNet
1.4.4 多模态模型
多模态模型可以同时处理多种类型的数据,例如:
文本
图片
音频
视频
例如用户可以:
上传一张图片
↓
输入:
“请告诉我这张图片中有什么?”
↓
模型同时理解图片和文字
↓
生成回答
这种能力通常称为:
多模态理解。
1.5 大模型的应用场景
目前常见的大模型应用包括:
-
智能客服
-
文本生成
-
机器翻译
-
知识问答
-
代码生成
-
图像识别
-
目标检测
-
教育辅助
-
企业知识库
-
AI 助手
例如在企业中,可以进一步构建:
企业知识库
技术支持系统
智能客服
内部 AI 助手
二、大模型私有化部署
2.1 为什么需要私有化部署
直接使用在线 AI 服务虽然方便,但是对于企业来说,还需要考虑一个非常重要的问题:
数据安全。
企业内部通常会存在大量敏感数据,例如:
源代码
合同
客户资料
财务数据
产品设计
内部文档
业务数据
如果这些内容直接发送给外部服务,就需要考虑:
-
数据安全
-
隐私保护
-
企业内部安全策略
-
行业合规要求
因此产生了大模型私有化部署的需求。
所谓私有化部署,可以简单理解为:
模型运行在自己的电脑
或者:
模型运行在企业自己的服务器
例如:
员工电脑
↓
企业内部服务器
↓
本地大模型
而不是完全依赖:
员工电脑
↓
互联网
↓
第三方 AI 服务
2.2 常见本地大模型运行方案
课程中主要介绍了两种工具:
Ollama
LM Studio
其中本次重点学习:
Ollama。
Ollama 更适合:
-
学习
-
开发
-
测试
-
本地运行模型
-
快速验证 AI 项目
如果以后进入真正的大规模生产环境,例如:
大量用户
高并发请求
多个 GPU
大模型服务集群
则通常还需要进一步学习:
vLLM
Kubernetes
多 GPU 推理
模型服务化
三、Ollama 基础与模型管理
3.1 什么是 Ollama
Ollama 是一个用于简化大型语言模型本地运行和管理的工具。
官网:
https://ollama.com/
使用 Ollama 后,可以比较方便地完成:
-
下载模型
-
运行模型
-
管理模型
-
切换模型
-
删除模型
-
查看模型信息
-
通过 API 调用模型
传统模型部署可能需要手动处理:
模型权重
Python 环境
依赖库
CUDA
推理框架
配置文件
而 Ollama 对这些过程进行了进一步封装。
例如运行一个模型,可以直接执行:
ollama run qwen2
3.2 Ollama 的主要特点
统一管理模型
Ollama 可以统一管理:
模型权重
模型配置
模型参数
Modelfile
模型切换方便
可以比较方便地在不同模型之间切换,例如:
Qwen
DeepSeek
Llama
模型库丰富
官方模型库:
https://ollama.com/library
多平台支持
支持:
Windows
macOS
Linux
提供 API
Ollama 不仅可以通过命令行运行模型,还能够提供 API。
这意味着后续可以使用:
Python
Java
JavaScript
Web 应用
调用本地模型。
3.3 安装 Ollama
安装完成以后,可以通过以下命令检查:
ollama -v
如果能够正常显示版本号,例如:
ollama version is xxx
说明 Ollama 已经安装成功。
3.4 Ollama 常用客户端命令
Ollama 常用命令主要有:
| 命令 | 作用 |
|---|---|
ollama run | 运行模型 |
ollama pull | 下载模型 |
ollama list | 查看本地模型 |
ollama ps | 查看当前运行的模型 |
ollama show | 查看模型信息 |
ollama rm | 删除模型 |
3.4.1 run:运行模型
基本格式:
ollama run MODEL[:VERSION]
例如:
ollama run qwen2:0.5b
运行以后即可进入交互式对话。
>>> 你好
你好!有什么可以帮助你的吗?
如果不指定版本:
ollama run qwen2
一般相当于:
ollama run qwen2:latest
还可以直接进行一次性提问:
ollama run qwen2:0.5b 你好
模型回答后直接退出。
如果需要查看运行统计信息:
ollama run qwen2:0.5b --verbose
可以看到:
total duration
load duration
prompt eval count
prompt eval duration
prompt eval rate
eval count
eval duration
eval rate
其中:
-
prompt eval count:输入 Token 数量 -
eval count:模型输出 Token 数量 -
eval rate:模型生成速度
3.4.2 pull:下载模型
基本格式:
ollama pull 模型名称
例如:
ollama pull qwen2
指定具体版本:
ollama pull qwen2:0.5b
模型名称可以在 Ollama 官方模型库中查询。
3.4.3 list:查看本地模型
执行:
ollama list
也可以简写:
ollama ls
示例:
NAME ID SIZE
qwen2:latest e0d4e1163c58 4.4 GB
deepseek-coder:latest 3ddd2d3fc8d2 776 MB
qwen2:0.5b 6f48b936a09f 352 MB
常见字段:
| 字段 | 含义 |
|---|---|
| NAME | 模型名称 |
| ID | 模型 ID |
| SIZE | 模型大小 |
| MODIFIED | 最近修改时间 |
3.4.4 ps:查看正在运行的模型
执行:
ollama ps
可以查看:
-
当前正在运行什么模型
-
模型占用多少资源
-
使用 CPU 还是 GPU
-
模型还会在内存中保留多久
3.4.5 show:查看模型信息
基本格式:
ollama show MODEL
例如:
ollama show qwen2
常用参数:
ollama show qwen2 --license
查看模型许可证。
ollama show qwen2 --modelfile
查看 Modelfile。
ollama show qwen2 --parameters
查看模型参数。
ollama show qwen2 --system
查看 System Prompt。
ollama show qwen2 --template
查看 Prompt 模板。
3.4.6 rm:删除模型
执行:
ollama rm qwen2:0.5b
删除以后可以再次执行:
ollama list
检查模型是否还存在。
四、Ollama 对话与模型参数
4.1 常用对话指令
执行:
ollama run qwen2
以后,会进入 Ollama 的交互式对话环境。
输入:
/?
可以查看帮助。
常见指令:
| 指令 | 作用 |
|---|---|
/? | 查看帮助 |
/show | 查看模型信息 |
/clear | 清除上下文 |
/load | 切换模型 |
/save | 保存当前模型 |
/set | 设置模型参数 |
/bye | 退出 |
4.2 查看和清理上下文
使用:
/show info
可以查看当前模型的一些基本信息,例如:
Family
Parameter Size
Quantization Level
如果需要清除当前聊天历史,可以执行:
/clear
例如:
用户:
给我出一道 Java List 单选题。
AI:
……
用户:
再出一道。
这里模型能够理解“再出一道”,是因为前面的对话仍然存在于上下文中。
执行:
/clear
以后,当前上下文会被清除。
4.3 切换与保存模型
聊天过程中可以直接切换模型:
/load deepseek-coder
也可以保存当前模型:
/save test
之后可以直接运行:
ollama run test
4.4 常用生成参数
执行:
/set parameter
可以查看模型支持的参数。
比较重要的包括:
temperature
top_k
top_p
num_ctx
seed
num_predict
repeat_penalty
temperature
控制回答的随机性。
可以简单理解为:
temperature 低
→ 输出更加稳定、保守
temperature 高
→ 输出更加随机、多样
top_k
限制模型每一步生成时参与选择的候选 Token 数量。
top_k 小
→ 候选范围较小
top_k 大
→ 候选范围更大
top_p
按照累积概率限制候选 Token。
可以简单理解为:
top_p 越低
→ 输出通常越集中
top_p 越高
→ 输出通常更加多样
num_ctx
控制上下文窗口大小。
例如:
num_ctx 4096
上下文越大,模型能够参考的历史信息通常也越多。
seed
设置随机种子。
例如:
seed 42
固定 Seed 有助于提高重复实验时结果的一致性。
num_predict
控制最大生成 Token 数量。
例如:
num_predict 128
repeat_penalty
用于降低模型重复生成相同内容的概率。
4.5 JSON 输出与统计信息
可以设置:
/set format json
模型会按照 JSON 格式返回结果,例如:
{
"response": "你好,请问有什么可以帮助你的吗?"
}
关闭:
/set noformat
JSON 对后续程序开发比较重要,因为结构化数据比普通文本更加方便解析。
如果执行:
/set verbose
还可以输出:
total duration
load duration
prompt eval count
prompt eval duration
prompt eval rate
eval count
eval duration
eval rate
这些指标后续在模型性能测试中会经常使用。
五、HTTP 与 API 基础
5.1 什么是 HTTP
HTTP 全称:
HyperText Transfer Protocol。
可以简单理解为:
客户端与服务器之间进行通信的一套规则。
例如浏览器访问网站:
浏览器
↓ HTTP 请求
服务器
↓ HTTP 响应
浏览器
5.2 GET 与 POST
HTTP 中最常见的请求方法包括:
GET
POST
GET
一般用于获取数据,例如:
-
获取文章
-
查询数据
-
获取用户信息
POST
一般用于向服务器提交数据,例如:
-
登录
-
提交表单
-
上传内容
-
发送聊天信息
大模型聊天接口通常需要提交:
模型名称
用户问题
聊天历史
生成参数
因此通常会使用:
POST
5.3 HTTP 请求组成
一个 HTTP 请求通常包括:
请求方法
URL
Headers
Body
例如:
POST /api/chat
请求头:
Content-Type: application/json
请求体:
{
"model": "qwen2",
"messages": [
{
"role": "user",
"content": "你好"
}
]
}
5.4 HTTP 状态码
常见状态码:
| 状态码 | 含义 |
|---|---|
| 200 | 请求成功 |
| 302 | 临时重定向 |
| 404 | 请求资源不存在 |
| 500 | 服务器内部错误 |
| 502 | 网关收到无效响应 |
可以暂时简单记成:
2xx
请求成功
4xx
通常表示客户端请求存在问题
5xx
通常表示服务器端存在问题
5.5 什么是 API
API 全称:
Application Programming Interface。
可以简单理解为:
一个程序提供给其他程序调用功能的接口。
例如 Ollama 启动以后,可以提供:
/api/chat
其他程序按照规定格式发送 HTTP 请求,就可以调用 Ollama 中的大模型。
因此:
命令行调用
更适合:
人直接操作
而:
API 调用
更适合:
程序自动调用
六、Ollama API
6.1 Chat API
Ollama 的聊天接口为:
POST /api/chat
一个基础请求示例:
{
"model": "qwen2.5:0.5b",
"messages": [
{
"role": "user",
"content": "你好"
}
],
"stream": true
}
其中最重要的是:
model
messages
6.2 messages 与角色
messages 用于保存聊天消息。
例如:
{
"role": "user",
"content": "你好"
}
常见角色包括:
system
user
assistant
system
用于设置模型身份或行为。
{
"role": "system",
"content": "你是一名 Python 教师。"
}
user
代表用户输入。
{
"role": "user",
"content": "解释一下列表。"
}
assistant
代表模型之前的回答。
{
"role": "assistant",
"content": "Python 中的列表是一种……"
}
完整多轮对话可能类似:
[
{
"role": "system",
"content": "你是一名 Python 教师"
},
{
"role": "user",
"content": "什么是列表?"
},
{
"role": "assistant",
"content": "列表是 Python 中的一种数据结构……"
},
{
"role": "user",
"content": "那元组呢?"
}
]
这也是实现大模型多轮对话的重要方式之一。
6.3 stream 流式输出
API 中还有一个重要参数:
"stream": true
表示:
流式输出。
也就是:
模型生成一点
↓
返回一点
↓
继续生成
↓
继续返回
在聊天界面中表现出来,就是文字不断出现。
如果关闭流式输出,则需要等待模型生成完成以后再一次性返回结果。
6.4 API 返回结果
Ollama 返回的数据中除了模型回答,还可能包含大量运行指标,例如:
{
"model": "llama3.1",
"message": {
"role": "assistant",
"content": "..."
},
"done": true,
"total_duration": 14452649821,
"load_duration": 21370256,
"prompt_eval_count": 213,
"eval_count": 25
}
其中比较重要的包括:
| 字段 | 含义 |
|---|---|
prompt_eval_count | 输入 Token 数 |
eval_count | 输出 Token 数 |
total_duration | 总耗时 |
load_duration | 模型加载耗时 |
prompt_eval_duration | Prompt 处理耗时 |
eval_duration | 模型输出耗时 |
这些数据以后可以用于:
-
模型性能测试
-
模型速度对比
-
推理性能监控
6.5 使用 Apifox 测试 API
在正式写代码之前,可以使用 Apifox 直接测试 Ollama API。
Apifox 可以用于:
-
API 调试
-
API 文档
-
Mock
-
自动化测试
测试时可以直观看到:
URL
Method
Headers
Body
Response
Status Code
例如测试:
POST /api/chat
请求:
{
"model": "qwen2.5:0.5b",
"messages": [
{
"role": "user",
"content": "你好"
}
],
"stream": false
}
如果最终返回:
HTTP 200
同时获得模型回答,则说明:
客户端
↓
Ollama API
↓
本地模型
这条调用链已经成功打通。
七、ChatBox + Ollama 搭建本地 ChatBot
7.1 为什么还需要 ChatBox
使用 Ollama 时,可以直接在命令行中进行聊天:
ollama run qwen2
但是命令行并不像 ChatGPT、DeepSeek 这样的网页聊天界面。
因此可以使用:
ChatBox
作为前端。
整个架构变成:
ChatBox
↓
Ollama API
↓
本地大语言模型
7.2 ChatBox 是什么
ChatBox 是一个 AI 对话客户端。
可以提供:
-
聊天界面
-
模型切换
-
历史记录
-
参数配置
-
图片和文档交互
-
本地模型接入
-
多种 AI 平台接入
使用 ChatBox 后,不需要立即自己开发前端,就能够快速获得一个相对完整的聊天界面。
7.3 ChatBox 接入 Ollama
整体流程可以概括为:
安装 Ollama
↓
下载模型
↓
运行 Ollama
↓
安装 ChatBox
↓
配置 Ollama
↓
选择模型
↓
开始聊天
最终的结构就是:
┌──────────────┐
│ 用户 │
└──────┬───────┘
↓
┌──────────────┐
│ ChatBox │
│ 前端界面 │
└──────┬───────┘
↓ HTTP
┌──────────────┐
│ Ollama │
│ 模型服务 │
└──────┬───────┘
↓
┌──────────────┐
│ Qwen / Llama │
│ DeepSeek 等 │
└──────────────┘
到这里,就已经完成了一个最基础的:
本地 AI 聊天机器人。
八、本阶段学习总结
8.1 大模型、Ollama 和 ChatBox 的关系
这几个概念非常容易混淆。
可以简单理解成:
Qwen / DeepSeek / Llama
↓
模型
Ollama
↓
模型运行与管理工具
ChatBox
↓
聊天客户端
三者组合起来就是:
用户
↓
ChatBox
↓
Ollama
↓
Qwen / DeepSeek / Llama
8.2 本地运行不等于训练模型
执行:
ollama pull qwen2
本质上是在:
下载已经训练完成的模型
然后:
在本地进行推理
它和:
从零开始训练一个大模型
是两个完全不同的过程。
8.3 API 是 AI 应用开发的重要基础
直接运行:
ollama run qwen2
主要解决:
人与模型聊天
而 Ollama 提供:
POST /api/chat
以后,就可以让:
Python
Java
Web 网站
APP
企业系统
调用模型。
可以把 AI 应用开发简单理解为:
大模型
+
API
+
业务程序
=
AI 应用
8.4 Ollama 命令速查
| 操作 | 命令 |
|---|---|
| 查看版本 | ollama -v |
| 下载模型 | ollama pull qwen2 |
| 运行模型 | ollama run qwen2 |
| 查看模型 | ollama list |
| 查看运行模型 | ollama ps |
| 查看模型信息 | ollama show qwen2 |
| 查看模型参数 | ollama show qwen2 --parameters |
| 查看模板 | ollama show qwen2 --template |
| 删除模型 | ollama rm qwen2 |
对话中常用:
| 指令 | 作用 |
|---|---|
/? | 查看帮助 |
/show | 查看模型信息 |
/clear | 清除上下文 |
/load | 切换模型 |
/save | 保存模型 |
/set | 修改参数 |
/bye | 退出 |
8.5 本阶段知识路线
整个 Day01 的知识可以最终整理为:
聊天机器人是什么
↓
什么是大模型
↓
大模型有哪些类型
↓
为什么需要私有化部署
↓
什么是 Ollama
↓
下载和运行模型
↓
Ollama 模型管理
↓
模型参数与上下文
↓
HTTP 基础
↓
API 基础
↓
Ollama /api/chat
↓
ChatBox 接入 Ollama
↓
搭建本地 ChatBot
后续继续学习 Python 后,就可以逐渐把 ChatBox 替换成自己编写的应用:
Python
↓
Ollama API
↓
大语言模型
再进一步可以继续学习:
聊天机器人
企业知识库
RAG
Agent
AI 助手
企业 AI 应用
这也是大模型应用开发的一个基础起点。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)