Ollama系列05:Ollama API 使用指南
本文是Ollama系列教程的第5篇,在前面的4篇內(nèi)容中,給大家分享了如何再本地通過Ollama運(yùn)行DeepSeek等大模型,演示了chatbox、CherryStudio等UI界面中集成Ollama的服務(wù),并介紹了如何通過cherryStudio構(gòu)建私有知識(shí)庫。
在今天的分享中,我將分享如何通過API來調(diào)用ollama服務(wù),通過整合ollama API,將AI能力集成到你的私有應(yīng)用中,提升你的職場價(jià)值!
Ollama API

Ollama 提供了一套簡單好用的接口,讓開發(fā)者能通過API輕松使用大語言模型。
本篇內(nèi)容將使用Postman作為請(qǐng)求工具,和開發(fā)語言無關(guān)。
基本概念
在開始之前,我們先了解幾個(gè)基本的概念:
- Model:模型,我們調(diào)用接口時(shí)使用的模型名字。我們可以把Ollama理解為模型商店,它里面運(yùn)行著很多模型,每個(gè)模型都有一個(gè)唯一的名字,例如
deepseek-r1:1.5b - Prompt: 提示詞,是我們給模型的指令。比如
天空為什么是藍(lán)色的就是一條簡單的提示詞。 - Token:字符塊,是大模型的最小輸出單位,同時(shí)也是大模型的計(jì)費(fèi)單位。舉個(gè)例子,對(duì)于
天空為什么是藍(lán)色的這句話,大模型會(huì)進(jìn)行拆分天空/為什么/是/藍(lán)色/的,每一段就是一個(gè)token(實(shí)際情況會(huì)比這個(gè)例子復(fù)雜)
內(nèi)容生成(/api/generate)
讓大模型幫我們生成指定的內(nèi)容,就可以使用內(nèi)容生成接口。一問一答,不帶上下文。
我們試著用最少的參數(shù)來調(diào)用:
{
"model": "deepseek-r1:1.5b",
"prompt": "天空為什么是藍(lán)色的"
}
在postman里面看看輸出:

可以看到輸出的內(nèi)容很長,這是因?yàn)槟J(rèn)采用的是stream的方式輸出的,也就是我們在deepseek app里面看到的一個(gè)字一個(gè)字輸出的那種效果。我們可以將stream參數(shù)設(shè)置成false來禁用流式輸出。
{
"model": "deepseek-r1:1.5b",
"prompt": "天空為什么是藍(lán)色的",
"stream": false
}
參數(shù)列表
| 參數(shù)名 | 是否必填 | 描述 |
|---|---|---|
model |
是 | 模型名稱 |
prompt |
是 | 需要生成響應(yīng)的提示詞 |
suffix |
否 | 模型響應(yīng)后追加的文本 |
images |
否 | Base64編碼的圖片列表(適用于多模態(tài)模型如llava) |
format |
否 | 返回響應(yīng)的格式(可選值:json 或符合 JSON Schema 的結(jié)構(gòu)) |
options |
否 | 模型額外參數(shù)(對(duì)應(yīng) Modelfile 文檔中的配置如 temperature) |
system |
否 | 自定義系統(tǒng)消息(覆蓋 Modelfile 中的定義) |
template |
否 | 使用的提示詞模板(覆蓋 Modelfile 中的定義) |
stream |
否 | 設(shè)為 false 時(shí)返回單個(gè)響應(yīng)對(duì)象而非流式對(duì)象 |
raw |
否 | 設(shè)為 true 時(shí)不格式化提示詞(適用于已指定完整模板的情況) |
keep_alive |
否 | 控制模型在內(nèi)存中的保持時(shí)長(默認(rèn):5m) |
context |
否 | (已棄用)來自前次 /generate 請(qǐng)求的上下文參數(shù),用于維持短期對(duì)話記憶 |
生成對(duì)話(/api/chat)
生成對(duì)話,是一種具備上下文記憶的內(nèi)容生成。在內(nèi)容生成API中,我們僅傳入了prompt,大模型僅對(duì)我們本地的prompt進(jìn)行回答,而在生成對(duì)話API中,我們還可以傳入messages參數(shù),包含我們多輪對(duì)話內(nèi)容,使大模型具備記憶功能。
最簡單的調(diào)用(為了方便演示,我們將stream參數(shù)設(shè)置為false):
{
"model": "deepseek-r1:1.5b",
"messages": [
{
"role": "user",
"content": "天空通常是什么顏色"
}
],
"stream": false
}
postman調(diào)用截圖:

多輪對(duì)話
聊天的時(shí)候,ollama通過messages參數(shù)保持上下文記憶。當(dāng)模型給我們回復(fù)內(nèi)容之后,如果我們要繼續(xù)追問,則可以使用以下方法(注意:deepseek-r1模型需要在上下文中移除think中的內(nèi)容):
{
"model": "deepseek-r1:1.5b",
"messages": [
{
"role": "user",
"content": "天空通常是什么顏色"
},
{
"role": "assistant",
"content": "天空通常看起來是**柔和的、明快的或稍微有些昏黃的色調(diào)**。具體顏色可能會(huì)因不同的天氣情況而有所變化,例如:\n\n1. **晴朗天氣**:天空可能呈現(xiàn)出溫暖、明亮的顏色,比如藍(lán)天、碧空等。\n2. **下雨天**:云層覆蓋天空,可能導(dǎo)致顏色較為陰郁或變黑。\n3. **雨后天氣**:雨后的天空可能恢復(fù)為明亮的色調(diào)。\n\n總的來說,天空的顏色主要取決于大氣中的光線反射和折射情況,以及太陽的位置。"
},
{
"role": "user",
"content": "為什么是藍(lán)色的?"
}
],
"stream": false
}
postman調(diào)用截圖:

結(jié)構(gòu)化數(shù)據(jù)提取
當(dāng)我們和系統(tǒng)對(duì)接時(shí),通常要需要從用戶的自然語言中提到結(jié)構(gòu)化數(shù)據(jù),用來調(diào)用現(xiàn)有的外部系統(tǒng)的接口。在ollama中我們只需要指定format參數(shù),就可以實(shí)現(xiàn)結(jié)構(gòu)化數(shù)據(jù)的提取:
{
"model": "deepseek-r1:1.5b",
"messages": [
{
"role": "user",
"content": "哈嘍,大家好呀~ 我是拓荒者IT,今年36歲了,是一名軟件工程師"
}
],
"format": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"job": {
"type": "string"
}
},
"required": [
"name",
"age",
"job"
]
},
"stream": false
}
參數(shù)列表
| 參數(shù)名 | 是否必填 | 描述 |
|---|---|---|
model |
是 | 模型名稱 |
messages |
是 | 聊天消息數(shù)組(用于維持對(duì)話記憶) |
messages.role |
是 | 消息角色(可選值:system, user, assistant, tool) |
messages.content |
是 | 消息內(nèi)容 |
messages.images |
否 | 消息中Base64編碼的圖片列表(適用于多模態(tài)模型如llava) |
messages.tool_calls |
否 | 模型希望調(diào)用的工具列表(JSON格式) |
tools |
否 | 模型可使用的工具列表(JSON格式,需模型支持) |
format |
否 | 返回響應(yīng)的格式(可選值:json 或符合 JSON Schema 的結(jié)構(gòu)) |
options |
否 | 模型額外參數(shù)(對(duì)應(yīng) Modelfile 文檔中的配置如 temperature) |
stream |
否 | 設(shè)為 false 時(shí)返回單個(gè)響應(yīng)對(duì)象而非流式對(duì)象 |
keep_alive |
否 | 控制模型在內(nèi)存中的保持時(shí)長(默認(rèn):5m) |
生成嵌入數(shù)據(jù)(/api/embed)
嵌入數(shù)據(jù)的作用是將輸入內(nèi)容轉(zhuǎn)換成向量,可以用于向量檢索等場景。比如我們在第四篇中介紹的知識(shí)庫,就需要用到embedding模型。
在調(diào)用embed接口時(shí),我們要選擇支持Embedding功能的模型,deepseek是不支持的。
調(diào)用示例:
{
"model": "bge-m3",
"input": "為什么天空是藍(lán)色的呢?"
}
postman調(diào)用截圖:

兼容openAI接口
因?yàn)楝F(xiàn)在很多應(yīng)用、類庫都是基于OpenAI構(gòu)建的,為了讓這些系統(tǒng)能夠使用Ollama提供的模型,Ollama提供了一套兼容OpenAI的接口(官方說是實(shí)驗(yàn)性的,以后可能會(huì)有重大調(diào)整)。
因?yàn)檫@種兼容,使得我們可以直接通過OpenAI的python庫、node庫來訪問ollama的服務(wù),確實(shí)方便了不少。
注意:ollama屬于第三方接口,不能100%支持OpenAI的接口能力,因此在使用的時(shí)候需要先了解清楚兼容的情況。
其它接口
ollama還有一些其它的接口,用來實(shí)現(xiàn)對(duì)模型的管理等功能,而這些功能我們通常會(huì)在命令行完成,因此不做詳細(xì)說明。這些API的列表如下:
- 模型創(chuàng)建(/api/create)
- 列出本地模型(/api/tags)
- 查看模型信息(/api/show)
- 復(fù)制模型(/api/copy)
- 刪除模型(/api/delete)
- 拉取模型(/api/pull)
- 推送(上傳)模型(/api/push)
- 列出運(yùn)行中的模型(/api/ps)
- 查看ollama版本(/api/version)
這些接口的調(diào)用都非常簡單,大家感興趣的可以嘗試以下。
總結(jié)
本文介紹了ollama api的用法,詳細(xì)介紹了生成內(nèi)容、多輪對(duì)話、大模型記憶功能的實(shí)現(xiàn)、提取參數(shù)化內(nèi)容等接口。通過使用這些接口,我們可以將AI能力集成到現(xiàn)有的項(xiàng)目中,提升軟件的智能化程度。
?? 如果你對(duì)這些內(nèi)容感興趣,關(guān)注[拓荒者IT]公眾號(hào),獲取最新的文章內(nèi)容。
持續(xù)分享AI工具,AI應(yīng)用場景,AI學(xué)習(xí)資源 ??

參考內(nèi)容

浙公網(wǎng)安備 33010602011771號(hào)