一、Ollama 基本概念

1.模型(Model)

在 Ollama 中,模型是核心组成部分。它们是经过预训练的机器学习模型,能够执行不同的任务,例如文本生成、文本摘要、情感分析、对话生成等。
Ollama 支持多种流行的预训练模型,常见的模型有:

  • deepseek-v3:深度求索提供的大型语言模型,专门用于文本生成任务。
  • LLama2:Meta 提供的大型语言模型,专门用于文本生成任务。
  • GPT:OpenAI 的 GPT 系列模型,适用于广泛的对话生成、文本推理等任务。
  • BERT:用于句子理解和问答系统的预训练模型。
  • 其他自定义模型:用户可以上传自己的自定义模型,并利用 Ollama 进行推理。

模型的主要功能:

  • 推理(Inference):根据用户输入生成输出结果。
  • 微调(Fine-tuning):用户可以在已有模型的基础上使用自己的数据进行训练,从而定制化模型以适应特定的任务或领域。

模型通常是由大量参数构成的神经网络,通过对大量文本数据进行训练,能够学习语言规律并进行高效的推理。
Ollama 支持的模型可以访问:https://ollama.com/library

2.任务(Task)

Ollama 支持多种 NLP 任务。每个任务对应模型的不同应用场景,主要包括但不限于以下几种:

  • 对话生成(Chat Generation):通过与用户交互生成自然的对话回复。
  • 文本生成(Text Generation):根据给定的提示生成自然语言文本,例如写文章、生成故事等。
  • 情感分析(Sentiment Analysis):分析给定文本的情感倾向(如正面、负面、中立)。
  • 文本摘要(Text Summarization):将长文本压缩为简洁的摘要。
  • 翻译(Translation):将文本从一种语言翻译成另一种语言。
3. 推理(Inference)

推理是指在已训练的模型上进行输入处理,生成输出的过程。
Ollama 提供了易于使用的命令行工具或 API,使用户可以快速向模型提供输入并获取结果。
推理是 Ollama 的主要功能之一,也是与模型交互的核心。
推理过程:

  • 输入:用户向模型提供文本输入,可以是一个问题、提示或者对话内容。
  • 模型处理:模型通过内置的神经网络根据输入生成适当的输出。
  • 输出:模型返回生成的文本内容,可能是回复、生成的文章、翻译文本等。

Ollama 通过 API 或 CLI 与本地模型交互,能够让用户轻松实现推理任务。

4. 微调(Fine-tuning)

微调是指在一个已预训练的模型上,基于特定的领域数据进行进一步的训练,以便使模型在特定任务或领域上表现得更好。
Ollama 支持微调功能,用户可以使用自己的数据集对预训练模型进行微调,来定制模型的输出。
微调过程:
1)准备数据集:用户准备特定领域的数据集,数据格式通常为文本文件或 JSON 格式。
2)加载预训练模型:选择一个适合微调的预训练模型,例如 LLama2 或 GPT 模型。
3)训练:使用用户的特定数据集对模型进行训练,使其能够更好地适应目标任务。
4)保存和部署:训练完成后,微调过的模型可以保存并部署,供以后使用。

微调有助于模型在处理特定领域问题时表现得更加精确和高效。

二、Ollama 相关命令

Ollama 提供了多种命令行工具(CLI)供用户与本地运行的模型进行交互。
我们可以用 ollama --help 查看包含有哪些命令:
在这里插入图片描述

1.服务管理

启动 Ollama 服务:ollama serve
停止 Ollama 服务:ollama stop

2.模型管理

拉取模型:ollama pull <model-name>
运行模型:ollama run <model-name>
列出本地模型:ollama list
列出正在运行模型:ollama ps
删除本地模型:ollama rm <model-name>

3.自定义模型

创建自定义模型:ollama create <custom-model-name> -f <Modelfile>
复制模型:ollama cp <source-model-name> <new-model-name>
推送自定义模型:ollama push <model-name>

4.模型信息

查看模型详细信息:ollama show <model-name>

5.会话管理

/save <model>:保存当前的会话状态或模型。可以将当前会话或模型的配置保存为一个文件,以便以后使用。
/load <model>:加载一个特定的模型或会话。可以指定一个模型的名称或路径来加载它。
/clear:清除会话上下文。这将删除当前会话中的所有历史记录或对话内容。
/bye:退出会话。这个命令将结束当前与模型的对话,并退出程序。
/set:用于设置会话参数和配置。例如,设置消息格式、启用或禁用历史记录等。具体参数包括/set system、/set template、/set history、/set nohistory、/set wordwrap、/set nowordwrap、/set format json、/set noformat、/set verbose和/set quiet等。
/?shortcuts 或 /help shortcuts:显示键盘快捷键的帮助信息,帮助更快速地进行操作。

三、Ollama模型交互

1. 命令行交互

运行模型:ollama run <model-name>
退出交互模式:输入 /bye 或按下 Ctrl+d 退出

2. 单次命令交互

使用管道输入:echo "你是谁?" | ollama run deepseek-coder
使用命令行参数:ollama run deepseek-coder "你是谁?"

3. 多轮对话

Ollama 支持多轮对话,模型可以记住上下文。

4. 文件输入

假设 input.txt 文件内容为:你是谁?
将 input.txt 文件内容作为输入:ollama run deepseek-coder < input.txt

5. 自定义提示词

通过 Modelfile 定义自定义提示词或系统指令,使模型在交互中遵循特定规则。
创建自定义模型,编写一个 Modelfile:

FROM deepseek-coder
SYSTEM "你是一个编程助手,专门帮助用户编写代码。"

然后创建自定义模型:ollama create runoob-coder -f ./Modelfile
运行自定义模型:ollama run runoob-coder

四、Ollama API 交互

Ollama 提供了基于 HTTP 的 API,允许开发者通过编程方式与模型进行交互。
Ollama 提供了以下主要 API 端点:

1.生成文本(Generate Text)

端点:POST /api/generate
功能:向模型发送提示词(prompt),并获取生成的文本。
请求格式

{
  "model": "<model-name>",  // 模型名称
  "prompt": "<input-text>", // 输入的提示词
  "stream": false,          // 是否启用流式响应(默认 false)
  "options": {              // 可选参数
    "temperature": 0.7,     // 温度参数
    "max_tokens": 100       // 最大 token 数
  }
}

响应格式

{
  "response": "<generated-text>", // 生成的文本
  "done": true                    // 是否完成
}

示例
在这里插入图片描述
流式响应示例
在这里插入图片描述

2.聊天(Chat)

端点:POST /api/chat
功能:支持多轮对话,模型会记住上下文。
请求格式

{
  "model": "<model-name>",  // 模型名称
  "messages": [             // 消息列表
    {
      "role": "user",       // 用户角色
      "content": "<input-text>" // 用户输入
    }
  ],
  "stream": false,          // 是否启用流式响应
  "options": {              // 可选参数
    "temperature": 0.7,
    "max_tokens": 100
  }
}

响应格式

{
  "message": {
    "role": "assistant",    // 助手角色
    "content": "<generated-text>" // 生成的文本
  },
  "done": true
}

示例
在这里插入图片描述

3.列出本地模型(List Models)

端点:GET /api/tags
功能:列出本地已下载的模型。
响应格式

{
  "models": [
    {
      "name": "<model-name>", // 模型名称
      "size": "<model-size>", // 模型大小
      "modified_at": "<timestamp>" // 修改时间
    }
  ]
}

示例
在这里插入图片描述

4.拉取模型(Pull Model)

端点:POST /api/pull
功能:从模型库中拉取模型。
请求格式

{
  "name": "<model-name>" // 模型名称
}

响应格式

{
  "status": "downloading", // 下载状态
  "digest": "<model-digest>" // 模型摘要
}

示例
在这里插入图片描述

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐