Mistral
Provider mistral. Adapter sobre o SDK oficial mistralai (não é o caminho
OpenAI-compat). Dá acesso aos modelos da Mistral pela mesma LLM(...) da jangada,
com texto, vision, streaming, structured output, function calling, embeddings,
OCR/Document AI e transcrição de áudio (Voxtral).
pip install "jangada-ai[mistral]"provider=:"mistral"- Autenticação: variável de ambiente
MISTRAL_API_KEY(ouapi_key=no construtor). - Modelo: o id da Mistral, ex.:
mistral-large-latest,mistral-medium-latest,mistral-small-latest,ministral-8b-latest,codestral-latest,mistral-embed,mistral-ocr-latest,voxtral-mini-latest.
from jangada_ai import LLM
llm = LLM("mistral", "mistral-large-latest")
resp = llm.complete("Resuma {{ tema }} em uma frase.", tema="jangadas")
print(resp.text, resp.cost)Configuração via ambiente
No .env (ou variáveis do processo):
MISTRAL_API_KEY=...O que faz
- Texto e streaming via
chat.complete/chat.stream(e versões async). - Structured output (
parse): helper nativochat.parse(response_format=Modelo)— aceita o modelo Pydantic direto e devolvemessage.parsed. - Tools (
tools=/tool_choice=): formato OpenAI;tool_choiceaceitaauto/none/any/requiredou o nome de uma função (força a chamada). - Vision (
images=): modelos multimodais (Pixtral/medium/large). - Embeddings (
embed/aembed) commistral-embed. - OCR / Document AI (
ocr/aocr) commistral-ocr-latest: PDF/imagem → markdown por página, bounding boxes e imagens extraídas. - Transcrição (
transcribe/atranscribe) com Voxtral.
# OCR: aceita URL, caminho, bytes, ImagePart ou um dict `document` da API.
ocr = LLM("mistral", "mistral-ocr-latest")
doc = ocr.ocr("https://arxiv.org/pdf/2310.06825.pdf", include_images=True)
print(len(doc.pages), doc.pages[0].markdown)
# Transcrição (Voxtral).
stt = LLM("mistral", "voxtral-mini-latest")
print(stt.transcribe("audio.mp3", language="pt").text)Quirks
- A Mistral usa
random_seed(a jangada mapeia o canônicoseed) e não temtop_k(descartado). O conteúdo incremental do streaming vem emevent.data.choices[0].delta.content. - MCP server-side não é suportado pela jangada no Mistral — use o
MCPClientclient-side ou os providers Anthropic/OpenAI/Groq para MCP remoto por URL.
Veja Providers e Matriz de capacidades.
O que mudou na 1.9.0
- Tools nativas via Conversations API:
web_search()(ouweb_search(premium=True)),code_execution(),image_generation()efile_search(stores=[...])(document library) fazem a chamada ir porbeta.conversations. Function tools do usuário funcionam junto; com tools nativas,streameparsenão são suportados. Comparams={"store": True}, o turno seguinte continua a conversa no servidor. Veja Tools nativas. - Embeddings em lote: listas grandes são fatiadas em várias requisições.
- Resposta vazia vira
ServerError; argumentos de tool com JSON inválido ficam emmetadata["raw_arguments"].