🛶 Open source • PT-BR

Uma camada fina sobre os SDKs de LLM

Troque provider/model/api_key sem mudar o resto do código. Templates {{ }}, structured output, vision, áudio, tools, MCP, RAG, async, retry + fallback e custo na resposta.

Ler as docs
$pip install "jangada-ai[all,rag,mcp]"

🤖 Use no Claude Code, Cursor, Codex e outras IAs pra implementar mais rápido: llms.txt · llms-full.txt

trocar_provider.py
from jangada_ai import LLM

# troque o provider numa linha — o resto do código não muda
llm = LLM("anthropic", model="claude-sonnet-4-5", api_key=...)
llm = LLM("openai",    model="gpt-5",            api_key=...)

resp = llm.complete("Resuma {{ tema }} em uma frase.", tema="jangadas")
print(resp.text, resp.cost)

Mesma API, qualquer provider

AnthropicOpenAIGroqGemini

Tudo que você precisa, normalizado

A complexidade de cada SDK fica isolada num adapter. Fora dele, só circulam tipos normalizados.

Structured output
Respostas validadas em modelos Pydantic, igual em todos os providers.
Vision
Imagens como entrada — bounding boxes e extração de documentos.
Áudio
Transcrição via OpenAI, Groq e Gemini com a mesma chamada.
Documentos
pdf, docx, csv e xlsx viram texto — sem precisar de vision.
Tools
Function calling a partir de função, Pydantic ou dict.
MCP
Model Context Protocol: tools, resources, prompts e agente próprio.
RAG
chunk, embed e busca híbrida (BM25 + vetorial) com pgvector/Mongo.
Retry + fallback
Tenta de novo e cai para outro provider quando o erro permite.
Custo na resposta
Cada Completion já vem com usage e custo aproximado calculado.
Async
Paridade total sync/async — todo método tem sua versão a*.

Direto ao ponto

Structured output com Pydantic e fallback multi-provider — sem boilerplate.

Structured output (Pydantic)

extracao.py
from pydantic import BaseModel
from jangada_ai import LLM

class NotaFiscal(BaseModel):
    fornecedor: str
    total: float

llm = LLM("openai", model="gpt-5")
nota = llm.parse("Extraia os dados.", schema=NotaFiscal, files=["nf.pdf"])
print(nota.fornecedor, nota.total)

Fallback multi-provider

fallback.py
from jangada_ai import LLM

# primário + cadeia de fallback por erro (rate limit, timeout, 5xx, 404)
llm = LLM("anthropic", model="claude-sonnet-4-5").with_fallback(
    LLM("openai", model="gpt-5"),
    LLM("groq",   model="llama-4-scout"),
)

# falhou no primário? failover automático, sem mudar a chamada
resp = llm.complete("Explique jangadas em 1 frase.")
Plataforma SaaS

Observability: veja cada trace

Envie lotes de chamadas para a plataforma e acompanhe traces, latência, tokens e custo num dashboard. Login e token — seus dados não vivem na nuvem do cliente.

Abrir o dashboard
complete · gpt-5412ms$0.0021
parse · claude-sonnet-4-5688ms$0.0044
embed · gemini-embedding-001120ms$0.0001

Instale só o que vai usar

O core é leve (só Pydantic). Cada SDK e capacidade é um extra opcional — escolha um provider, combine o que precisar ou pegue tudo.

Escolha um provider
Instale o SDK do que vai usar.
$pip install "jangada-ai[anthropic]"

Claude

$pip install "jangada-ai[openai]"

GPT

$pip install "jangada-ai[groq]"

Groq

$pip install "jangada-ai[gemini]"

Gemini

Capacidades opcionais
Adicione só quando precisar.
$pip install "jangada-ai[files]"

Documentos (pdf/docx/csv/xlsx)

$pip install "jangada-ai[rag]"

RAG (pgvector/mongo/BM25)

$pip install "jangada-ai[mcp]"

Cliente MCP

Atalhos e combinações
Vírgula junta vários extras.
$pip install "jangada-ai[all]"

Todos os providers + files

$pip install "jangada-ai[anthropic,groq]"

Combine extras com vírgula

$pip install "jangada-ai[all,rag,mcp]"

Tudo, de verdade

Atenção: o extra [all] traz todos os providers + files, mas não inclui rag nem mcp — esses entram à parte, ex.: pip install "jangada-ai[all,rag,mcp]".

Comece a remar com a Jangada AI 🛶

Instale, escolha um provider e troque quando quiser — sem reescrever nada.