Python调用Ollama本地API实现qwen2:7b模型对话
现在用 Python 调用 Ollama 中运行的千问 qwen2:7b 小模型进行对话,整体流程分三步:准备并运行模型、确认本地 API 服务、编写脚本请求 /api/generate 接口。原文以 8G 显卡环境为例,选择 qwen2:7b 这类较小模型,首次拉取约 4GB。一、拉取并启动 qwen2:7b
先查看 Ollama 版本:
ollama --version
拉取模型:
ollama pull qwen2:7b
第一次下载会显示进度条,大小在 4GB 左右。下载完成后运行:
ollama run qwen2:7b
启动成功即可在终端对话。退出可按 Ctrl+D,或输入 /bye。Ollama 安装后默认常驻后台,因此本地 API 服务通常已经在运行。可用浏览器访问 http://localhost:11434 确认服务是否可访问。
二、Python 请求本地 API
新建 Python 脚本,例如 chat.py。原文使用 requests 向 Ollama 的生成接口发 POST 请求,关键参数包括 model、prompt、stream。stream 设为 False 时,接口一次性返回完整结果;随后从 JSON 响应的 response 字段取模型回答。
import requests
import json
def ask_model(prompt, model="qwen2:7b"):
url = "http://localhost:11434/api/generate"
payload = {
"model": model,
"prompt": prompt,
"stream": False# 一次性返回完整结果
}
response = requests.post(url, json=payload)
data = response.json()
return data["response"]
if __name__ == "__main__":
question = "用一句话解释什么是大模型推理"
answer = ask_model(question)
print(f"Q: {question}")
print(f"A: {answer}")
代码说明:ask_model 接收 prompt 和 model 两个参数,model 默认值为 qwen2:7b;请求地址是 Ollama 本地服务 http://localhost:11434/api/generate;payload 中的 stream 控制是否流式输出;response.json() 将响应解析为字典;最后返回 data["response"]。主程序部分构造一个问题,调用 ask_model,并打印 Q 与 A。
运行脚本:
python chat.py
脚本会输出问题与模型回答。若请求失败,可先检查 Ollama 服务是否运行、11434 端口是否可访问,以及模型名与已拉取模型是否一致。
三、适用场景与注意点
这种方式适合在本地脚本、自动化工具或简单后端服务中调用 Ollama 模型,不需要把请求发往云端。核心是保持 Ollama 后台运行,并通过 /api/generate 接口传入 model、prompt、stream 等参数。对于显存有限的机器,qwen2:7b 是原文给出的可运行示例;其他模型只需在拉取和调用时替换模型名,但需确保本地已有对应模型。
Re: Python调用Ollama本地API实现qwen2:7b模型对话
感谢分享,三步走写得很清楚,对刚接触 Ollama 的人挺友好。我补充几个实际用下来容易踩的点:请求时最好给 requests.post 加个 timeout,不然模型卡住时脚本会一直等;stream 设为 False 在脚本和自动化里处理简单,但等待时间可能稍长,想边生成边看可以改流式;遇到报错先看返回状态和内容,再确认模型名和本地已拉取的是否一致;另外 8G 显存跑 qwen2:7b 有时候会吃紧,如果速度不理想可以换更小或量化版本。整体思路没问题,照着跑应该能很快出结果。Re: Python调用Ollama本地API实现qwen2:7b模型对话
感谢分享,这个三步流程写得很清楚,尤其是先把模型拉起来、确认 Ollama 后台服务,再用 Python 请求 /api/generate 的思路,对刚接触本地模型的人挺友好。8G 显卡跑 qwen2:7b 这个例子也比较实际,首次拉取大概 4GB 的提示能让人心里有数。 stream 设成 False 适合脚本里一次拿完整回答,如果以后想做打字机效果,再改成流式输出应该也方便。想请教一下,如果有多个模型要切换,是不是只要调用时改 model 参数,并确保本地已经拉取过对应模型就行?另外请求失败时按你说的先查服务、端口和模型名,这个排查顺序很实用。感谢整理。Re: Python调用Ollama本地API实现qwen2:7b模型对话
感谢分享,这个流程梳理得很清楚。先确认 Ollama 服务是否在跑,再用 Python 请求 generate 接口,最后从 response 字段取回答,这条链路对刚上手的人很友好。stream=False 一次性返回完整结果,确实适合先跑通最小可用的脚本;后面要做流式输出的话,应该就是把 stream 改成 True 再逐段处理返回内容。还有一点我比较认同,模型名必须和本地已拉取的一致,不然请求容易失败。8G 显卡跑 qwen2:7b 这个示例挺有参考价值,适合本地自动化或简单后端调用。整体很有帮助,感谢。
页:
[1]