ollama-install
一、ollama安装
可以在ollama官网直接下载:https://ollama.com/download
也可以在项目仓库中下载:https://github.com/ollama/ollama
下载后双击安装包进行安装,默认安装至C盘,如果C盘内存不够,我们需要修改环境变量,使得大模型能够放在别的盘。
可参考教程ollama在windows系统上安装总结以及注意事项、Ollama+Open WebUI本地部署Llama3 8b(附踩坑细节)
1.1 修改环境变量
在系统变量中添加一个名为:OLLAMA_MODELS的变量名,路径选择一个合适的位置。
ollama-install-1
设置好路径之后,一定要重新启动重启,才能生效。
1.2 拉取大模型
接下来就是拉去大模型,打开官网可以看到从ollama可以直接拉取的大模型:
ollama-install-2
例如我选择的是qwen2.5-coder点进去之后,也可以选择版本.
然后拉去这个大模型的话,直接复制右边的命令:1
ollama run qwen2.5-coder
等待下载完成进入ollama的命令行界面,即可正常运行。
一定要注意,自己的电脑配置是否适合模型的大小。注意:您应该至少有 8 GB 可用 RAM 来运行 7B 型号,16 GB 来运行 13B 型号,32 GB 来运行 33B 型号。
还可以安装一些web和桌面程序来交互大模型,例如open-webui
1.3 安装open-webui
根据官网文档https://docs.openwebui.com/中提示可知,如果使用pip来安装的话,需要python版本为3.11。
docker安装自行查看官网文档或上面的参考教程即可。
这里我们以pip安装为例,可以安装python3.11版本后使用,如果你有anaconda环境的话,也可以新建一个虚拟环境来安装。如果不需要虚拟环境,已经是3.11版本python的话,可跳过此步。
1.3.1、anaconda和Visual Studio安装
下载
下载链接:https://www.anaconda.com/products/distribution
安装
双击运行,一直下一步即可。(如不想安装在C盘,自行选择目录即可)注意一定要选择添加进PATH,不然终端无法运行
Visual Studio安装
下载链接:https://visualstudio.microsoft.com/zh-hans/
anaconda新建环境
终端输入以下命令,代表用python3.11版本新建一个名为ollama的环境1
conda create -n ollama python=3.11
1.3.2 激活ollama环境
1 | conda activate ollama |
进入环境以后就可以继续安装open-webui了。
1.3.3安装open-webui
如果本身是python3.11版本的话,可以直接使用pip安装(从上面跳的步骤到这里继续)。
1
pip install open-webui
1.3.4启动open-webui
1 | open-webui serve |
1.3.5访问open-webui
做完以上步骤我们就可以在 http://localhost:8080 访问open-webui了。 Enjoy! 😄
1.4 ollama 帮助
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
stop Stop a running model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, —help help for ollama
-v, —version Show version information
Use “ollama [command] —help” for more information about a command.
1.5 使用ollama api 来输入并获取输出
官方api文档可见:ollama-api
找了好久,基本找不到合适的代码,但终于找到可能能用的JAVA代码,如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36public static String askLocalQwen2Model(String prompt) throws IOException {
String urlString = "http://localhost:11434/api/generate";
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方法为POST
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json; utf-8");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);
// 创建要发送的JSON对象
JSONObject jsonInput = new JSONObject();
jsonInput.put("model", "qwen2");
jsonInput.put("prompt", prompt);
jsonInput.put("stream", false);
// 将JSON输入写入请求的输出流
try (OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInput.toString().getBytes("utf-8");
os.write(input, 0, input.length);
}
// 读取响应内容
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
// 解析JSON响应并提取response字段
JSONObject jsonResponse = new JSONObject(response.toString());
return jsonResponse.getString("response");
}
}
因此,我们用python来写,实现相应的功能代码示例如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33import requests
import json
def askLocalQwen2Model(prompt):
url = "http://localhost:11434/api/generate"
# 创建要发送的JSON对象
json_input = {
"model": "qwen2",
"prompt": prompt,
"stream": False
}
try:
# 发送POST请求
response = requests.post(url, headers={"Content-Type": "application/json"}, data=json.dumps(json_input))
# 检查响应状态码
if response.status_code == 200:
# 解析JSON响应并提取response字段
json_response = response.json()
return json_response.get("response", "")
else:
print(f"Failed to get response from Qwen2 model. Status code: {response.status_code}")
return ""
except requests.RequestException as e:
print(f"An error occurred: {e}")
return ""
# 示例调用
prompt = "Here is an article about llamas..."
result = askLocalQwen2Model(prompt)
print(result)
经过以上步骤,在prompt = "Here is an article about llamas...
等于号后面输入内容,我们就可以得到Qwen2
模型生成的回答了。
目前api已经基本实现。后续有什么需要修改的可以自行魔改。