Mistral AIParamètres et inférence de grande taille (24.07) - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mistral AIParamètres et inférence de grande taille (24.07)

L'API de fin de Mistral AI chat vous permet de créer des applications conversationnelles. Vous pouvez également utiliser l'ConverseAPI Amazon Bedrock avec ce modèle. Vous pouvez utiliser des outils pour effectuer des appels de fonction.

Astuce

Vous pouvez utiliser l'API de fin de Mistral AI chat avec les opérations d'inférence de base (InvokeModelou InvokeModelWithResponseStream). Toutefois, nous vous recommandons d'utiliser l'ConverseAPI pour implémenter des messages dans votre application. L'ConverseAPI fournit un ensemble unifié de paramètres qui fonctionnent sur tous les modèles prenant en charge les messages. Pour de plus amples informations, veuillez consulter Mener une conversation avec les opérations de l'ConverseAPI.

Mistral AIles modèles sont disponibles sous licence Apache 2.0. Pour plus d'informations sur l'utilisation Mistral AI des modèles, consultez la Mistral AIdocumentation.

Modèles pris en charge

Vous pouvez utiliser les Mistral AI modèles suivants avec les exemples de code présentés sur cette page.

  • Mistral Large 2 (24.07)

Vous avez besoin de l’ID du modèle que vous voulez utiliser. Pour obtenir l'ID du modèle, voirModèles de fondation pris en charge dans Amazon Bedrock.

Exemples de demandes et de réponses

Request

Mistral AIExemple de modèle d'appel Large (24.07).

import boto3 import json bedrock = session.client('bedrock-runtime', 'us-west-2') response = bedrock.invoke_model( modelId='mistral.mistral-large-2407-v1:0', body=json.dumps({ 'messages': [ { 'role': 'user', 'content': 'which llm are you?' } ], }) ) print(json.dumps(json.loads(response['body']), indent=4))
Converse

Mistral AIGrand exemple inverse (24.07).

import boto3 import json bedrock = session.client('bedrock-runtime', 'us-west-2') response = bedrock.converse( modelId='mistral.mistral-large-2407-v1:0', messages=[ { 'role': 'user', 'content': [ { 'text': 'which llm are you?' } ] } ] ) print(json.dumps(json.loads(response['body']), indent=4))
invoke_model_with_response_stream

Mistral AIGrand exemple d'invoke_model_with_response_stream (24.07).

import boto3 import json bedrock = session.client('bedrock-runtime', 'us-west-2') response = bedrock.invoke_model_with_response_stream( "body": json.dumps({ "messages": [{"role": "user", "content": "What is the best French cheese?"}], }), "modelId":"mistral.mistral-large-2407-v1:0" ) 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

Mistral AIGrand exemple de converse_stream (24.07).

import boto3 import json bedrock = session.client('bedrock-runtime', 'us-west-2') mistral_params = { "messages": [{ "role": "user","content": [{"text": "What is the best French cheese? "}] }], "modelId":"mistral.mistral-large-2407-v1:0", } response = bedrock.converse_stream(**mistral_params) 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

Mistral AIExemple de sortie JSON de grande taille (24.07).

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":"mistral.mistral-large-2407-v1:0", } response = bedrock.invoke_model(**mistral_params) body = response.get('body').read().decode('utf-8') print(json.loads(body))
Tooling

Mistral AIExemple d'outils de grande taille (24.07).

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":"mistral.mistral-large-2407-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":"mistral.mistral-large-2407-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()