ai agent(智能体)开发 python3基础16:通过最基本的request,json连链接本地模型 ollama中的deepseek-r1:8b
通过 Python 调用本地 Ollama 中 deepseek-r1:8b 模型
综合了多种实现方式与最佳实践:
一. **通过 REST API 调用(推荐灵活控制)
import requests
import jsonOLLAMA_HOST = "http://localhost:11434"
MODEL_NAME = "deepseek-r1:8b"def generate(prompt: str):response = requests.post(f"{OLLAMA_HOST}/api/generate",json={"model": MODEL_NAME,"prompt": prompt,"stream": False, # 关闭流式"options": {"temperature": 0.7, "max_tokens": 500}})return json.loads(response.text)["response"]# 调用示例
print(generate("小鸡炖蘑菇怎么做?"))
二、流式交互实现
1. **实时流式输出(适合长文本场景)
def stream_generate(prompt: str):response = requests.post(f"{OLLAMA_HOST}/api/generate",json={"model": MODEL_NAME,"prompt": prompt,"stream": True},stream=True)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)# 调用示例
stream_generate("用Python实现快速排序算法")
三、参数调优与高级配置
1. 关键参数说明
temperature
(0-1): 控制生成随机性(0=保守,1=创造性)max_tokens
(默认512): 限制生成文本长度num_ctx
: 上下文窗口大小(建议4096)num_gpu
: GPU加速层数(需CUDA支持)
payload = {"model": MODEL_NAME,"prompt": "你的问题","options": {"temperature": 0.5,"max_tokens": 1024,"num_ctx": 4096,"num_gpu": 1}
}
2. 性能优化建议
# 添加超时与重试机制
response = requests.post(..., timeout=(10, 30)) # 连接10秒,读取30秒超时
四、常见问题排查
-
模型未找到错误
- 执行
ollama list
确认本地已下载模型 - 检查模型名称拼写(区分大小写)
- 执行
-
连接失败
- 确保 Ollama 服务已启动:
ollama serve
- 检查防火墙是否放行端口11434
- 确保 Ollama 服务已启动:
-
内存不足
- 降低
max_tokens
值 - 使用
7b
版本替代8b
模型
- 降低
五、环境准备
-
安装依赖
pip install requests
-
模型部署验证
ollama run deepseek-r1:8b # 命令行测试模型是否正常运行