Textvervollständigung mit Mistral AI - Amazon Bedrock

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Textvervollständigung mit Mistral AI

Mit der Textvervollständigungs-API von Mistral AI können Sie Text mit einem Modell von Mistral AI generieren.

Mit InvokeModel oder InvokeModelWithResponseStream (Streaming) nehmen Sie Inferenzanforderungen an Modelle von Mistral AI vor.

Modelle von Mistral AI sind unter der Apache-2.0-Lizenz verfügbar. Weitere Informationen zur Verwendung von Modellen von Mistral AI finden Sie in der Dokumentation für Mistral AI.

Unterstützte Modelle

Sie können die folgenden Modelle von Mistral AI verwenden.

  • Mistral 7B Instruct

  • Mixtral 8X7B Instruct

  • Mistral Large

  • Mistral Small

Sie benötigen die Modell-ID für das Modell, das Sie verwenden möchten. Informationen zum Abrufen der Modell-ID finden Sie unter Unterstützte Basismodelle in Amazon Bedrock.

Anforderung und Antwort

Request

Die Modelle von Mistral AI haben die folgenden Inferenzparameter.

{ "prompt": string, "max_tokens" : int, "stop" : [string], "temperature": float, "top_p": float, "top_k": int }

Die folgenden Parameter sind erforderlich.

  • prompt – (erforderlich) Der Prompt, den Sie an das Modell übergeben möchten, wie in folgendem Beispiel gezeigt.

    <s>[INST] What is your favourite condiment? [/INST]

    Das folgende Beispiel zeigt die Formatierung eines Prompts für Multi-Turn-Konversationen.

    <s>[INST] What is your favourite condiment? [/INST] Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!</s> [INST] Do you have mayonnaise recipes? [/INST]

    Der Text für die Benutzerrolle befindet sich innerhalb der Token [INST]...[/INST], der Text außerhalb entspricht der Rolle des Assistenten. Der Anfang und das Ende einer Zeichenfolge werden durch die Token <s> (Anfang der Zeichenfolge) und </s> (Ende der Zeichenfolge) dargestellt. Informationen zum Senden eines Chat-Prompts im richtigen Format finden Sie in der Dokumentation für Mistral AI unter Chat-Vorlage.

Die folgenden Parameter sind optional.

  • max_tokens – Geben Sie die maximale Anzahl von Token an, die in der generierten Antwort verwendet werden soll. Das Modell kürzt die Antwort, sobald der generierte Text den Wert überschreitet max_tokens.

    Standard Minimum Maximum

    Mistral 7B Instruct – 512

    Mixtral 8X7B Instruct – 512

    Mistral Large – 8 192

    Mistral Small – 8 192

    1

    Mistral 7B Instruct – 8 192

    Mixtral 8X7B Instruct – 4 096

    Mistral Large – 8 192

    Mistral Small – 8 192

  • stop – Eine Liste von Stoppsequenzen, die, wenn sie vom Modell generiert werden, verhindern, dass das Modell weitere Ausgaben generiert.

    Standard Minimum Maximum

    0

    0

    10

  • temperature – Steuert die Zufälligkeit der vom Modell getroffenen Vorhersagen. Weitere Informationen finden Sie unter So beeinflussen Sie die Antwortgenerierung mit Inferenzparametern.

    Standard Minimum Maximum

    Mistral 7B Instruct – 0,5

    Mixtral 8X7B Instruct – 0,5

    Mistral Large – 0,7

    Mistral Small – 0,7

    0

    1

  • top_p – Steuert die Diversität des Texts, den das Modell generiert, indem der Prozentsatz der wahrscheinlichsten Kandidaten festgelegt wird, die das Modell für das nächste Token in Erwägung zieht. Weitere Informationen finden Sie unter So beeinflussen Sie die Antwortgenerierung mit Inferenzparametern.

    Standard Minimum Maximum

    Mistral 7B Instruct – 0,9

    Mixtral 8X7B Instruct – 0,9

    Mistral Large – 1

    Mistral Small – 1

    0

    1

  • top_k – Die Anzahl der wahrscheinlichsten Kandidaten, die das Modell für das nächste Token in Erwägung zieht. Weitere Informationen finden Sie unter So beeinflussen Sie die Antwortgenerierung mit Inferenzparametern.

    Standard Minimum Maximum

    Mistral 7B Instruct – 50

    Mixtral 8X7B Instruct – 50

    Mistral Large – Deaktiviert

    Mistral Small – Deaktiviert

    1

    200

Response

Die body-Antwort eines Aufrufs von InvokeModel lautet wie folgt:

{ "outputs": [ { "text": string, "stop_reason": string } ] }

Die body-Antwort enthält folgende mögliche Felder:

  • outputs – Eine Liste der Ausgaben des Modells. Jede Ausgabe enthält die folgenden Felder.

    • text – Der Text, den das Modell generiert hat

    • stop_reason – Der Grund, warum die Antwort keinen Text mehr generiert hat. Die möglichen Werte sind:

      • Stopp – Das Modell hat die Textgenerierung für die Eingabeaufforderung abgeschlossen. Das Modell wird beendet, weil kein Inhalt mehr generiert werden muss oder wenn das Modell eine der Stoppsequenzen generiert, die Sie im Anforderungsparameter stop definieren.

      • Länge – Die Länge der Token für den generierten Text überschreitet den Wert von max_tokens im Aufruf von InvokeModel (InvokeModelWithResponseStream, wenn Sie die Ausgabe streamen). Die Antwort wird auf max_tokens Token gekürzt.

Codebeispiel

Dieses Beispiel zeigt, wie das Modell Mistral 7B Instruct aufgerufen wird.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to generate text using a Mistral AI model. """ import json import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text(model_id, body): """ Generate text using a Mistral AI model. Args: model_id (str): The model ID to use. body (str) : The request body to use. Returns: JSON: The response from the model. """ logger.info("Generating text with Mistral AI model %s", model_id) bedrock = boto3.client(service_name='bedrock-runtime') response = bedrock.invoke_model( body=body, modelId=model_id ) logger.info("Successfully generated text with Mistral AI model %s", model_id) return response def main(): """ Entrypoint for Mistral AI example. """ logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") try: model_id = 'mistral.mistral-7b-instruct-v0:2' prompt = """<s>[INST] In Bash, how do I list all text files in the current directory (excluding subdirectories) that have been modified in the last month? [/INST]""" body = json.dumps({ "prompt": prompt, "max_tokens": 400, "temperature": 0.7, "top_p": 0.7, "top_k": 50 }) response = generate_text(model_id=model_id, body=body) response_body = json.loads(response.get('body').read()) outputs = response_body.get('outputs') for index, output in enumerate(outputs): print(f"Output {index + 1}\n----------") print(f"Text:\n{output['text']}\n") print(f"Stop reason: {output['stop_reason']}\n") except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) else: print(f"Finished generating text with Mistral AI model {model_id}.") if __name__ == "__main__": main()