极客前沿

50行Python搭建本地LLM网关,新手也能轻松跑通

2026-07-17 01:31
DEV Ollama
查看原文

学会用Python搭建一个简单的API网关,自动路由多个本地大模型,无需手动切换机器。

如果你有多台电脑(比如Mac、Windows、Linux服务器)都装了本地大模型,每次用的时候都要手动记IP地址和模型名,非常麻烦。本文教你用50行Python代码搭建一个网关,把所有请求统一到一个地址,网关自动帮你分发到合适的机器上。适合零基础读者,只需会复制粘贴和修改几个参数。

Tutorial Image

准备环境

  • 任意一台电脑(Windows/Mac/Linux均可)
  • Python 3.6以上版本(如果没装,去python.org下载安装)
  • 其他机器上已经安装了Ollama(一个让你在本地运行大模型的工具)并加载了模型

安装步骤

  1. 在网关机器上新建一个文件,命名为gateway.py
  2. 复制以下代码到文件中(替换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)
  3. 在终端中运行:pip install flask requests(安装依赖库)。
  4. 运行网关:python gateway.py。如果看到“Running on http://0.0.0.0:11435”,说明成功。
  5. 将你所有脚本中的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

返回 AI技术