本篇主要记录大模型学习第一阶段的内容,包括大模型基础概念、私有化部署、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 DeepSeek1.4.2 计算机视觉模型
主要处理:
图片 视频常见任务包括:
图像分类
目标检测
图像生成
图像理解
语义分割
例如:
Stable Diffusion ViT DALL·E CLIP1.4.3 语音模型
语音模型主要处理声音数据。
典型任务包括:
语音识别 ASR 语音合成 TTS 语音翻译 语音增强 说话人识别 声音事件识别其中:
ASR: 语音 → 文字TTS: 文字 → 语音例如:
Whisper WaveNet1.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 qwen23.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 test4.4 常用生成参数
执行:
/set parameter可以查看模型支持的参数。
比较重要的包括:
temperature top_k top_p num_ctx seed num_predict repeat_penaltytemperature
控制回答的随机性。
可以简单理解为:
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 128repeat_penalty
用于降低模型重复生成相同内容的概率。
4.5 JSON 输出与统计信息
可以设置:
/set format json模型会按照 JSON 格式返回结果,例如:
{ "response": "你好,请问有什么可以帮助你的吗?" }关闭:
/set noformatJSON 对后续程序开发比较重要,因为结构化数据比普通文本更加方便解析。
如果执行:
/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 POSTGET
一般用于获取数据,例如:
获取文章
查询数据
获取用户信息
POST
一般用于向服务器提交数据,例如:
登录
提交表单
上传内容
发送聊天信息
大模型聊天接口通常需要提交:
模型名称 用户问题 聊天历史 生成参数因此通常会使用:
POST5.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 messages6.2 messages 与角色
messages用于保存聊天消息。
例如:
{ "role": "user", "content": "你好" }常见角色包括:
system user assistantsystem
用于设置模型身份或行为。
{ "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 / Llama8.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 应用这也是大模型应用开发的一个基础起点。