一、安装ollama
1、安装
在Windows本地安装ollama,官方网页:https://ollama.com/download/windows
下载完安装包,安装就好,默认应该是C盘。应该是没办法改,如果有小伙伴能改,也请告知一下。
2、验证安装
出现如下所示,安装成功
3、设置模型拉取地址
模型一般很大,避免都存在C盘,进行更改地址,下述我多有引用。
新建一个环境变量:
变量名:OLLAMA_MODELS
变量值:D:\Ollama //这里写你打算放大模型的位置
配置好环境变量,重启电脑!!!
或者
setx OLLAMA_MODELS "D:\ollama_model"
根据自己需要,也可以多看几篇文章
二、使用ollama
1、拉取模型
拉取模型,可以参考官网GitCode - 全球开发者的开源社区,开源代码托管平台
我拉取的是最基础的,如下图
上述就是拉取成功了,成功后在命令行中就可以简单使用。
2、在python上调用
我这里很简单。
我是自己建立了一个python=3.10的虚拟环境
接着要安装相应的库,必须的库是
pip install ollama
接着创建自己的文件,其中
model='llama3.1'
改为自己的模型
import ollama
# 生成回答并逐字符打印
stream = ollama.chat(
model='llama3.1',
messages=[{'role': 'user', 'content': '天为什么是绿的'}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
def test_ollama_chat():
# Test case 1: Test with a simple question
messages1 = [{'role': 'user', 'content': '天为什么是绿的'}]
stream1 = ollama.chat(model='llama3.1', messages=messages1, stream=True)
response_content = ""
for chunk in stream1:
response_content += chunk['message']['content']
# 检查回答是否合理
assert "绿色" in response_content or "为什么" in response_content
print("All test cases pass")
test_ollama_chat()
输出在终端,结果为
大家可以自行更改 引号中的问题,来尝试
'content': '天为什么是绿的'
这个只是初试,大家可以自行优化代码 .
再给一个测试案例,大家再自己优化
import ollama
def generate_response(model_name, prompt):
# 生成回答并逐字符打印
stream = ollama.chat(
model=model_name,
messages=[{'role': 'user', 'content': prompt}], # 提供具体的问题或提示
stream=True,
)
response = ""
for chunk in stream:
response += chunk['message']['content']
print(chunk['message']['content'], end='', flush=True)
return response
def test_ollama_chat():
# Test case 1: Test with a simple Chinese question
model_name = 'llama3.1'
prompt = '为什么天空是蓝色的?'
expected_keywords = ['绿色', '散射']
response = generate_response(model_name, prompt)
# 检查回答是否包含预期的关键词
if all(keyword in response for keyword in expected_keywords):
print("\nTest case 1 passed.")
else:
print(f"\nTest case 1 failed. Response was: {response}")
# Test case 2: Test with an English question
prompt = 'Why is the sky blue?'
expected_keywords = ['blue', 'scatter']
response = generate_response(model_name, prompt)
# 检查回答是否包含预期的关键词
if all(keyword in response.lower() for keyword in expected_keywords):
print("\nTest case 2 passed.")
else:
print(f"\nTest case 2 failed. Response was: {response}")
# 运行测试
test_ollama_chat()
输出的结果如下图(应该是模型或者什么原因,反复提问的话,回复会有差别,我选取其中一个)