flama
vortico/flama加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在 Jupyter Notebook 里调通了一个效果不错的 ML 模型,兴致勃勃地想分享给团队使用,却发现从模型文件导出、编写 REST API、配置服务器、处理并发、到上线监控——每一环节都需要重新学习一整套工具链,前后折腾了整整一周才勉强跑通一个接口。
这正是 Vortico 团队创始人 José Antonio Perdiguero López 和 Miguel Durán-Olivencia 创办 Flama 的初衷。他们在企业级 ML 部署领域深耕多年,深知"模型训练只是起点,部署才是真正的战场"。2022 年,他们决定将多年的生产经验封装成一个框架,让任何人都能将手中的模型在"一条命令"内变成生产级 API。
Flama 不是一个简单的 Flask 包装器,而是一个从底层重新设计的推理运行时。团队选择了 Rust 作为核心语言,将路由、JSON 序列化、HTTP 解析等高频路径编译为原生代码,再通过 Python FFI 暴露接口。这意味着 Flama 既拥有 Rust 的性能,又保持了 Python 的易用性——用户写 Python 代码,享受原生级别的吞吐量。
目前 Flama 已发布 2.2.2 版本,支持 Python 3.10 到 3.14,提供了从模型打包、推理服务到 AI Agent 工具暴露的完整工具链,在 GitHub 拥有约 300 颗星,被广泛应用于需要快速将 AI 能力产品化的团队。

Flama 提出了 .flm(Flama Model) 这一跨框架模型格式。无论你的模型是用 scikit-learn 训练的线性回归、用 TensorFlow 构建的神经网络,还是用 PyTorch 微调的大语言模型,只需一行代码即可打包:
import flama
from sklearn.neural_network import MLPClassifier
model = MLPClassifier(activation="tanh", hidden_layer_sizes=(10,))
# ... 训练代码 ...
flama.dump(model, "model.flm")
Flama 甚至内置了 HuggingFace Hub 集成,直接从网上拉取模型并打包:
flama get --family llm --source huggingface mlx-community/gemma-4-E2B-it-qat-4bit
打包后的 .flm 文件是平台无关的,可以在不同硬件后端之间无缝切换——Linux CUDA 环境用 vLLM 加速,Apple Silicon 用 MLX,Flama 在加载时自动选择最优后端。
模型打包完成后,启动推理服务只需一条命令:
flama serve --model file=mlx-community_gemma-4-E2B-it-qat-4bit.flm,url=/,name=gemma
这条命令会同时启动:
/query/、流式 /stream/、对话 /chat//v1/chat/completions、/v1/completions/v1/messages/api/chathttp://127.0.0.1:8000/chat/,支持 Markdown、LaTeX、Mermaid 渲染这种多协议兼容设计意味着:不需要修改任何客户端代码,直接用 OpenAI SDK 或 Claude SDK 就能调用 Flama 服务,极大降低了接入成本。

2024 年大模型狂潮中,AI Agent 是最热门的应用方向之一。Flama 抢先支持了 Model Context Protocol(MCP),让你可以用装饰器将 Python 函数暴露为 AI Agent 可调用的工具:
from flama import Flama
app = Flama()
app.mcp.add_server("/mcp/tools/", "tools")
@app.mcp.tool("add", description="两数相加", mcp="tools")
def add(a: int, b: int) -> int:
return a + b
Flama 自动从类型注解生成 JSON Schema,Claude、Cursor、VS Code Copilot 或任何 MCP 客户端都能发现并调用这些工具。结合流式对话 UI,Flama 实际上是一个完整的 AI Agent 后端框架。
除了模型推理,Flama 还是一个功能完整的 ASGI Web 框架,内置:
| 功能 | 说明 |
|---|---|
| 资源管理 | 基于 SQLAlchemy 的标准 CRUD 操作 |
| 依赖注入 | Component 机制实现插件化 |
| Schema 验证 | 支持 Pydantic、Typesystem、Marshmallow(均为可选依赖) |
| 自动文档 | 自动生成 OpenAPI 文档 + Swagger UI + ReDoc |
| 分页 | 内置分页支持 |
| 后台任务 | 异步任务队列 |
| 认证 | JWT 认证 |
| DDD 模式 | 内置仓储、Worker、领域模型等 DDD 原语 |
| 升级迁移 | flama upgrade 自动重写跨版本的 import 和符号 |
┌─────────────────────────────────┐
│ Python 用户代码 │ ← 用户编写业务逻辑
├─────────────────────────────────┤
│ Python API 层 (flama/) │ ← endpoints, resources, mcp, models
├─────────────────────────────────┤
│ Rust 核心 (lib/core/) │ ← 路由、JSON、HTTP 解析(Cargo 构建)
├─────────────────────────────────┤
│ ASGI 服务器 (Uvicorn) │ ← ASGI 接口,承载异步 HTTP
└─────────────────────────────────┘
| 层级 | 技术选型 | 作用 |
|---|---|---|
| 核心语言 | Rust (lib/core) | 路由、JSON 序列化、HTTP 解析,性能关键路径 |
| 接口语言 | Python 3.10-3.14 | 用户 API、ML 框架集成 |
| Web 框架 | Uvicorn (ASGI) | 异步 HTTP 服务器 |
| 模板引擎 | Jinja2 | Chat UI 模板渲染 |
| LLM 推理 | vLLM (Linux/CUDA), MLX (Apple Silicon) | 大语言模型加速推理 |
| 数据库 | SQLAlchemy (可选) | ORM,支持异步 |
| Schema | Pydantic / Marshmallow (可选) | 请求/响应验证 |
Flama 提供了 Dockerfiles/slim/Dockerfile,基于官方 Python slim 镜像,最小化依赖:
FROM python:${PYTHON_VERSION}-slim
RUN pip install flama[${SCHEMAS_LIB},database]
ENTRYPOINT ["flama"]
支持通过构建参数控制 Python 版本和 Schema 库,镜像体积控制在 200MB 以内。
.flm 格式锁定:一旦采用 Flama 打包格式,模型生命周期管理将与 Flama 强绑定,迁移成本较高。Flama 的增长曲线反映了一个趋势:LLM 应用开发的重心正在从"训练/微调"向"部署/推理"迁移。2024 年以来,随着 GPT-4、Claude 等基础模型能力趋于稳定,开发者的关注点逐渐转向如何在生产环境中高效服务这些模型——推理框架的需求因此爆发。
在这一赛道上,Flama 面临的主要竞争对手包括:
Flama 的差异化在于从模型打包到 API 暴露的全链路覆盖,加上 MCP 先发支持,在 Agent 时代的工程化框架竞争中占据了一个独特生态位。
