Jangada AIJangada AI

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 (ou api_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 nativo chat.parse(response_format=Modelo) — aceita o modelo Pydantic direto e devolve message.parsed.
  • Tools (tools=/tool_choice=): formato OpenAI; tool_choice aceita auto/none/any/required ou o nome de uma função (força a chamada).
  • Vision (images=): modelos multimodais (Pixtral/medium/large).
  • Embeddings (embed/aembed) com mistral-embed.
  • OCR / Document AI (ocr/aocr) com mistral-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ônico seed) e não tem top_k (descartado). O conteúdo incremental do streaming vem em event.data.choices[0].delta.content.
  • MCP server-side não é suportado pela jangada no Mistral — use o MCPClient client-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() (ou web_search(premium=True)), code_execution(), image_generation() e file_search(stores=[...]) (document library) fazem a chamada ir por beta.conversations. Function tools do usuário funcionam junto; com tools nativas, stream e parse não são suportados. Com params={"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 em metadata["raw_arguments"].

On this page