Flama

O framework de produção para IA Preditiva e Generativa. Sirva qualquer modelo como uma API em uma linha, com endpoints compatíveis com OpenAI/Anthropic/Ollama, uma interface de chat integrada e MCP nativo.

Documentação

Flama

Ilumine seus modelos 🔥

Production workflow status Package version PyPI - Python Version Downloads Documentation GitHub Discussions


Flama

O framework de produção para IA Preditiva e Generativa.

Transforme qualquer modelo em uma API de produção com uma única linha de código. Sirva modelos preditivos e generativos em um núcleo baseado em Rust e exponha suas ferramentas a agentes de IA por meio do Model Context Protocol (MCP).

Flama é o framework para Aplicações Leves, Modelos de inteligência artificial e Automação. Ele empacota um modelo de qualquer um dos principais frameworks em um formato portátil único (o arquivo .flm), para que cada modelo pareça igual à sua API, independentemente de sua origem, e o serve por HTTP em segundos.

The streaming chat UI that ships with every model served by Flama

  • 📦 Qualquer framework, um formato. Empacote scikit-learn, TensorFlow, PyTorch ou um LLM em um único artefato portátil .flm.
  • ⬇️ Modelos sob demanda. Baixe e empacote qualquer modelo do HuggingFace Hub com um comando.
  • 🤖 Serviço de IA generativa. Sirva LLMs com endpoints compatíveis com OpenAI, Anthropic e Ollama, lado a lado.
  • 💬 Chatbot pronto para uso. Todo modelo servido inclui uma interface de chat em streaming polida em /chat/, com suporte a Markdown, LaTeX e Mermaid.
  • 🔌 MCP nativo. Exponha ferramentas, recursos e prompts a agentes de IA com um único decorador, com esquemas derivados das suas anotações de tipo.
  • ⚡ Núcleo baseado em Rust. Roteamento, codificação JSON, análise de requisições e compressão compilados em código nativo, distribuídos como wheels simples.
  • 🚀 Pronto para produção desde o início. Vá de um modelo empacotado a um serviço em execução via CLI, em Python, com um arquivo de especificação ou dentro de um contêiner.

Instalação

Flama é publicado no PyPI e distribui wheels nativos para todas as versões suportadas do Python (3.10 a 3.14) em Linux, macOS e Windows. Nenhuma toolchain Rust é necessária.

pip install flama

Suporte a schema, banco de dados e LLM são extras opcionais, então você instala apenas o que precisa:

pip install "flama[pydantic]"      # schema validation (also: typesystem, marshmallow)
pip install "flama[database]"      # SQLAlchemy-backed resources
pip install "flama[llm]"           # generative AI serving (vLLM on Linux, MLX on Apple Silicon)
pip install "flama[full]"          # everything

Consulte a documentação de instalação para detalhes.

Início rápido

Os mesmos dois comandos servem ambas as famílias de modelos: empacote-o em um .flm e, em seguida, aponte o flama serve para o arquivo. Nenhum código de aplicação em nenhum dos casos.

Sirva um modelo preditivo

Empacote um modelo treinado em qualquer framework principal:

import flama
from sklearn.neural_network import MLPClassifier

model = MLPClassifier(activation="tanh", hidden_layer_sizes=(10,))
# ... training ...
flama.dump(model, family="ml", path="model.flm", metrics={"accuracy": 0.947})

Ou busque um diretamente do Hub e, em seguida, sirva-o:

flama get --family ml --source huggingface scikit-learn/Fish-Weight
flama serve --model file=scikit-learn_Fish-Weight.flm,url=/model,name=fish

Você obtém dois endpoints, um schema OpenAPI em /schema/ e a interface Swagger em /docs/. GET /model/ retorna os metadados do artefato; POST /model/predict/ executa a inferência:

curl -X POST http://127.0.0.1:8000/model/predict/ \
  -H "Content-Type: application/json" \
  -d '{"input": [[23.2, 25.4, 30.0, 11.52, 4.02]]}'
{"output": [242.0]}

Saiba mais na documentação de IA preditiva.

Sirva um modelo generativo

Do zero a uma API de produção com uma interface de chat integrada em três comandos:

pip install "flama[llm,pydantic]"

# 1. Download and package a model from HuggingFace into a portable .flm
flama get --family llm --source huggingface mlx-community/gemma-4-E2B-it-qat-4bit

# 2. Try it straight from your terminal, no server needed
echo "What is Flama?" | flama model mlx-community_gemma-4-E2B-it-qat-4bit.flm stream --system "Be concise."

# 3. Serve it over HTTP
flama serve --model file=mlx-community_gemma-4-E2B-it-qat-4bit.flm,url=/,name=gemma

É isso: uma API HTTP completa, uma interface de chat em streaming em http://127.0.0.1:8000/chat/ e endpoints multi-dialeto. O mesmo arquivo .flm roda em vLLM (Linux com CUDA) ou MLX (Apple Silicon), com Flama selecionando o backend no momento do carregamento.

A single flama serve command booting a packaged model into a live API

O passo 2 acima não precisa de servidor algum. Envie um prompt para o flama model ... stream e a resposta flui diretamente para o seu shell:

Chatting with a model straight from the terminal using flama model stream

Saiba mais na documentação de IA generativa.

Fale os protocolos que seus clientes já usam

Um único modelo pode servir vários protocolos de rede simultaneamente, para que clientes OpenAI, Anthropic e Ollama existentes funcionem sem alterações de código — basta apontá-los para o seu servidor.

DialetoPrefixoRotas representativas
Nativo(nenhum)/query/, /stream/, /chat/
OpenAI/openai/v1/chat/completions, /v1/completions, /v1/responses, /v1/models
Anthropic/anthropic/v1/messages, /v1/models
Ollama/ollama/api/chat, /api/generate, /api/tags

Inspecione, teste e implante

Todo arquivo .flm é autodescritivo. Além dos pesos, ele carrega o framework e a versão, a classe do modelo, seus hiperparâmetros, as métricas de treinamento e quaisquer arquivos auxiliares necessários no momento da inferência. Os metadados ficam antes dos pesos, então lê-los é uma análise de cabeçalho, não uma descompressão completa, mesmo em um artefato de vários gigabytes.

flama model model.flm inspect --pretty
{
  "meta": {
    "id": "42342016-bade-48d4-a185-0a3352fb7561",
    "timestamp": "2026-09-15T10:30:00",
    "framework": {"family": "ml", "lib": "sklearn", "version": "1.9.1", "config": null},
    "model": {
      "obj": "RandomForestClassifier",
      "params": {"n_estimators": 100, "max_depth": 8},
      "metrics": {"accuracy": 0.947, "f1": 0.932}
    },
    "extra": {"dataset": "prod-2024-q3", "author": "team-ml"},
    "capabilities": {"kind": "ml"}
  },
  "manifest": []
}

Como as métricas viajam dentro do arquivo, um job de CI pode condicionar a promoção a elas sem levantar um servidor. O mesmo grupo de comandos executa inferência offline, para que um conjunto de referência seja pontuado exatamente no caminho de código que o servidor usaria:

flama model model.flm run -i reference.json -o predictions.json

Implante vários modelos a partir de um único arquivo

flama start lê um flama.json descrevendo a aplicação e os modelos que ela serve, o que torna uma implantação revisável em um pull request:

{
  "app": {
    "title": "ML Platform",
    "models": [
      {"url": "/sentiment", "path": "models/sentiment.flm", "name": "sentiment"},
      {"url": "/assistant", "path": "models/assistant.flm", "name": "assistant",
       "serving": ["native", "openai"]}
    ]
  },
  "server": {"host": "0.0.0.0", "port": 8000, "workers": 4}
}
flama start --create-config full   # write a template to start from
flama start                        # run it

Toda opção também se vincula a uma variável de ambiente FLAMA_*, para que uma única imagem sirva todos os ambientes. Imagens oficiais são distribuídas por versão do Python e biblioteca de schema, o que deixa o Dockerfile como um FROM e dois COPYs:

FROM vortico/flama:latest-python3.12-pydantic
COPY models/ models/
COPY flama.json .
CMD ["start"]

Saiba mais na documentação da CLI.

Exponha ferramentas a agentes de IA com MCP

Flama oferece suporte nativo e de primeira classe ao Model Context Protocol. Declare uma capacidade com um único decorador, monte o servidor, e o Flama deriva o JSON Schema das suas anotações de tipo e o serve por um protocolo sem estado:

from flama import Flama

app = Flama()
app.mcp.add_server("/mcp/tools/", "tools")


@app.mcp.tool("add", description="Add two integers", mcp="tools")
def add(a: int, b: int) -> int:
    return a + b

Qualquer cliente compatível com MCP (Claude, Cursor, VS Code Copilot ou um agente personalizado) pode descobri-lo e invocá-lo. Tasks, Elicitation e MCP Apps estão incluídos. Saiba mais na documentação do MCP.

E um framework de API completo

Flama também é um kit de ferramentas completo para construir APIs de produção:

  • Recursos com métodos CRUD padrão sobre tabelas SQLAlchemy.
  • Injeção de dependências via Components, a base do ecossistema de plugins.
  • Schemas adaptáveis com Pydantic, Typesystem ou Marshmallow, todos extras opcionais.
  • OpenAPI gerado automaticamente, além de Swagger UI e ReDoc.
  • Paginação, tarefas em segundo plano, eventos de ciclo de vida e autenticação JWT.
  • HTTP com streaming em primeiro lugar, com Server-Sent Events e respostas NDJSON.
  • Padrões de Domain-Driven Design: repositórios, workers e modelos de domínio.
  • Codemods flama upgrade que reescrevem imports e símbolos renomeados entre versões principais.

Exemplos

Um conjunto selecionado de exemplos executáveis, alinhado à documentação, vive em vortico/flama-examples, cobrindo fundamentos, a CLI, tópicos avançados, IA preditiva, IA generativa e domain-driven design.

Documentação

Visite https://flama.dev/docs/ para a documentação completa, incluindo o início rápido e o guia da CLI.

Use Flama com seu assistente de IA

Adicione skill.md ao seu assistente de codificação de IA e deixe-o criar aplicativos Flama com conhecimento completo do framework.

Autores

Contribuindo

Este projeto é totalmente aberto a contribuições; se você tiver uma boa ideia, leia nossa documentação de contribuição antes de enviar um pull request. Perguntas e ideias são bem-vindas nas Discussões do GitHub.

Suporte

Se você acha o Flama útil para construir APIs robustas de Machine Learning e IA Generativa, a melhor maneira de apoiar nosso trabalho é nos dar uma ⭐ no GitHub — é o melhor combustível para nossos esforços de desenvolvimento. Você também pode seguir a Vortico para atualizações.

Histórico de Estrelas

Star History Chart

Licença

Flama é distribuído sob a licença Apache 2.0.