Ollama学习1:安装、命令、API
文章目录
- 概述
- 模型厂家
- 安装
- Windows
- Linux
- Docker
- 环境变量
- 命令
- 查看下载的模型支持什么能力
- API
- 版本
- 运行中的模型列表
- 某个模型信息展示
- 列出下载好的所有模型信息
- 普通文本问答(常用)
- 识图问答(常用)
- 输入文本总结文本内容,并且指定回答内容是Json,里面字段的含义以及数据类型
- 文本问答(基于前后,进行插入补全代码)
- 函数调用
概述
作用: 直接在本地计算机上快速部署和运行管理开源大语言模型,提供命令提问、api接口访问等
官网: https://ollama.com/
支持系统: windows、macos、linux
模型查看: https://ollama.com/search
API接口文档: https://github.com/ollama/ollama/blob/main/docs/api.md
官方说明,硬件可部署的模型量: 您应该至少有8GB的RAM内存条则可用于运行7B模型,16GB用于运行13B模型,32GB用于运行33B模型
模型厂家
安装
下载地址: https://ollama.com/download
安装成功后,会对外开发11434端口: http://IP地址:11434/
Windows
注意事项: 直接安装包,没啥配置的,安装成功后,命令行会有 ollama 命令使用
修改模型下载位置(默认C盘): 添加环境变量【OLLAMA_MODELS】用于指定模型下载的目录
Linux
Docker
环境变量
参数 | 标识与配置 |
---|---|
OLLAMA_MODELS | 拉取的模型存放位置,建议必须修改调整,要不然撑爆系统C盘 |
OLLAMA_HOST | 可以允许外部访问的IP地址,默认只能本127.0.0.1,如果需要支持外部访问,需调整成0.0.0.0 == 修改需要重启 |
OLLAMA_PORT | API的端口号,默认11434 |
OLLAMA_ORIGINS | HTTP客户端的请求来源,用于配置跨域资源共享(CORS)如果本地使用不受限制,可以设置成星号* |
OLLAMA_KEEP_ALIVE | 单位(秒)大模型加载到内存中后的存活时间 默认300,0代表处理请求响应后立即卸载模型,任何负数则表示一直存活 |
OLLAMA_NUM_PARALLEL | 请求处理的并发数量,默认为1 |
OLLAMA_MAX_QUEUE | 请求队列长度,默认值为512 |
OLLAMA_DEBUG | 输出 Debug 日志,应用研发阶段可以设置成1(即输出详细日志信息,便于排查问题) |
OLLAMA_MAX_LOADED_MODELS | 最多同时加载到内存中模型的数量,默认为1 |
命令
// ollama 支持的所有子命令
ollama -h// 程序版本号
ollama -v// 查看已下载的模型列表
ollama list// 查看 已下载的 某个模型 信息
ollama show 模型名// 正在运行中的模型
ollama ps// 启动运行某个模型,如果没有下载镜像,则会先去下载模型再启动运行
ollama run 模型名// 删除某个模型
ollama rm 模型名// 停止某个模型
ollama stop 模型名
查看下载的模型支持什么能力
ollama show 模型名
API
API接口文档: https://github.com/ollama/ollama/blob/main/docs/api.md
generate接口: 单问题回答,请求体不能输入前面的问答历史,对于知识问答挺有作用的吧
chat接口: 记录上下文历史回答,请求体能输入前面的问答历史,对于聊天很关键
版本
# ollama版本查看
curl --request GET --url http://127.0.0.1:11434/api/version
运行中的模型列表
# 运行中的模型列表
curl --request GET --url http://localhost:11434/api/ps
某个模型信息展示
# 某个模型信息展示curl --request POST --url http://localhost:11434/api/show --data "{\"model\": \"deepseek-r1:1.5b\"}"
列出下载好的所有模型信息
# 当前你的Oollama程序已经下载的模型
curl --request GET --url http://localhost:11434/api/tags
普通文本问答(常用)
# 文本问答
curl --request POST --url http://localhost:11434/api/chat --data "{\"model\": \"qwen3:1.7b\",\"messages\": [{\"role\": \"user\",\"content\": \"你是由哪家公司开发出来的\"}],\"stream\": false}"
识图问答(常用)
# 文本问答
curl --request POST --url http://localhost:11434/api/generate --data "{\"model\": \"qwen2.5vl:3b\",\"prompt\": \"这张图片里面有什么\",\"stream\": false,\"images\": [\"图片的Base64编码\"]}"
输入文本总结文本内容,并且指定回答内容是Json,里面字段的含义以及数据类型
# 文本问答
curl --request POST --url http://localhost:11434/api/chat --data "请求体内容"
// 上面的接口的请求体示例值
{"model": "qwen3:1.7b","messages": [{"role": "user","content": "小兔子在森林里迷路了,遇到了善良的猫头鹰。猫头鹰用智慧指引它回家,小兔子感激不已。从此,它们成了无话不谈的好朋友. 总结这段故事基于JSON结构,需要里面出现的事物,以及这个故事的简介10个字"}],"stream": false,"format": {"type": "object","properties": {"thing": {"type": "array"},"briefIntroduction": {"type": "string"}},"required": ["thing","briefIntroduction"]},"options": {"temperature": 0}
}
文本问答(基于前后,进行插入补全代码)
注意: 需要模型能力支持:insert
# 文本问答
curl --request POST --url http://localhost:11434/api/generate --data "请求体内容"
{"model": "qwen2.5-coder:7b","prompt": "public static String propertiesToYaml(String propertiesContent) {","suffix": " }","options": {"temperature": 0},"stream": false
}
函数调用
注意: 需要模型能力支持:tools
# 文本问答
curl --request POST --url http://localhost:11434/api/chat --data "请求体内容"
{"model": "qwen3:1.7b","messages": [{"role": "user","content": "为什么狗会吃屎?"},{"role": "assistant","content": "<think>\n嗯,用户问为什么狗会吃屎。首先,我需要确认这个问题的背景。可能用户是出于好奇,或者在观察动物行为时遇到了这种情况。不过,从科学角度来看,狗吃屎其实并不是什么特别的习性,可能只是本能行为。\n\n首先,我得回忆一下狗的行为学。狗作为动物,它们的本能可能包括捕食、狩猎,但吃屎可能和这些无关。不过,可能有其他因素,比如清洁、消化,或者某种本能。比如,狗可能通过吃粪便来检测周围是否有危险,或者帮助消化。\n\n不过,科学上是否真的有这种行为呢?可能需要查证。比如,是否有研究显示狗吃屎?或者是否属于正常行为?比如,有些狗可能因为习惯而这样做,但并不是所有狗都会。可能和品种、训练有关。\n\n另外,用户可能误解了某些行为,或者有其他意图,比如想了解狗的行为模式,或者是否有健康问题。需要解释清楚,同时避免误导。\n\n还要注意,用户可能对狗的行为有误解,比如认为狗是“恶习”,但实际上可能只是本能或习惯。需要区分本能和习性,以及可能的健康因素,比如消化问题,但通常狗不会因为吃屎而生病,除非有特殊原因。\n\n可能还需要提到,虽然狗吃屎在某些情况下是本能,但在野外可能更常见,而在家养环境下可能因为训练或习惯而出现。同时,不同品种的狗可能有不同的行为,比如牧羊犬可能更倾向于吃粪便,而其他品种可能较少。\n\n最后,要确保回答准确、科学,并且易于理解,避免使用专业术语,同时给出全面的信息,帮助用户正确理解狗的行为。\n</think>\n\n狗吃屎的现象在动物行为学中并不常见,但可以从以下几个角度解释:\n\n### 1. **本能行为 vs. 习性**\n - **本能行为**:狗的本能可能包括清洁、检测环境、消化残留物等。例如,狗通过吃粪便来感知周围是否有危险(如寄生虫、细菌)或帮助消化。\n - **习性**:部分狗因习惯或训练(如牧羊犬、导盲犬等)可能更倾向于吃粪便,但这属于个体差异,非普遍现象。\n\n### 2. **生理需求**\n - **消化系统**:狗的肠道菌群和消化能力较弱,部分粪便可能难以完全消化,导致它们通过吃粪便“清理”体内残留物。\n - **卫生习惯**:在野外,狗通过吃粪便检测环境中的寄生虫或细菌,这是生存的本能。\n\n### 3. **环境因素**\n - **野外 vs. 家养**:在自然环境中,狗可能因本能而吃粪便;而在家养环境下,若缺乏训练或环境干扰,可能因习惯或好奇心而出现。\n - **品种差异**:某些品种(如牧羊犬、猎犬)因工作需要,可能更频繁地接触粪便,从而形成习惯。\n\n### 4. **误解与误区**\n - **人类认知偏差**:人类可能将狗吃粪便视为“恶习”,但这是动物的自然行为,而非故意行为。\n - **健康问题**:若狗因消化问题(如肠梗阻)而吃粪便,需及时就医,但正常情况下这类行为并不常见。\n\n### 5. **科学解释**\n - **行为学研究**:动物行为学家发现,狗的“吃粪便”行为可能与以下因素相关:\n - **清洁本能**:通过吃粪便检测环境中的寄生虫或细菌。\n - **消化需求**:部分粪便可能难以消化,需通过吃粪便“清理”。\n - **环境适应**:在自然环境中,这种行为是生存的必要手段。\n\n### 总结\n狗吃屎并非“恶习”,而是动物的自然行为,可能与本能、生理需求或环境因素有关。若发现狗异常行为(如频繁吃粪便),建议观察其健康状况,必要时咨询兽医。理解这一现象有助于更科学地看待动物行为。"},{"role": "user","content": "今天是2025-05-12,广州前天天气怎么样?"}],"stream": false,"tools": [{"type": "function","function": {"name": "get_current_weather","description": "获取某个地方某天的天气","parameters": {"type": "object","properties": {"location": {"type": "string","description": "客户询问的天气的地方 比如:佛山、东莞、北京等"},"day": {"type": "string","description": "客户询问的天气日期 比如:2025-03-10,20250101"}},"required": ["location", "day"]}}}]
}