Programa
A Mistral lançou o Pixtral 12B, um modelo de linguagem grande (LLM) de código aberto com 12 bilhões de parâmetros. modelo de linguagem grande (LLM) de código aberto. Esse é o primeiro multimodal da Mistral, o que significa que ele pode processar texto e imagens.
Veja por que a Pixtral é uma adição valiosa ao cenário do LLM:
- Ele processa com eficiência imagens de todos os tamanhos sem pré-processamento.
- Uma janela de contexto de 128K permite o manuseio de prompts complexos e várias imagens.
- Bom desempenho em tarefas somente de texto e multimodais.
- Gratuito para projetos não monetizados, o que o torna ideal para pesquisadores e amadores.
- Código aberto sob a licença Apache 2.0, apoiando a democratização da IA.
Neste tutorial, fornecerei vários exemplos e orientações passo a passo sobre como usar o Pixtral por meio da interface de bate-papo na Web, Le Chat, e programaticamente por meio da API. Mas, primeiro, vamos abordar os aspectos teóricos essenciais do Pixtral.
O que é o Pixtral 12B?
A Mistral AI lançou o Pixtral 12B, um modelo projetado para processar imagens e textos juntos. Com 12 bilhões de parâmetros, ele pode lidar com tarefas que envolvem uma combinação de recursos visuais e de linguagem, como a interpretação de tabelas, documentos ou gráficos.
É útil para ambientes que exigem um conhecimento profundo de ambos os formatos.
Um recurso importante do Pixtral 12B é sua capacidade de lidar com várias imagens em uma única entrada, processando-as em sua resolução nativa. O modelo tem uma janela de contexto de 128.000 tokens, que permite a análise de documentos longos e complexos, imagens ou várias fontes de dados simultaneamente. Isso o torna útil em áreas como relatórios financeiros ou digitalização de documentos para empresas.
Benchmarks da Pixtral
O Pixtral tem um bom desempenho em tarefas relacionadas a Conhecimento e Raciocínio Multimodal, especialmente no teste MathVista, onde lidera o grupo. Em tarefas de controle de qualidade multimodal, ele também ocupa uma posição de destaque, especialmente no ChartQA.
Fonte: Mistral AI
No entanto, em tarefas de acompanhamento de instruções e baseadas em texto, outros modelos, como o Claude-3 Haiku e o Gemini Flash-8B, apresentam desempenho competitivo ou superior. Isso sugere que o Pixtral 12B é excelente em raciocínio multimodal e visual, mas pode não ser dominante em tarefas puramente baseadas em texto.
Arquitetura da Pixtral
A arquitetura do Pixtral 12B foi projetada para processar texto e imagens simultaneamente. Ele apresenta dois componentes principais: um codificador de visão e um decodificador de transformador multimodal.
O codificador de visão, que tem 400 milhões de parâmetros, é especificamente treinado para acomodar imagens de tamanhos e resoluções variados.
Fonte: Mistral AI
O segundo componente, o decodificador de transformador multimodal, é um modelo mais abrangente com 12 bilhões de parâmetros. Ele se baseia na arquitetura Mistral Nemo existente e foi projetado para prever o próximo token de texto em sequências que intercalam dados de texto e imagem.
Esse decodificador pode processar contextos muito extensos (até 128 mil tokens), o que lhe permite lidar com vários tokens de imagem e informações textuais extensas em documentos grandes.
Fonte: Mistral AI
Essa arquitetura combinada permite que o Pixtral lide com uma ampla variedade de tamanhos e formatos de imagem, traduzindo imagens de alta resolução em tokens coerentes sem perder o contexto.
Como usar o Pixtral no Le Chat
A maneira mais fácil de acessar o Pixtral gratuitamente é por meio do Le Chata interface de bate-papo. Essa interface se assemelha a outras interfaces de bate-papo do LLM, como a do ChatGPTpor exemplo.
Para usar o Pixtral, navegue até o seletor de modelos localizado na parte inferior, ao lado da entrada de prompt, e escolha o modelo Pixtral na lista de modelos disponíveis.
O Pixtral é um modelo multimodal que suporta texto e imagens. Usando o ícone de clipe localizado na parte inferior, podemos carregar uma ou mais imagens e combiná-las com um prompt de texto. Por exemplo, essa funcionalidade pode nos ajudar a identificar uma fruta retratada em uma imagem.
Vamos explorar outro exemplo em que solicitamos ao Pixtral que transforme uma imagem contendo um gráfico de pizza em uma tabela de markdown:
Como se conectar à API da Pixtral em La Plateforme
Embora o uso do Pixtral por meio de sua interface da Web seja agradável e fácil, ele não é adequado para ser incorporado aos nossos projetos. Nesta seção, discutiremos como interagir com a Pixtral por meio de sua API usando Python, por meio de La Plateforme.
Configuração do perfil
Para começar, precisamos criar uma conta. Isso pode ser feito com apenas um clique, usando uma conta do Google ou, alternativamente, configurando uma conta tradicional com um nome de usuário e uma senha.
Ao criar a conta, você será solicitado a configurar um espaço de trabalho. Você pode selecionar qualquer nome para seu espaço de trabalho e optar pela opção "I'm a solo creator" (Sou um criador individual).
Depois de criar a conta, vá para a página página de planos de cobrança. Aqui, temos a opção de criar um plano de cobrança experimental, que nos permite experimentar a API gratuitamente, ou configurar um plano pago. É importante observar que o plano experimental gratuito exige que vinculemos um número de telefone válido à nossa conta.
Agora, nosso perfil deve estar pronto para criar uma chave de API. Essa chave é necessária para que você faça solicitações à API do Mistral e interaja programaticamente com o Pixtral usando Python.
Geração da chave de API
Para gerar a chave de API, navegue até a página página de chave de API. Na parte superior da página, temos um botão para criar uma nova chave de API:
Ao criar uma chave, você será solicitado a dar um nome a ela e a definir uma data de validade. No entanto, ambos os campos são opcionais, permitindo que você os deixe em branco, se desejar.
Em geral, é aconselhável definir uma data de validade para as chaves. Muitas vezes, as chaves são criadas para fazer experiências com uma API, mas depois são esquecidas, deixando-as ativas indefinidamente. A definição de uma data de validade garante que, se uma chave for acidentalmente vazada, ela não poderá ser usada para sempre, minimizando assim os possíveis riscos.
Depois que a chave for criada, ela será exibida. Essa exibição é a única oportunidade de você ver a chave, portanto, é essencial copiá-la. Se a chave for perdida, a solução é excluí-la da lista e criar uma nova.
Recomendo que você crie um arquivo .env
no mesmo diretório que o script Python para armazenar a chave usando o seguinte formato (substituindo pela chave real):
# contents of the .env fileAPI_KEY=<key_value>
Não é recomendável ignorar essa etapa e codificar a chave da API em nosso script. Isso nos impede de compartilhar nosso código sem compartilhar a chave. Saiba mais sobre essa abordagem neste tutorial sobre Variáveis de ambiente do Python.
Instalar dependências
Para começar, instalamos as dependências necessárias, que incluem:
mistralai
Você pode usar a biblioteca do cliente fornecida pela Mistral para interação com a API.python-dotenv
Você pode usar o módulo.env
para carregar variáveis de ambiente de um arquivo .
pip install python-dotenv mistralai
Quando as dependências estiverem instaladas, você poderá prosseguir com a criação do script. Crie um arquivo chamado mistral_example.py
no mesmo diretório que o arquivo .env
. A etapa inicial envolve a importação dos módulos e o carregamento da chave da API em uma variável.
# Create a mistral_example.py file in the same folder as the .env fileimport osfrom mistralai import Mistralfrom dotenv import load_dotenvload_dotenv()api_key = os.getenv("API_KEY")
Depois disso, podemos prosseguir com a inicialização do cliente.
Inicializar o cliente
A página de documentação do Mistral fornece uma lista de todos os modelos disponíveis. Estamos particularmente interessados no modelo Pixtral mais recente, que tem o ponto de extremidade da API pixtral-12b-2409
.
# Add this code in mistral_example.py after initializing the API keymodel = "pixtral-12b-2409"client = Mistral(api_key=api_key)
Fazer uma solicitação de API
Agora estamos prontos para fazer uma solicitação à API do Mistral e interagir com o Pixtral de forma programática. Aqui está um exemplo de como enviar um prompt de texto:
# Add this code in mistral_example.py after initializing the clientchat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "What is 1 + 1?" } ] }, ])print(chat_response.choices[0].message.content)
Podemos executar esse script no terminal e ver a resposta do Pixtral ao nosso prompt:
$ python mistral_example.py The sum of 1 + 1 is 2. So,1 + 1 = 2
Usando a API com multimodalidade
No exemplo fornecido, o prompt de texto é enviado por meio do campo content
, em que type
está definido como "text"
.
{ "type": "text", "text": "What is 1 + 1?"}
O campo content
é uma matriz que nos permite enviar vários dados. Como um modelo multimodal, o Pixtral também aceita dados de imagem. Para usar uma imagem de um URL no prompt, podemos incluí-la no campo content
especificando "image_url"
como o tipo:
{ "type": "image_url", "Image_url": "<image_url>” }
Substitua pelo URL real da imagem. Por exemplo, podemos usar o Pixtral para analisar os gráficos de desempenho abaixo:
Fonte: Mistral AI
chat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "According to the chart, how does Pixtral 12B performs compared to other models?" }, { "type": "image_url", "image_url": "https://mistral.ai/images/news/pixtral-12b/pixtral-benchmarks.png" } ] }, ])print(chat_response.choices[0].message.content)
Quando essa solicitação é enviada, o Pixtral recebe o prompt de texto e a imagem que contém os gráficos para análise e, em seguida, fornece uma resposta detalhando a análise. Não mostraremos a resposta aqui devido ao seu tamanho considerável.
Carregamento de imagens locais
No exemplo anterior, mostramos como exibir uma imagem a partir de um URL. Como alternativa, podemos usar uma imagem armazenada em nosso disco rígido, carregando-a como uma imagem codificada em base-64. Para carregar e codificar uma imagem em base-64, usamos o pacote incorporado base64
:
def encode_image_base64(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8")
Quando você usa imagens codificadas em base-64, ainda usamos o tipo image_url
para fornecer a imagem codificada, mas precisamos prefixá-la com data:image/jpeg;base64,
:
{ "type": "image_url", "image_url": f"data:image/jpeg;base64,{base_64_image}"}
base_64_image
é o resultado da chamada da função encode_image_base64()
para carregar a imagem. Vamos usar isso para pedir ao Pixtral que crie um site de lista de tarefas com duas páginas com base nos dois esboços que fiz a seguir:
Fornecemos as duas imagens separadamente, bem como um prompt solicitando que você crie um site em HTML com base nas imagens:
list_image = encode_image_base64("./todo-list.jpeg")new_item_image = encode_image_base64("./new-item-form.jpeg")chat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "Create a HTML website with two pages like in the images" }, { "type": "image_url", "image_url": f"data:image/jpeg;base64,{list_image}" }, { "type": "image_url", "image_url": f"data:image/jpeg;base64,{new_item_image}" }, ] }, ])print(chat_response.choices[0].message.content)
O Pixtral produzirá dois blocos de código com o conteúdo das duas páginas. Salvamos o código em dois arquivos denominados index.html
e add.html
e os abrimos no navegador. Esse foi o resultado:
Embora ainda não seja um aplicativo totalmente funcional, ele está operacional e é um excelente ponto de partida para desenvolvimento futuro.
Conclusão
O Pixtral 12B é o primeiro modelo multimodal da Mistral. Ele pode lidar com imagens de todos os tamanhos sem pré-processamento, apresenta uma janela de contexto de 128K para prompts complexos e tem bom desempenho em tarefas somente de texto e multimodais.
Disponível gratuitamente em projetos não monetizados e de código aberto sob a licença Apache 2.0, o Pixtral é valioso tanto para pesquisadores quanto para amadores.
Neste tutorial, forneci insights práticos sobre o uso do Pixtral, destacando seus recursos por meio de exemplos e orientações passo a passo.
Perguntas frequentes
O uso do Pixtral é gratuito e sob quais condições?
O Pixtral é gratuito para uso em Le Chat ou por meio da API para projetos não monetizados.
O Pixtral é de código aberto?
Sim. Ele é de código aberto sob a licença Apache 2.0.
Que tipo de dados de entrada o Pixtral suporta?
Pixtral é o primeiro LLM multimodal da Mistral AI. Ele suporta texto e imagens.
Que tipos de imagens são compatíveis com o Pixtral?
O Pixtral suporta imagens de qualquer tamanho sem exigir nenhum tipo de pré-processamento.
O que torna a Pixtral importante?
O Pixtral tem excelente desempenho para um modelo com apenas 12 bilhões de parâmetros. Além disso, ele pode ser usado gratuitamente e é de código aberto.