调用 ChatGPT 等云端大模型时,总被 Token 限额、API 密钥、网络环境卡脖子;问几个问题就提示额度用尽,想多测试几次都束手束脚? 今天就教你一个「零成本、无限 Token」的解决方案:用 Python 本地连接 Ollama,直接调用 Llama3、Phi3、Qwen 等热门大模型,全程离线运行,想怎么用就怎么用!一、先搞懂:Ollama 是什么?
Ollama 是一款轻量级的开源工具,能让你在本地电脑上一键部署、运行各类大模型,核心优势:
✅ 无需 GPU 也能跑(CPU 模式即可,有显卡更流畅);
✅ 内置 Llama3、Phi3、通义千问、百川等数十款主流模型;
✅ 完全免费,无调用次数 / Token 限制;
✅ 提供简单的 API 接口,Python 可直接调用。
二、准备工作:3 分钟搞定环境部署
1. 安装 Ollama Windows/Mac/Linux 通用:访问 Ollama 官网(https://ollama.com/),下载对应系统的安装包,一键安装即可。 验证安装:打开终端 / 命令提示符,输入 ollama -v,能显示版本号即安装成功。
2. 拉取大模型(以 Llama3 为例) 终端执行命令,自动下载并安装模型(首次下载需几分钟,视网络而定):
ollama pull llama3 # 拉取Llama3-8B模型(轻量版,适合本地运行)# 可选其他模型:ollama pull phi3 / ollama pull qwen # 阿里通义千问
3. 验证模型运行 终端执行 ollama run llama3,输入问题如「解释 Python 列表推导式」,能得到回复即模型部署成功。三、核心代码:Python 本地调用 Ollama(无限 Token 版) 1. 基础调用:单次对话
无需任何第三方库(用 Python 内置的 requests),直接调用 Ollama 的本地 API:
import requestsimport jsondef call_ollama_local(prompt, model="llama3"): """ 本地调用Ollama大模型 :param prompt: 用户提问内容 :param model: 模型名称(llama3/phi3/qwen等) :return: 模型回复 """ # Ollama本地API地址(默认端口11434) url = "http://localhost:11434/v1" # 请求参数(支持system角色设定,和云端API逻辑一致) data = { "model": model, "prompt": prompt, "system": "你是专业的Python编程助手,回答简洁易懂,适合新手", # 设定模型角色 "stream": False # 关闭流式输出,直接返回完整结果 } try: # 发送POST请求调用本地模型 response = requests.post(url, json=data) response.raise_for_status() # 捕获HTTP错误 result = json.loads(response.text) return result["response"] except Exception as e: return f"调用失败:{str(e)}"# 测试调用(无限次,无Token限制)if __name__ == "__main__": user_question = "用Python写一个冒泡排序,加详细注释" answer = call_ollama_local(user_question) print("模型回复:\n", answer)
2. 进阶版:带上下文的多轮对话
解决大模型「记不住历史」的问题,手动维护对话上下文,实现连续对话:
import requestsimport json# 初始化对话历史(保留system规则+所有历史消息)conversation_history = []def ollama_chat_with_context(user_input, model="llama3"): global conversation_history # 1. 拼接上下文:把历史对话整合为完整prompt prompt = "" # 添加system规则(只初始化一次) if not conversation_history: system_prompt = "你是Python编程导师,只回答Python相关问题,语气友好" prompt += f"系统规则:{system_prompt}\n" # 添加历史对话 for role, content in conversation_history: prompt += f"{role}:{content}\n" # 添加当前用户输入 prompt += f"用户:{user_input}\n助手:" # 2. 调用本地Ollama API url = "http://localhost:11434/v1" data = { "model": model, "prompt": prompt, "stream": False } try: response = requests.post(url, json=data) response.raise_for_status() result = json.loads(response.text) ai_response = result["response"] # 3. 更新对话历史(用户输入+AI回复) conversation_history.append(("用户", user_input)) conversation_history.append(("助手", ai_response)) return ai_response except Exception as e: return f"调用失败:{str(e)}"# 测试多轮对话(无限次,无Token限制)if __name__ == "__main__": # 第一轮对话 print("===== 第一轮 =====") q1 = "解释什么是Python装饰器" a1 = ollama_chat_with_context(q1) print(f"用户:{q1}\n助手:{a1}\n") # 第二轮对话(模型能记住上一轮的装饰器话题) print("===== 第二轮 =====") q2 = "举个实际开发中用装饰器的例子" a2 = ollama_chat_with_context(q2) print(f"用户:{q2}\n助手:{a2}\n") # 第三轮对话(继续追问) print("===== 第三轮 =====") q3 = "这个例子能优化吗?" a3 = ollama_chat_with_context(q3) print(f"用户:{q3}\n助手:{a3}")
四、关键优势 & 注意事项
✅ 核心优势
- 无限 Token:本地运行,无调用次数、Token 限额;
- 完全免费:无需充值、无需 API 密钥,告别云端模型的付费陷阱;
- 隐私安全:数据全程在本地,无需把敏感问题 / 代码上传到云端;
- 轻量化:支持低配置电脑(4G 内存即可运行轻量模型)。
⚠️ 注意事项
- 首次拉取模型需要下载几十 GB 的文件(视模型大小而定),建议在网络稳定时操作;
- CPU 运行大模型会稍慢(约几秒 / 次),有 NVIDIA 显卡可安装 CUDA 加速;
- 支持的模型可通过
ollama list 查看,想卸载模型用 ollama rm 模型名。
五、拓展玩法
- 结合 Gradio/Streamlit 快速做一个本地聊天界面;
- 调用 Ollama 实现本地代码生成、文档解析、自动化问答;
- 替换模型参数(如
model="phi3"),测试不同大模型的回复效果。