快速解决
直接使用 Python 的 requests 库调用 Ollama 本地模型,只需发送 POST 请求即可生成文本。这个方法能解决开发者快速测试模型能力和集成到现有系统的需求。
常用方法
以下是 Ollama Python 使用的 5 个核心方法,按使用频率排序:
| 方法名称 | 功能描述 | 示例代码片段 |
|---|---|---|
| 生成文本 | 调用模型生成自然语言输出 | requests.post("http://localhost:11434/api/generate", json=data) |
| 模型管理 | 列出/下载/删除已安装模型 | requests.get("http://localhost:11434/api/tags") |
| 流式输出控制 | 实时获取模型生成的中间结果 | 添加 stream=True 参数 |
| 批量处理优化 | 并行执行多个推理任务 | 使用 concurrent.futures.ThreadPoolExecutor |
| 错误处理增强 | 捕获模型调用过程中的异常 | try/except 包裹 API 调用逻辑 |
详细说明
生成文本
import requests
data = {
"model": "llama3",
"prompt": "解释量子计算的基本原理",
"stream": False
}
response = requests.post("http://localhost:11434/api/generate", json=data)
print(response.json()['response']) # 输出模型生成的完整响应
流式输出
import requests
data = {
"model": "llama3",
"prompt": "编写一个Python函数计算斐波那契数列",
"stream": True
}
response = requests.post("http://localhost:11434/api/generate", json=data, stream=True)
for line in response.iter_lines(): # 实时读取流式响应
if line:
print(line.decode('utf-8')) # 解码并输出每条结果
批量处理
from concurrent.futures import ThreadPoolExecutor
import requests
def generate_response(prompt):
data = {"model": "llama3", "prompt": prompt, "stream": False}
return requests.post("http://localhost:11434/api/generate", json=data).json()['response']
prompts = ["介绍机器学习", "解释卷积神经网络", "说明递归函数原理"]
with ThreadPoolExecutor(max_workers=3) as executor: # 创建线程池
results = executor.map(generate_response, prompts) # 并行处理
for result in results:
print(result)
高级技巧
- 模型参数调优:通过
temperature控制输出随机性,top_p调整采样策略 - 自定义模型部署:使用 Ollama 的
pullAPI 下载特定版本模型 - 本地部署优化:结合
uvicorn启动 FastAPI 服务,通过asyncio实现异步处理
常见问题
Q: 如何解决模型调用超时问题?
A: 在 requests 调用时添加 timeout=60 参数,并确保模型已成功加载到内存
Q: Python 调用 Ollama 需要哪些依赖?
A: 仅需安装 requests 库,通过 pip install requests 完成
Q: 如何实现中文文本生成?
A: 在 prompt 中直接使用中文,或在请求头添加 Content-Type: application/json; charset=utf-8
总结
掌握 Ollama Python 使用的核心方法,开发者可以快速构建基于本地大模型的文本生成服务,同时通过流式处理和并行优化提升交互体验。