50行Python搭建本地LLM网关,新手也能轻松跑通
学会用Python搭建一个简单的API网关,自动路由多个本地大模型,无需手动切换机器。
如果你有多台电脑(比如Mac、Windows、Linux服务器)都装了本地大模型,每次用的时候都要手动记IP地址和模型名,非常麻烦。本文教你用50行Python代码搭建一个网关,把所有请求统一到一个地址,网关自动帮你分发到合适的机器上。适合零基础读者,只需会复制粘贴和修改几个参数。
准备环境
- 任意一台电脑(Windows/Mac/Linux均可)
- Python 3.6以上版本(如果没装,去python.org下载安装)
- 其他机器上已经安装了Ollama(一个让你在本地运行大模型的工具)并加载了模型
安装步骤
- 在网关机器上新建一个文件,命名为
gateway.py。 - 复制以下代码到文件中(替换IP地址和模型名):
from flask import Flask, request, jsonify import requests app = Flask(__name__) MACHINES = { "mac": {"ip": "192.168.1.10", "port": 11434, "models": ["llama2"]}, "win": {"ip": "192.168.1.20", "port": 11434, "models": ["codellama"]}, "ubuntu": {"ip": "192.168.1.30", "port": 11434, "models": ["mixtral"]} } def find_machine(model): for name, info in MACHINES.items(): if model in info["models"]: return f"http://{info['ip']}:{info['port']}" return None @app.route('/api/generate', methods=['POST']) def generate(): data = request.json model = data.get('model') machine_url = find_machine(model) if not machine_url: return jsonify({"error": "Model not found"}), 404 resp = requests.post(f"{machine_url}/api/generate", json=data) return resp.text, resp.status_code @app.route('/health') def health(): status = {} for name, info in MACHINES.items(): try: r = requests.get(f"http://{info['ip']}:{info['port']}") status[name] = "up" if r.ok else "down" except: status[name] = "down" return jsonify(status) if __name__ == '__main__': app.run(host='0.0.0.0', port=11435) - 在终端中运行:
pip install flask requests(安装依赖库)。 - 运行网关:
python gateway.py。如果看到“Running on http://0.0.0.0:11435”,说明成功。 - 将你所有脚本中的API地址改为
http://你的网关IP:11435,模型名保持不变。
验证是否成功
- 在浏览器或命令行中访问
http://你的网关IP:11435/health,查看各机器状态。 - 发送一个测试请求(例如使用curl):
curl http://你的网关IP:11435/api/generate -d '{"model": "llama2", "prompt": "Hello"}'。如果返回结果,说明网关正常工作。
下一步可以做什么
- 添加更多机器:在
MACHINES字典中增加新条目。 - 实现简单的负载均衡:如果两台机器有相同模型,可以轮询。
- 增加错误处理:比如重试或超时。
这个网关虽然简单,但足够家庭实验室使用。记住,复杂是敌人,50行代码能解决的问题,别搞成微服务。
内容来源
DEV Ollama
发布时间
2026-07-17 01:31