大模型开发入门v3.0
🚀第 1 章/项目介绍与环境搭建

1.3 Ollama客户端指令和对话指令

📑 本页目录

1.3 Ollama客户端指令和对话指令#

学习目标#

  • 熟悉Ollama的客户端命令
  • 熟悉Ollama的对话命令

一、客户端命令详解#

Ollama客户端还提供了系列命令,来管理本地大模型,接下来就先了解一下相关命令: image-20250423132654067

run 命令#

run命令主要用于运行一个大模型,命令格式是:

    ollama run MODEL[:Version] [PROMPT] [flags]
    比如,运行通义千问命令:
    ollama run qwen2:0.5b
    

[:Version] 可以理解成版本,而版本信息常常以大模型规模来命名,可以不写,不写则模式成latest

    ollama run qwen2
    等同
    ollama run qwen2:latest
    

[PROMPT] 参数是用户输入的提示词,如果带有此参数则,run命令会执行了输入提示词之后即退出终端,即只对话一次。

    [root@bogon ~]#  ollama run qwen2:0.5b 您好
    您好!有什么问题我可以帮助您?
    
    [root@bogon ~]# 
    

[flags] 指定运行时的参数

    Flags:
          --format string      指定运行的模型输出格式 (比如. json)
          --insecure           使用非安全模,比如在下载模型时会忽略https的安全证书
          --keepalive string   指定模型在内存中的存活时间
          --nowordwrap         关闭单词自动换行功能
          --verbose            开启统计日志信息
    

例如,在启动时增加 --verbose参数,则在对话时,自动增加统计token信息:

    [root@bogon ~]# ollama run qwen2:0.5b --verbose
    >>> 您好
    欢迎光临,我可以为您提供帮助。有什么问题或需要帮助的地方?
    
    total duration:       1.229917477s
    load duration:        3.027073ms
    prompt eval count:    10 token(s)
    prompt eval duration: 167.181ms
    prompt eval rate:     59.82 tokens/s
    eval count:           16 token(s)
    eval duration:        928.995ms
    eval rate:            17.22 tokens/s
    

pull 命令#

查询模型名称的网站:https://ollama.com/

从远程下载一个模型,命令格式是:

    ollama pull MODEL[:Version] [flags]
    

[:Version] 可以理解成版本,但在这里理解成大模型规模,可以不写,不写则模式成latest

    ollama pull qwen2
    等同
    ollama pull qwen2:latest
    

[flags] 参数,目前只有一个--insecure参数,用于来指定非安全模式下载数据

    ollama pull qwen2 --insecure
    

list/ls 命令#

查看本地下载的大模型列表,也可以使用简写ls

    [root@bogon ~]# ollama list
    NAME                    ID              SIZE    MODIFIED       
    qwen2:latest            e0d4e1163c58    4.4 GB  10 minutes ago  
    deepseek-coder:latest   3ddd2d3fc8d2    776 MB  3 hours ago     
    qwen2:0.5b              6f48b936a09f    352 MB  8 hours ago     
    [root@bogon ~]# ollama ls
    NAME                    ID              SIZE    MODIFIED       
    qwen2:latest            e0d4e1163c58    4.4 GB  10 minutes ago  
    deepseek-coder:latest   3ddd2d3fc8d2    776 MB  3 hours ago     
    qwen2:0.5b              6f48b936a09f    352 MB  8 hours ago   
    

列表字段说明:

  • NAME:名称
  • ID:大模型唯一ID
  • SIZE:大模型大小
  • MODIFIED:本地存活时间

ps 命令#

查看当前运行的大模型列表,PS命令没其它参数

    [root@bogon ~]# ollama ps
    NAME                    ID              SIZE    PROCESSOR       UNTIL                   
    deepseek-coder:latest   3ddd2d3fc8d2    1.3 GB  100% CPU        About a minute from now 
    

列表字段说明:

  • NAME:大模型名称
  • ID:唯一ID
  • SIZE:模型大小
  • PROCESSOR:资源占用
  • UNTIL:运行存活时长

rm 命令#

删除本地大模型,RM命令没其它参数

    [root@localhost system]# ollama ls
    NAME                    ID              SIZE    MODIFIED     
    qwen2:latest            e0d4e1163c58    4.4 GB  16 hours ago    
    deepseek-coder:latest   3ddd2d3fc8d2    776 MB  19 hours ago    
    qwen2:0.5b              6f48b936a09f    352 MB  24 hours ago    
    [root@localhost system]# ollama rm qwen2:0.5b
    deleted 'qwen2:0.5b'
    [root@localhost system]# ollama ls
    NAME                    ID              SIZE    MODIFIED     
    qwen2:latest            e0d4e1163c58    4.4 GB  16 hours ago    
    deepseek-coder:latest   3ddd2d3fc8d2    776 MB  19 hours ago    
    [root@localhost system]# 
    

show 命令#

不用运行大模型,查看模型的信息,与之前所学的/show功能类似。

    [root@bogon ~]# ollama show -h
    Show information for a model
    
    Usage:
      ollama show MODEL [flags]
    
    Flags:
      -h, --help         查看使用帮助
          --license      查看模型的许可信息
          --modelfile    查看模型的制作源文件Modelfile
          --parameters   查看模型的内置参数信息
          --system       查看模型的内置Sytem信息
          --template     查看模型的提示词模版
    

例如,查看提示词模版:

    [root@bogon ~]# ollama show qwen2 --template
    {{ if .System }}<|im_start|>system
    {{ .System }}<|im_end|>
    {{ end }}{{ if .Prompt }}<|im_start|>user
    {{ .Prompt }}<|im_end|>
    {{ end }}<|im_start|>assistant
    {{ .Response }}<|im_end|>
    

二、对话指令详解#

在Ollama终端中提供了一系列指令,可以用来调整和控制对话模型: image-20250423132636391

/?指令#

/? 该指令主要是列出支持的指令列表

    [root@bogon ~]#  ollama run qwen2:0.5b
    >>> /?
    Available Commands:
      /set            Set session variables
      /show           Show model information
      /load <model>   Load a session or model
      /save <model>   Save your current session
      /clear          Clear session context
      /bye            Exit
      /?, /help       Help for a command
      /? shortcuts    Help for keyboard shortcuts
    
    Use """ to begin a multi-line message.
    

/bye 指令#

退出当前控制台对话, 快捷键: ctrl + d

    [root@bogon ~]#  ollama run qwen2:0.5b
    >>> 您好
    你好!有什么可以帮助您的吗?
    
    >>> /bye
    [root@bogon ~]# 
    

/show指令#

/show 指令:用于查看当前模型详细信息

>     [root@bogon ~]#  ollama run qwen2:0.5b
>     >>> /show
>     Available Commands:
>       /show info         查看模型的基本信息
>       /show license      查看模型的许可信息
>       /show modelfile    查看模型的制作源文件Modelfile
>       /show parameters   查看模型的内置参数信息
>       /show system       查看模型的内置Sytem信息
>       /show template     查看模型的提示词模版
>     

/show info 查看模型的基本信息

>     >>> /show info
>     Model details:
>     Family              qwen2     模型名称
>     Parameter Size      494.03M       模型大小
>     Quantization Level  Q4_0      模型量化级别
>     

/? shortcuts 指令#

查看在控制台中可用的快捷键

    >>> /? shortcuts
    Available keyboard shortcuts:
      Ctrl + a            移动到行头
      Ctrl + e            移动到行尾
      Ctrl + b            移动到单词左边
      Ctrl + f            移动到单词右边
      Ctrl + k            删除游标后面的内容
      Ctrl + u            删除游标前面的内容
      Ctrl + w            删除游标前面的单词
    
      Ctrl + l            清屏
      Ctrl + c            停止推理输出
      Ctrl + d            退出对话(只有在没有输入时才生效)
    

""" 指令#

""" 用于输入内容有换行时使用,如何多行输入结束也使用 """

    >>> """
    ... 您好
    ... 你是什么模型?
    ... """ 
    我是一个计算机程序,可以回答您的问题、提供信息和执行任务。请问您有什么问题或者指令想要我帮助您?
    

/clear 指令#

在命令行终端中对话是自带上下文记忆功能,如果要清除上下文功能,则使用/clear指令清除上下文内容,例如: 前2个问题都关联的,在输入/clear则把前2个问题的内容给清理掉了,第3次提问时则找不到开始的上下文了。

    >>> 请帮我出1java list的单选题 
    以下是一些关于Java List的单选题:
    
    1.Java中,List是哪一种数据结构?
    2. Java中的顺序存储方式(例如:使用数组)主要用来做什么?
    3. 一个列表对象可以包含哪些类型的元素?
    
    >>> 再出1道
    以下是一些关于Java List的单选题:
    
    4.Java中,List接口用于创建和操作集合。
    5. Java中的顺序存储方式(如:使用数组)的主要优势有哪些?
    6. 一个列表对象可以包含哪些类型?
    
    >>> /clear
    Cleared session context
    >>> 在出1道
    很抱歉,我无法理解您的问题。您能否提供更多的背景信息或者问题描述,以便我能更好地帮助您?
    

/load 指令#

load可以在对话过程中随时切换大模型

    >>> 你是什么大模型
    我是一个基于开放AI平台的模型,拥有一个强大的数学推理能力,并且在各种自然语言处理任务上都表现优秀。我可以回答您提出的问题,也可以提供与主题相关的信息和建议。如果您有任何问题或需要帮助,
    请随时告诉我!
    
    >>> /load deepseek-coder
    Loading model 'deepseek-coder'
    >>> 你是什么大模型
    我是由中国的深度求索(DeepSeek)公司开发的编程智能助手,名为 Deepseek Coder。我主要用于解答和协助计算机科学相关的问题、问题解决方案等任务。我的设计目标是提供最全面准确的高质量服务来帮
    助用户理解复杂的新技术或概念并迅速找到它们在实际应用中的实现方法或者原理所在的地方。
    

/save 指令#

可以把当前对话模型存储成一个新的模型

    >>> /save test
    Created new model 'test'
    

保存的模型存储在ollama的model文件中,进入下面路径即可看见模型文件test:

    [root@bogon library]# pwd
    /root/ollama/manifests/registry.ollama.ai/library
    [root@bogon library]# ls
    deepseek-coder  qwen2  test
    

/set 指令#

set指令主要用来设置当前对话模型的系列参数

    >>> /set
    Available Commands:
      /set parameter ...     设置对话参数
      /set system <string>   设置系统角色
      /set template <string> 设置推理模版
      /set history           开启对话历史
      /set nohistory         关闭对话历史
      /set wordwrap          开启自动换行
      /set nowordwrap        关闭自动换行
      /set format json       输出JSON格式
      /set noformat          关闭格式输出
      /set verbose           开启对话统计日志
      /set quiet             关闭对话统计日志
    

/set parameter ... 设置对话参数

    >>> /set parameter
    Available Parameters:
      /set parameter seed <int>             Random number seed
      /set parameter num_predict <int>      Max number of tokens to predict
      /set parameter top_k <int>            Pick from top k num of tokens
      /set parameter top_p <float>          Pick token based on sum of probabilities
      /set parameter num_ctx <int>          Set the context size
      /set parameter temperature <float>    Set creativity level
      /set parameter repeat_penalty <float> How strongly to penalize repetitions
      /set parameter repeat_last_n <int>    Set how far back to look for repetitions
      /set parameter num_gpu <int>          The number of layers to send to the GPU
      /set parameter stop <string> <string> ...   Set the stop parameters
    
Parameter Description Value Type Example Usage
num_ctx 设置上下文token大小. (默认: 2048) int num_ctx 4096
repeat_last_n 设置模型要回顾的距离以防止重复. (默认: 64, 0 = 禁用, -1 = num_ctx) int repeat_last_n 64
repeat_penalty 设置惩罚重复的强度。较高的值(例如,1.5)将更强烈地惩罚重复,而较低值(例如,0.9)会更加宽容。(默认值:1.1) float repeat_penalty 1.1
temperature 模型的温度。提高温度将使模型的答案更有创造性。(默认值:0.8) float temperature 0.7
seed 设置用于生成的随机数种子。将其设置为特定的数字将使模型为相同的提示生成相同的文本。(默认值:0) int seed 42
stop 设置停止词。当遇到这种词时,LLM将停止生成文本并返回 string stop "AI assistant:"
num_predict 生成文本时要预测的最大标记数。(默认值:128,-1 =无限生成,-2 =填充上下文) int num_predict 42
top_k 减少产生无意义的可能性。较高的值(例如100)将给出更多样化的答案,而较低的值(例如10)将更加保守。(默认值:40) int top_k 40
top_p 与Top-K合作。较高的值(例如,0.95)将导致更多样化的文本,而较低的值(例如,0.5)将产生更集中和保守的文本。(默认值:0.9) float top_p 0.9
num_gpu 设置缓存到GPU显存中的模型层数 int 自动计算
JSON格式输出
    >>> /set format json
    Set format to 'json' mode.
    >>> 您好
    {"response":"你好,欢迎光临,请问有什么我可以帮助您的吗?"}
    
    >>> /set noformat
    Disabled format.
    >>> 您好
    Hello! How can I assist you?
    

输出对话统计日志

    >>> /set verbose
    Set 'verbose' mode.
    >>> 您好
    您好!我需要您的信息,以便回答您的问题。请问您能告诉我更多关于这个主题的信息吗?
    
    total duration:       1.642906162s          总耗时
    load duration:        3.401367ms            加载模型数据耗时
    prompt eval count:    11 token(s)           提示词token消耗数量
    prompt eval duration: 196.52ms              提示词处理耗时
    prompt eval rate:     55.97 tokens/s        提示词处理速率
    eval count:           24 token(s)           响应token消耗数量
    eval duration:        1.304188s             响应处理耗时
    eval rate:            18.40 tokens/s        响应处理速率
    

小结#

Ollama中最常用客户端指令?

  • ollama list
  • ollama run 模型名

Ollama中常用的对话命令?

  • /bye指令 :退出当前控制台对话
  • /load指令:可以在对话过程中随时切换大模型
  • /clear指令:清除上下文内容