Pular para o conteúdo principal

Mistral AI

Definição

Mistral AI é uma empresa de IA francesa fundada em 2023 que oferece tanto modelos de pesos abertos quanto uma plataforma de API comercial. A estratégia distinta da Mistral consiste em lançar modelos de pesos abertos de alta qualidade (permitindo auto-hospedagem e fine-tuning) enquanto oferece uma API comercial para implantações empresariais. Essa dualidade permite que eles atendam desenvolvedores que querem controle total, empresas que precisam de serviços gerenciados e equipes de pesquisa que querem construir em cima de modelos de base abertos.

A família de modelos da Mistral inclui: Mistral 7B (seu modelo de referência inicial que supera o Llama 2 13B sendo menor), Mixtral 8x7B (um modelo Mixture-of-Experts de pesos abertos que alcança desempenho equivalente ao GPT-3.5 enquanto ativa apenas 2 especialistas de 8 na inferência, reduzindo consideravelmente a carga computacional), Mistral Small e Mistral Large (modelos de API comercial otimizados para diferentes pontos de preço), Codestral (especializado em geração de código), Mistral Embed (modelos de embeddings), e Mistral NeMo (um modelo 12B desenvolvido em colaboração com a NVIDIA). A Mistral se distingue por seu forte desempenho multilíngue, particularmente em francês, espanhol, alemão e italiano, refletindo sua origem europeia.

Como funciona

A arquitetura Mixture of Experts (MoE)

O Mixtral 8x7B apresenta a arquitetura MoE da Mistral, que é fundamental para entender por que os modelos Mistral são eficientes:

Em uma arquitetura transformer padrão, cada token passa pela mesma camada Feed-Forward Network (FFN). MoE substitui a FFN por N "especialistas" (redes menores) e um roteador aprendido que seleciona os K melhores especialistas para cada token. Com 8 especialistas e K=2, o Mixtral 8x7B tem ~47B de parâmetros no total mas usa apenas ~13B na inferência — oferecendo qualidade próxima a um modelo 40B com a velocidade de um modelo 13B.

API La Plateforme

A API comercial da Mistral (La Plateforme) expõe os modelos Mistral via formato compatível com OpenAI, simplificando a migração do OpenAI. Ela suporta completions de chat, embeddings, modo JSON e chamadas de função. O fine-tuning está disponível para Mistral Small e outros modelos.

Modelos de pesos abertos

Os modelos de pesos abertos da Mistral (Mistral 7B, Mixtral 8x7B, Mistral NeMo) são lançados no Hugging Face sob licenças Apache 2.0, permitindo uso comercial sem restrições de redistribuição. Eles podem ser executados localmente via Ollama, llama.cpp ou vLLM.

Quando usar / Quando NÃO usar

Usar Mistral quandoEvitar ou considerar alternativas quando
O desempenho multilíngue é importante, particularmente para idiomas europeusVocê precisa de multimodalidade (visão, áudio) — a Mistral foca em texto
Você quer pesos abertos mas precisa de suporte de qualidade comercialVocê precisa de janelas de contexto muito longas — as janelas de contexto da Mistral (8K–128K dependendo do modelo) podem ser mais curtas que Gemini ou Claude
A eficiência é crítica — o Mixtral é um dos melhores modelos por watt/dólarTarefas de raciocínio complexas requerem as últimas capacidades de ponta
Residência de dados na Europa é necessária — a Mistral oferece opções de hospedagem na UEVocê precisa de um ecossistema amplo com muitas integrações de terceiros
Implantação edge requer modelos pequenos e eficientes

Comparações

CritériosMistral Large 2GPT-4oClaude 3.7 SonnetLlama 3.1 70B
Disponibilidade dos pesosAlguns modelos (7B, Mixtral)NãoNãoSim
Janela de contexto128K128K200K128K
MultilíngueExcelente (foco europeu)BomBomBom
Preço API (modelo principal)~$2/1M tokens~$2,5/1M tokens~$3/1M tokens~$0,9/1M tokens (hospedado)
ArquiteturaDensa + MoEDensaDensaDensa
CódigoCodestral especializadoForteForteCode Llama

Exemplos de código

API Mistral via La Plateforme

# Mistral API via La Plateforme
# pip install mistralai

import os
from mistralai import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

# Basic chat completion
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain the Mixture of Experts architecture in 3 sentences."},
],
temperature=0.3,
max_tokens=256,
)
print(response.choices[0].message.content)

Modo JSON com Mistral

# JSON mode with Mistral API
# pip install mistralai

import os, json
from mistralai import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

response = client.chat.complete(
model="mistral-small-latest",
messages=[
{
"role": "user",
"content": (
"Extract the following from this text as JSON with keys "
"'company', 'founded', 'country': "
"Mistral AI was founded in 2023 in Paris, France."
),
}
],
response_format={"type": "json_object"},
temperature=0,
)

data = json.loads(response.choices[0].message.content)
print(data)

Pesos abertos Mistral com Ollama

# Mistral open-weights via Ollama
# Install Ollama from https://ollama.com, then: ollama pull mistral

import requests

def chat_mistral(prompt: str) -> str:
response = requests.post(
"http://localhost:11434/api/generate",
json={"model": "mistral", "prompt": prompt, "stream": False},
)
return response.json()["response"]

if __name__ == "__main__":
answer = chat_mistral("What are the main differences between MoE and dense transformer models?")
print(answer)

Chamada de função com Mistral

# Function calling with Mistral
# pip install mistralai

import os, json
from mistralai import Mistral
from mistralai.models import UserMessage, ToolMessage

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

tools = [
{
"type": "function",
"function": {
"name": "get_exchange_rate",
"description": "Get the current exchange rate between two currencies",
"parameters": {
"type": "object",
"properties": {
"from_currency": {"type": "string", "description": "Source currency code"},
"to_currency": {"type": "string", "description": "Target currency code"},
},
"required": ["from_currency", "to_currency"],
},
},
}
]

messages = [{"role": "user", "content": "What is the EUR to USD exchange rate?"}]

# First call
response = client.chat.complete(
model="mistral-large-latest",
messages=messages,
tools=tools,
tool_choice="auto",
)

msg = response.choices[0].message
messages.append(msg)

# Execute tool and add result
if msg.tool_calls:
for tc in msg.tool_calls:
# Simulated result
result = {"from": "EUR", "to": "USD", "rate": 1.08}
messages.append(
ToolMessage(tool_call_id=tc.id, content=json.dumps(result))
)

# Final answer
final = client.chat.complete(model="mistral-large-latest", messages=messages)
print(final.choices[0].message.content)

Recursos práticos

  • Documentação Mistral AI — Documentação completa da API incluindo endpoints, parâmetros e guias de fine-tuning
  • Mistral no Hugging Face — Pesos de código aberto, cartões de modelo e contribuições da comunidade
  • SDK Python Mistral — Cliente oficial com exemplos de streaming, chamadas de função e modo JSON
  • Preços Mistral — Preços por token para todos os modelos de API incluindo Mistral Small, Large e Codestral

Veja também