Parâmetros e inferência do Pixtral Large (25.02) - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Parâmetros e inferência do Pixtral Large (25.02)

O Pixtral Large 25.02 é um modelo multimodal de 124B de parâmetros que combina a compreensão da state-of-the-art imagem com poderosos recursos de processamento de texto. AWS é o primeiro provedor de nuvem a oferecer o Pixtral Large (25.02) como um modelo totalmente gerenciado e sem servidor. Esse modelo oferece desempenho de primeira linha ao realizar tarefas de análise de documentos, interpretação de gráficos e compreensão natural de imagens, mantendo os recursos avançados de texto do Mistral Large 2.

Com uma janela de contexto de 128K, o Pixtral Large 25.02 atinge best-in-class desempenho nos principais benchmarks, incluindo DocVQA e. MathVista VQAv2 O modelo oferece suporte multilíngue abrangente em vários idiomas e é treinado em mais de 80 linguagens de programação. Os principais recursos incluem raciocínio matemático avançado, chamada de função nativa, saída JSON e adesão robusta ao contexto para aplicativos RAG.

A API de conclusão de chat da Mistral AI permite criar aplicações de conversação. Você também pode usar a Converse API Amazon Bedrock com esse modelo. É possível usar ferramentas para fazer chamadas de função.

dica

Você pode usar a API de conclusão de Mistral AI bate-papo com as operações básicas de inferência (InvokeModelou InvokeModelWithResponseStream). No entanto, recomendamos que você use a Converse API para implementar mensagens em seu aplicativo. A Converse API fornece um conjunto unificado de parâmetros que funcionam em todos os modelos compatíveis com mensagens. Para obter mais informações, consulte Converse com as operações da Converse API.

Os modelos da Mistral AI estão disponíveis sob a licença do Apache 2.0. Para obter mais informações sobre o uso dos modelos da Mistral AI, consulte a documentação da Mistral AI.

Modelos compatíveis

É possível usar os modelos da Mistral AI a seguir com os exemplos de código nesta página.

  • Pixtral Large (25.02)

É necessário o ID do modelo que deseja usar. Para obter o ID do modelo, consulte Modelos de base compatíveis no Amazon Bedrock.

Exemplos de solicitação e resposta

Request

Exemplo de modelo de invocação Pixtral Large (25.02).

import boto3 import json import base64 input_image = "image.png" with open(input_image, "rb") as f: image = f.read() image_bytes = base64.b64encode(image).decode("utf-8") bedrock = boto3.client( service_name='bedrock-runtime', region_name="us-east-1") request_body = { "messages" : [ { "role" : "user", "content" : [ { "text": "Describe this picture:", "type": "text" }, { "type" : "image_url", "image_url" : { "url" : f"data:image/png;base64,{image_bytes}" } } ] } ], "max_tokens" : 10 } response = bedrock.invoke_model( modelId='us.mistral.pixtral-large-2502-v1:0', body=json.dumps(request_body) ) print(json.dumps(json.loads(response.get('body').read()), indent=4))
Converse

Pixtral Large (25.02) Exemplo inverso.

import boto3 import json import base64 input_image = "image.png" with open(input_image, "rb") as f: image_bytes = f.read() bedrock = boto3.client( service_name='bedrock-runtime', region_name="us-east-1") messages =[ { "role" : "user", "content" : [ { "text": "Describe this picture:" }, { "image": { "format": "png", "source": { "bytes": image_bytes } } } ] } ] response = bedrock.converse( modelId='mistral.pixtral-large-2502-v1:0', messages=messages ) print(json.dumps(response.get('output'), indent=4))
invoke_model_with_response_stream

Exemplo de invoke_model_with_response_stream do Pixtral Large (25.02).

import boto3 import json import base64 input_image = "image.png" with open(input_image, "rb") as f: image = f.read() image_bytes = base64.b64encode(image).decode("utf-8") bedrock = boto3.client( service_name='bedrock-runtime', region_name="us-east-1") request_body = { "messages" : [ { "role" : "user", "content" : [ { "text": "Describe this picture:", "type": "text" }, { "type" : "image_url", "image_url" : { "url" : f"data:image/png;base64,{image_bytes}" } } ] } ], "max_tokens" : 10 } response = bedrock.invoke_model_with_response_stream( modelId='us.mistral.pixtral-large-2502-v1:0', body=json.dumps(request_body) ) stream = response.get('body') if stream: for event in stream: chunk=event.get('chunk') if chunk: chunk_obj=json.loads(chunk.get('bytes').decode()) print(chunk_obj)
converse_stream

Exemplo de converse_stream do Pixtral Large (25.02).

import boto3 import json import base64 input_image = "image.png" with open(input_image, "rb") as f: image_bytes = f.read() bedrock = boto3.client( service_name='bedrock-runtime', region_name="us-east-1") messages =[ { "role" : "user", "content" : [ { "text": "Describe this picture:" }, { "image": { "format": "png", "source": { "bytes": image_bytes } } } ] } ] response = bedrock.converse_stream( modelId='mistral.pixtral-large-2502-v1:0', messages=messages ) stream = response.get('stream') if stream: for event in stream: if 'messageStart' in event: print(f"\nRole: {event['messageStart']['role']}") if 'contentBlockDelta' in event: print(event['contentBlockDelta']['delta']['text'], end="") if 'messageStop' in event: print(f"\nStop reason: {event['messageStop']['stopReason']}") if 'metadata' in event: metadata = event['metadata'] if 'usage' in metadata: print("\nToken usage ... ") print(f"Input tokens: {metadata['usage']['inputTokens']}") print( f":Output tokens: {metadata['usage']['outputTokens']}") print(f":Total tokens: {metadata['usage']['totalTokens']}") if 'metrics' in event['metadata']: print( f"Latency: {metadata['metrics']['latencyMs']} milliseconds")
JSON Output

Exemplo de saída JSON Pixtral Large (25.02).

import boto3 import json bedrock = session.client('bedrock-runtime', 'us-west-2') mistral_params = { "body": json.dumps({ "messages": [{"role": "user", "content": "What is the best French meal? Return the name and the ingredients in short JSON object."}] }), "modelId":"us.mistral.pixtral-large-2502-v1:0", } response = bedrock.invoke_model(**mistral_params) body = response.get('body').read().decode('utf-8') print(json.loads(body))
Tooling

Exemplo de ferramentas Pixtral Large (25.02).

data = { 'transaction_id': ['T1001', 'T1002', 'T1003', 'T1004', 'T1005'], 'customer_id': ['C001', 'C002', 'C003', 'C002', 'C001'], 'payment_amount': [125.50, 89.99, 120.00, 54.30, 210.20], 'payment_date': ['2021-10-05', '2021-10-06', '2021-10-07', '2021-10-05', '2021-10-08'], 'payment_status': ['Paid', 'Unpaid', 'Paid', 'Paid', 'Pending'] } # Create DataFrame df = pd.DataFrame(data) def retrieve_payment_status(df: data, transaction_id: str) -> str: if transaction_id in df.transaction_id.values: return json.dumps({'status': df[df.transaction_id == transaction_id].payment_status.item()}) return json.dumps({'error': 'transaction id not found.'}) def retrieve_payment_date(df: data, transaction_id: str) -> str: if transaction_id in df.transaction_id.values: return json.dumps({'date': df[df.transaction_id == transaction_id].payment_date.item()}) return json.dumps({'error': 'transaction id not found.'}) tools = [ { "type": "function", "function": { "name": "retrieve_payment_status", "description": "Get payment status of a transaction", "parameters": { "type": "object", "properties": { "transaction_id": { "type": "string", "description": "The transaction id.", } }, "required": ["transaction_id"], }, }, }, { "type": "function", "function": { "name": "retrieve_payment_date", "description": "Get payment date of a transaction", "parameters": { "type": "object", "properties": { "transaction_id": { "type": "string", "description": "The transaction id.", } }, "required": ["transaction_id"], }, }, } ] names_to_functions = { 'retrieve_payment_status': functools.partial(retrieve_payment_status, df=df), 'retrieve_payment_date': functools.partial(retrieve_payment_date, df=df) } test_tool_input = "What's the status of my transaction T1001?" message = [{"role": "user", "content": test_tool_input}] def invoke_bedrock_mistral_tool(): mistral_params = { "body": json.dumps({ "messages": message, "tools": tools }), "modelId":"us.mistral.pixtral-large-2502-v1:0", } response = bedrock.invoke_model(**mistral_params) body = response.get('body').read().decode('utf-8') body = json.loads(body) choices = body.get("choices") message.append(choices[0].get("message")) tool_call = choices[0].get("message").get("tool_calls")[0] function_name = tool_call.get("function").get("name") function_params = json.loads(tool_call.get("function").get("arguments")) print("\nfunction_name: ", function_name, "\nfunction_params: ", function_params) function_result = names_to_functions[function_name](**function_params) message.append({"role": "tool", "content": function_result, "tool_call_id":tool_call.get("id")}) new_mistral_params = { "body": json.dumps({ "messages": message, "tools": tools }), "modelId":"us.mistral.pixtral-large-2502-v1:0", } response = bedrock.invoke_model(**new_mistral_params) body = response.get('body').read().decode('utf-8') body = json.loads(body) print(body) invoke_bedrock_mistral_tool()