安装 Docker:从 Docker 官网 下载并安装。
部署 Ollama:
docker run -d-p11434:11434 --name ollama --restart always ollama/ollama:latest
进入容器并下载 qwen2.5:0.5b 模型:
dockerexec-it ollama bash
ollama pull qwen2.5:0.5b
在开始之前,请确保您已安装 requests
模块。可以通过以下命令安装:
pip install requests
我们还将初始化基本的 API 相关配置,如下所示:
import requests
# 基础初始化设置
base_url ="http://localhost:11434/api"
headers ={"Content-Type":"application/json"}
/generate
POST
model
(必填):模型名称,用于指定生成模型,例如 qwen2.5:0.5b
。prompt
(必填):生成文本所用的提示词。suffix
(可选):生成的补全文本之后附加的文本。stream
(可选):是否流式传输响应,默认 true
,设置为 false
时返回完整文本。system
(可选):覆盖模型系统信息的字段,影响生成文本风格。temperature
(可选):控制文本生成的随机性,默认值为 1
。defgenerate_completion(prompt, model="qwen2.5:0.5b"):
url =f"{base_url}/generate"
data ={"model": model,"prompt": prompt,"stream":False}
response = requests.post(url, headers=headers, json=data)return response.json().get('response','')# 示例调用
completion = generate_completion("介绍一下人工智能。")print("生成文本补全:", completion)
/generate
POST
model
(必填):模型名称。prompt
(必填):生成文本所用的提示词。stream
(必填):设置为 true
,启用流式传输。defgenerate_completion_stream(prompt, model="qwen2.5:0.5b"):
url =f"{base_url}/generate"
data ={"model": model,"prompt": prompt,"stream":True}
response = requests.post(url, headers=headers, json=data, stream=True)
result =""for line in response.iter_lines():if line:
result += line.decode('utf-8')return result
# 示例调用
stream_completion = generate_completion_stream("讲解机器学习的应用。")print("流式生成文本补全:", stream_completion)
/chat
POST
model
(必填):模型名称。messages
(必填):对话的消息列表,按顺序包含历史对话,每条消息包含 role
和 content
。
role
: user
(用户)、assistant
(助手)或 system
(系统)。content
: 消息内容。stream
(可选):是否流式传输响应,默认 true
。defgenerate_chat_completion(messages, model="qwen2.5:0.5b"):
url =f"{base_url}/chat"
data ={"model": model,"messages": messages,"stream":False}
response = requests.post(url, headers=headers, json=data)return response.json().get('message',{}).get('content','')# 示例调用
messages =[{"role":"user","content":"什么是自然语言处理?"},{"role":"assistant","content":"自然语言处理是人工智能的一个领域,专注于人与计算机之间的自然语言交互。"}]
chat_response = generate_chat_completion(messages)print("生成对话补全:", chat_response)
/embed
POST
model
(必填):生成嵌入的模型名称。input
(必填):文本或文本列表,用于生成嵌入。truncate
(可选):是否在文本超出上下文长度时进行截断,默认 true
。stream
(可选):是否流式传输响应,默认 true
。defgenerate_embeddings(text, model="qwen2.5:0.5b"):
url =f"{base_url}/embed"
data ={"model": model,"input": text
}
response = requests.post(url, headers=headers, json=data)return response.json()# 示例调用
embeddings = generate_embeddings("什么是深度学习?")print("生成文本嵌入:", embeddings)
/tags
GET
deflist_local_models():
url =f"{base_url}/tags"
response = requests.get(url, headers=headers)return response.json().get('models',[])# 示例调用
local_models = list_local_models()print("列出本地模型:", local_models)
/show
POST
name
(必填):需要查看信息的模型名称。verbose
(可选):设置为 true
时返回更详细的信息。defshow_model_info(model="qwen2.5:0.5b"):
url =f"{base_url}/show"
data ={"name": model}
response = requests.post(url, headers=headers, json=data)return response.json()# 示例调用
model_info = show_model_info()print("模型信息:", model_info)
/create
Modelfile
创建一个新模型,可以在已有模型的基础上定制。POST
name
(必填):新创建的模型名称。modelfile
(可选):模型文件的内容,定义模型的基础信息。stream
(可选):是否流式传输响应。defcreate_model(model_name="qwen2.5_custom", base_model="qwen2.5:0.5b"):
url =f"{base_url}/create"
data ={"name": model_name,"modelfile":f"FROM {base_model}\nSYSTEM You are a helpful assistant."}
response = requests.post(url, headers=headers, json=data)return response.json()# 示例调用
create_response = create_model()print("创建模型:", create_response)
/api/pull
POST
name
(必填):要拉取的模型名称。insecure
(可选):允许与库建立不安全的连接,仅在开发过程中从自己的库中提取时使用。stream
(可选):如果为 false
,响应将作为单个响应对象返回,而不是对象流。defpull_model(model_name="qwen2.5:0.5b"):
url =f"{base_url}/api/pull"
data ={"name": model_name}
response = requests.post(url, headers=headers, json=data)return response.json()# 示例调用
pull_response = pull_model()print("拉取模型:", pull_response)
/delete
DELETE
name
(必填):需要删除的模型名称。defdelete_model(model_name="qwen2.5_custom"):
url =f"{base_url}/delete"
data ={"name": model_name}
response = requests.delete(url, headers=headers, json=data)return response.json()# 示例调用
delete_response = delete_model()print("删除模型:", delete_response)
提示:请勿发布广告垃圾评论,否则封号处理!!