一、环境准备
- 服务端部署
安装 Ollama(以 Linux 为例)
curl -fsSL https://ollama.ai/install.sh | sh
配置监听地址(允许远程访问)
sudo systemctl edit ollama.service
修改配置项为:Environment=OLLAMA_HOST=0.0.0.0
- 模型部署
拉取 DeepSeek 模型(以 7B 版本为例)
ollama pull deepseek-chat
二、API 基础调用
- 生成补全接口
请求示例(cURL):
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-chat",
"prompt": "如何用 Python 实现快速排序?",
"stream": false
}'
关键参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
model | string | 是 | 模型名称(deepseek-chat) |
prompt | string | 是 | 输入提示词 |
stream | bool | 否 | 是否启用流式输出(默认false) |
temperature | float | 否 | 生成多样性(0.1-1.0) |
- 流式响应处理
import requests
response = requests.post(
'http://localhost:11434/api/generate',
json={
"model": "deepseek-chat",
"prompt": "解释量子计算的基本原理",
"stream": True
},
stream=True
)
for line in response.iter_lines():
if line:
print(line.decode('utf-8'))
三、高级功能实现
- 上下文对话模式
from ollama import Client
client = Client(host='http://localhost:11434')
response = client.chat(
model='deepseek-chat',
messages=[
{'role': 'user', 'content': '如何学习机器学习?'}
]
)
print(response['message']['content'])
- 自定义生成参数
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-chat",
"prompt": "写一首关于杭州西湖的诗",
"options": {
"temperature": 0.7,
"top_p": 0.9,
"max_tokens": 500
}
}'
四、API 响应结构解析
成功响应示例:
{
"model": "deepseek-chat",
"created_at": "2025-02-15T20:15:30Z",
"response": "快速排序的 Python 实现步骤如下...",
"done": true,
"context": [147, 523, 994], // 上下文标识符
"total_duration": 54281234 // 总耗时(纳秒)
}
错误响应类型:
状态码 | 错误类型 | 解决方案 |
---|---|---|
400 | 无效模型名称 | 检查 ollama list 确认模型 |
404 | 接口路径错误 | 确认 API 版本和路径 |
500 | 显存不足 | 减小 max_tokens 参数 |
五、最佳实践建议
-
性能优化
- 启用流式传输降低内存消耗
- 设置
num_ctx
参数控制上下文长度(建议 2048)
-
安全配置
# 启用 HTTPS(需配置 SSL 证书) ollama serve --tls-cert /path/to/cert.pem --tls-key /path/to/key.pem
3. 监控方案
```bash
# 查看实时日志
journalctl -u ollama -f