本篇主要记录大模型学习第一阶段的内容,包括大模型基础概念、私有化部署、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_durationPrompt 处理耗时
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 应用

这也是大模型应用开发的一个基础起点。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐