当前位置:首页>python>如何用 Python + Ollama 做一个 AI SaaS 系统(从0到上线)

如何用 Python + Ollama 做一个 AI SaaS 系统(从0到上线)

  • 2026-10-11 08:31:21
如何用 Python + Ollama 做一个 AI SaaS 系统(从0到上线)

一、 核心架构设计

要构建一个可扩展的 SaaS,不能简单地让前端直连 Ollama。你需要一个稳健的后端来处理用户鉴权、计费、排队和模型调度。

  • 前端: Next.js 或 Vue3 (处理用户交互、流式输出展示)。

  • 后端 API: FastAPI (Python 框架,原生支持异步,非常适合处理 AI 的长连接)。

  • 模型引擎: Ollama (运行 Llama 3.2, DeepSeek-V3 等开源模型)。

  • 任务队列: Celery + Redis (处理耗时较长的推理任务,防止 API 超时)。

  • 数据库: PostgreSQL (存储用户信息、对话历史) + Stripe (支付订阅)。

二、构建一个名为 "OllaSaaS" 的原型
它包含:
  1. API 层:处理业务逻辑、流式输出。

  2. 鉴权层:简单的 API Key 校验。

  3. 模型层:后端与本地 Ollama 通信。

📂 项目目录结构:

ollasaas-backend/├── app/│   ├── __init__.py│   ├── main.py          # 程序主入口 (FastAPI)│   ├── auth.py          # 简单的 API Key 鉴权逻辑│   ├── schemas.py       # Pydantic 数据模型 (输入/输出定义)│   ├── services/│   │   ├── __init__.py│   │   └── ollama_sdk.py # 封装 Ollama 的调用│   └── database.py      # 数据库连接 (预留给用户/计费)├── .env                 # 环境变量 (存储 API Keys, 数据库 URL)├── requirements.txt     # 项目依赖└── Dockerfile           # 容器化部署

三、核心代码实现

1. 依赖配置文件 (requirements.txt)

fastapiuvicornollamapython-dotenvpydantic

2. 环境变量 (.env)

OLLAMA_HOST=http://localhost:11434ADMIN_API_KEY=sk-ollasaas-123456DEFAULT_MODEL=llama3.2

3. Ollama 封装逻辑 (app/services/ollama_sdk.py)

这里利用 ollama-python 的异步客户端,确保 SaaS 能够处理高并发请求。

import osfrom ollama import AsyncClientfrom dotenv import load_dotenvload_dotenv()class OllamaService:    def __init__(self):        self.client = AsyncClient(host=os.getenv("OLLAMA_HOST"))        self.model = os.getenv("DEFAULT_MODEL", "llama3.2")    async def generate_stream(self, prompt: str):        """流式生成响应"""        async for chunk in await self.client.chat(            model=self.model,            messages=[{'role': 'user', 'content': prompt}],            stream=True        ):            yield chunk['message']['content']ollama_service = OllamaService()

4. 简单鉴权层 (app/auth.py)

在 SaaS 中,你需要根据 API Key 来识别用户并扣除额度。

import osfrom fastapi import HTTPException, Securityfrom fastapi.security.api_key import APIKeyHeaderfrom dotenv import load_dotenvload_dotenv()API_KEY_NAME = "X-API-KEY"api_key_header = APIKeyHeader(name=API_KEY_NAME, auto_error=True)async def verify_api_key(api_key: str = Security(api_key_header)):    if api_key != os.getenv("ADMIN_API_KEY"):        raise HTTPException(status_code=403, detail="无效的 API Key")    return api_key

5. 主程序 (app/main.py)

这是整个 SaaS 的大脑,负责路由和流式响应。

from fastapi import FastAPI, Dependsfrom fastapi.responses import StreamingResponsefrom app.services.ollama_sdk import ollama_servicefrom app.auth import verify_api_keyfrom pydantic import BaseModelapp = FastAPI(title="OllaSaaS API")class ChatRequest(BaseModel):    prompt: str@app.get("/")def read_root():    return {"status": "OllaSaaS is running"}@app.post("/v1/chat/stream")async def chat_stream(    request: ChatRequest,     token: str = Depends(verify_api_key)):    """    SaaS 核心接口:接受 Prompt,验证 Key,返回 AI 流式数据    """    return StreamingResponse(        ollama_service.generate_stream(request.prompt),        media_type="text/event-stream"    )if __name__ == "__main__":    import uvicorn    uvicorn.run(app, host="0.0.0.0", port=8000)

四、🚀 如何从 0 运行起来?

第一步:启动 Ollama

确保你的电脑或服务器已安装 Ollama,并运行:

ollama run llama3.2

第二步:运行后端

  1. 创建虚拟环境:python -v venv venv

  2. 激活并安装依赖:pip install -r requirements.txt

  3. 启动服务:python -m app.main

第三步:测试接口

你可以使用 curl 模拟前端请求:

curl -X POST http://localhost:8000/v1/chat/stream \     -H "X-API-KEY: sk-ollasaas-123456" \     -H "Content-Type: application/json" \     -d '{"prompt": "你好,请自我介绍"}'

🛠️ 下一步有能力可以去实现的,上线

这只是一个骨架,要真正上线赚钱,还需要补全这三个模块:

  1. 数据库集成 (PostgreSQL):

    • 创建 users 表存储 api_key 和 balance (余额)。

    • 每次 API 调用结束后,根据返回的 Token 数量扣除用户余额。

  2. 前端门户 (Dashboard):

    • 让用户能注册、充值、查看自己的 API 调用记录。

  3. 反向代理 (Nginx):

    • 配置 SSL 证书 (HTTPS),这是上线 SaaS 的硬性要求。

最新文章

随机文章