Ollama-已在本地部署了deepseek,如何用Python语言调用
目录
Ollama 已在本地部署了deepseek,如何用Python语言调用
以下是使用 Python 调用部署在 Ollama 上的 DeepSeek 模型的步骤:
1. 安装依赖
bash
复制
pip install requests
2. 基础调用代码
python
复制
import requests
import json
# 配置信息
OLLAMA_HOST = "http://localhost:11434" # 默认地址
MODEL_NAME = "deepseek-chat" # 确认模型名称(通过 ollama list 查看)
def generate(prompt: str, max_tokens: int = 512, temperature: float = 0.7):
"""
调用 DeepSeek 模型生成文本
参数:
prompt: 输入的提示文本
max_tokens: 最大生成token数(默认512)
temperature: 温度参数(0-1,默认0.7)
"""
try:
response = requests.post(
url=f"{OLLAMA_HOST}/api/generate",
headers={"Content-Type": "application/json"},
json={
"model": MODEL_NAME,
"prompt": prompt,
"stream": False, # 关闭流式输出
"options": {
"temperature": temperature,
"max_tokens": max_tokens
}
}
)
response.raise_for_status() # 检查HTTP错误
return json.loads(response.text)["response"]
except requests.exceptions.RequestException as e:
print(f"API请求失败: {str(e)}")
return None
except KeyError:
print("响应格式异常")
return None
# 使用示例
if __name__ == "__main__":
result = generate("请用Python实现快速排序算法")
if result:
print("模型回复:\n", result)
3. 流式输出版本(适合长文本)
python
复制
def stream_generate(prompt: str, max_tokens: int = 1024):
"""流式输出版本(实时显示生成结果)"""
try:
response = requests.post(
url=f"{OLLAMA_HOST}/api/generate",
headers={"Content-Type": "application/json"},
json={
"model": MODEL_NAME,
"prompt": prompt,
"stream": True, # 启用流式输出
"options": {"max_tokens": max_tokens}
},
stream=True
)
response.raise_for_status()
full_response = []
for line in response.iter_lines():
if line:
chunk = json.loads(line.decode("utf-8"))
if not chunk["done"]:
print(chunk["response"], end="", flush=True)
full_response.append(chunk["response"])
return "".join(full_response)
except requests.exceptions.RequestException as e:
print(f"\n请求失败: {str(e)}")
return None
# 使用示例
stream_generate("请详细解释量子计算的原理")
4. 参数说明
参数 | 说明 |
---|---|
max_tokens | 控制生成文本的最大长度(建议 512-4096) |
temperature | 控制生成随机性(0-1,值越大输出越随机) |
top_p | 核采样概率(0-1,通常与 temperature 二选一) |
stream | 是否启用流式传输(适合长文本场景) |
5. 常见问题处理
Q1: 出现连接错误
python
复制
# 检查服务是否运行
import subprocess
subprocess.run(["ollama", "serve"], check=True)
Q2: 模型不存在错误
bash
复制
# 查看可用模型列表
ollama list
Q3: 调整性能参数
python
复制
json={
"model": MODEL_NAME,
"prompt": prompt,
"options": {
"num_ctx": 4096, # 上下文窗口大小
"num_gpu": 1, # GPU层数(需要CUDA支持)
"main_gpu": 0, # 主GPU索引
"seed": 42 # 随机种子
}
}
6. 高级功能
python
复制
# 获取模型信息
requests.get(f"{OLLAMA_HOST}/api/show", json={"name": MODEL_NAME})
# 创建模型副本
requests.post(f"{OLLAMA_HOST}/api/create", json={"name": "my-deepseek-copy", "modelfile": f"FROM {MODEL_NAME}"})
建议根据实际部署情况调整:
- 如果服务部署在远程服务器,修改
OLLAMA_HOST
- 通过
ollama pull
确保模型已下载 - 生产环境建议添加超时处理:
python
复制
response = requests.post(..., timeout=(10, 30)) # 连接10秒,读取30秒超时