Parámetros e inferencia de Pixtral Large (25.02) - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Parámetros e inferencia de Pixtral Large (25.02)

Pixtral Large 25.02 es un modelo multimodal de 124 B de parámetros que combina la comprensión de state-of-the-art imágenes con potentes capacidades de procesamiento de texto. AWS es el primer proveedor de servicios en la nube que ofrece Pixtral Large (25.02) como un modelo totalmente gestionado y sin servidor. Este modelo ofrece un rendimiento de primera clase al realizar tareas de análisis de documentos, interpretación de gráficos y comprensión de imágenes naturales, al tiempo que mantiene las capacidades de texto avanzadas de Mistral Large 2.

Con una ventana de contexto de 128 K, Pixtral Large 25.02 logra un best-in-class rendimiento en puntos de referencia clave, como DocVQA y. MathVista VQAv2 El modelo cuenta con un soporte multilingüe integral en muchos idiomas y está entrenado en más de 80 lenguajes de programación. Las capacidades clave incluyen el razonamiento matemático avanzado, la invocación de funciones nativas, la generación de JSON y una sólida adherencia al contexto para las aplicaciones RAG.

La API de finalización de chats de Mistral AI permite crear aplicaciones conversacionales. También puede utilizar la Converse API de Amazon Bedrock con este modelo. Puede utilizar herramientas para realizar llamadas a funciones.

sugerencia

Puede usar la API para completar el Mistral AI chat con las operaciones de inferencia básicas (InvokeModelo InvokeModelWithResponseStream). Sin embargo, te recomendamos que utilices la Converse API para implementar los mensajes en tu aplicación. La Converse API proporciona un conjunto unificado de parámetros que funcionan en todos los modelos que admiten mensajes. Para obtener más información, consulte Mantén una conversación con las operaciones de la Converse API.

Los modelos de Mistral AI están disponibles con la licencia de Apache 2.0. Para obtener más información sobre el uso de modelos de Mistral AI, consulte la documentación de Mistral AI.

Modelos compatibles

Puede utilizar los siguientes modelos de Mistral AI con los ejemplos de código de esta página.

  • Pixtral Large (25.02)

Necesitará el ID de modelo del modelo que desee utilizar. Para obtener el ID del modelo, consulte Modelos fundacionales compatibles en Amazon Bedrock.

Ejemplos de solicitud y respuesta

Request

Ejemplo de modelo de invocación de 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

Ejemplo de Pixtral Large (25.02) Converse.

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

Ejemplo de invoke_model_with_response_stream de 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

Ejemplo de converse_stream de 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

Ejemplo de salida JSON de 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

Ejemplo de herramientas 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()