Amazon Titan Textmodelle - 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.

Amazon Titan Textmodelle

Die Amazon Titan Text-Modelle unterstützen die folgenden Inferenzparameter.

Weitere Informationen zu Titan Technische Richtlinien für Textaufforderungen finden Sie unter Titan Technische Richtlinien für Texteingabeaufforderungen.

Weitere Informationen zu Titan Modelle, sieheÜberblick über Amazon Titan Modelle.

Anfrage und Antwort

Der Anfragetext wird im body Feld einer InvokeModelInvokeModelWithResponseStreamOder-Anfrage übergeben.

Request
{ "inputText": string, "textGenerationConfig": { "temperature": float, "topP": float, "maxTokenCount": int, "stopSequences": [string] } }

Die folgenden Parameter sind erforderlich:

  • inputText — Die Aufforderung, das Modell für die Generierung einer Antwort bereitzustellen. Um Antworten in einem Konversationsstil zu generieren, umschließen Sie die Aufforderung mit dem folgenden Format:

    "inputText": "User: <prompt>\nBot:

Das textGenerationConfig ist optional. Sie können damit die folgenden Inferenzparameter konfigurieren:

  • Temperatur — Verwenden Sie einen niedrigeren Wert, um die Zufälligkeit der Antworten zu verringern.

    Standard Minimum Maximum
    0.7 0.0 1,0
  • toPP — Verwenden Sie einen niedrigeren Wert, um weniger wahrscheinliche Optionen zu ignorieren und die Vielfalt der Antworten zu verringern.

    Standard Minimum Maximum
    0.9 0.0 1,0
  • maxTokenCount— Geben Sie die maximale Anzahl von Tokens an, die in der Antwort generiert werden sollen. Die maximalen Token-Limits werden strikt durchgesetzt.

    Modell Standard Minimum Maximum
    Titan Text Lite 512 0 4.096
    Titan Text Express 512 0 8,192
    Titan Text Premier 512 0 3.072
  • StopSequences — Geben Sie eine Zeichenfolge an, um anzugeben, wo das Modell anhalten soll.

InvokeModel Response
{ "inputTextTokenCount": int, "results": [{ "tokenCount": int, "outputText": "\n<response>\n", "completionReason": "string" }] }

Der Antworttext enthält die folgenden Felder:

  • inputTextTokenAnzahl — Die Anzahl der Token in der Eingabeaufforderung.

  • results — Ein Array aus einem Element, ein Objekt, das die folgenden Felder enthält:

    • tokenCount — Die Anzahl der Token in der Antwort.

    • outputText — Der Text in der Antwort.

    • completionReason — Der Grund, warum die Generierung der Antwort abgeschlossen wurde. Die folgenden Gründe sind möglich:

      • FERTIG — Die Antwort wurde vollständig generiert.

      • LÄNGE — Die Antwort wurde aufgrund der von Ihnen festgelegten Antwortlänge gekürzt.

      • STOP_CRITERIA_MET — Die Antwort wurde gekürzt, weil die Stoppkriterien erreicht wurden.

      • RAG_QUERY_WHEN_RAG_DISABLED — Die Funktion ist deaktiviert und kann die Abfrage nicht abschließen.

      • CONTENT_FILTERED — Der Inhalt wurde durch den angewendeten Inhaltsfilter gefiltert oder entfernt.

InvokeModelWithResponseStream Response

Jeder Textblock im Hauptteil des Antwortstreams hat das folgende Format. Sie müssen das bytes-Feld dekodieren (ein Beispiel finden Sie unter Senden Sie eine einzelne Aufforderung mit InvokeModel).

{ "chunk": { "bytes": b'{ "index": int, "inputTextTokenCount": int, "totalOutputTextTokenCount": int, "outputText": "<response-chunk>", "completionReason": "string" }' } }
  • index — Der Index des Abschnitts in der Streaming-Antwort.

  • inputTextTokenAnzahl — Die Anzahl der Token in der Eingabeaufforderung.

  • totalOutputTextTokenCount – die Anzahl der Token in der Antwort

  • outputText — Der Text in der Antwort.

  • completionReason — Der Grund, warum die Generierung der Antwort abgeschlossen wurde. Die folgenden Gründe sind möglich.

    • ABGESCHLOSSEN — Die Antwort wurde vollständig generiert.

    • LÄNGE — Die Antwort wurde aufgrund der von Ihnen festgelegten Antwortlänge gekürzt.

    • STOP_CRITERIA_MET — Die Antwort wurde gekürzt, weil die Stoppkriterien erreicht wurden.

    • RAG_QUERY_WHEN_RAG_DISABLED — Die Funktion ist deaktiviert und kann die Abfrage nicht abschließen.

    • CONTENT_FILTERED — Der Inhalt wurde durch den angewendeten Filter gefiltert oder entfernt.

Codebeispiele

Das folgende Beispiel zeigt, wie Inferenz mit Amazon ausgeführt wird Titan Text Premier-Modell mit dem Python-SDK.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to create a list of action items from a meeting transcript with the Amazon Titan Text model (on demand). """ import json import logging import boto3 from botocore.exceptions import ClientError class ImageError(Exception): "Custom exception for errors returned by Amazon Titan Text models" def __init__(self, message): self.message = message logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text(model_id, body): """ Generate text using Amazon Titan Text models on demand. Args: model_id (str): The model ID to use. body (str) : The request body to use. Returns: response (json): The response from the model. """ logger.info( "Generating text with Amazon Titan Text model %s", model_id) bedrock = boto3.client(service_name='bedrock-runtime') accept = "application/json" content_type = "application/json" response = bedrock.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type ) response_body = json.loads(response.get("body").read()) finish_reason = response_body.get("error") if finish_reason is not None: raise ImageError(f"Text generation error. Error is {finish_reason}") logger.info( "Successfully generated text with Amazon Titan Text model %s", model_id) return response_body def main(): """ Entrypoint for Amazon Titan Text model example. """ try: logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") # You can replace the model_id with any other Titan Text Models # Titan Text Model family model_id is as mentioned below: # amazon.titan-text-premier-v1:0, amazon.titan-text-express-v1, amazon.titan-text-lite-v1 model_id = 'amazon.titan-text-premier-v1:0' prompt = """Meeting transcript: Miguel: Hi Brant, I want to discuss the workstream for our new product launch Brant: Sure Miguel, is there anything in particular you want to discuss? Miguel: Yes, I want to talk about how users enter into the product. Brant: Ok, in that case let me add in Namita. Namita: Hey everyone Brant: Hi Namita, Miguel wants to discuss how users enter into the product. Miguel: its too complicated and we should remove friction. for example, why do I need to fill out additional forms? I also find it difficult to find where to access the product when I first land on the landing page. Brant: I would also add that I think there are too many steps. Namita: Ok, I can work on the landing page to make the product more discoverable but brant can you work on the additonal forms? Brant: Yes but I would need to work with James from another team as he needs to unblock the sign up workflow. Miguel can you document any other concerns so that I can discuss with James only once? Miguel: Sure. From the meeting transcript above, Create a list of action items for each person. """ body = json.dumps({ "inputText": prompt, "textGenerationConfig": { "maxTokenCount": 3072, "stopSequences": [], "temperature": 0.7, "topP": 0.9 } }) response_body = generate_text(model_id, body) print(f"Input token count: {response_body['inputTextTokenCount']}") for result in response_body['results']: print(f"Token count: {result['tokenCount']}") print(f"Output text: {result['outputText']}") print(f"Completion reason: {result['completionReason']}") except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) except ImageError as err: logger.error(err.message) print(err.message) else: print( f"Finished generating text with the Amazon Titan Text Premier model {model_id}.") if __name__ == "__main__": main()

Das folgende Beispiel zeigt, wie Inferenz mit Amazon ausgeführt wird Titan Text G1 - Express Modell mit dem Python SDK.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to create a list of action items from a meeting transcript with the Amazon &titan-text-express; model (on demand). """ import json import logging import boto3 from botocore.exceptions import ClientError class ImageError(Exception): "Custom exception for errors returned by Amazon &titan-text-express; model" def __init__(self, message): self.message = message logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text(model_id, body): """ Generate text using Amazon &titan-text-express; model on demand. Args: model_id (str): The model ID to use. body (str) : The request body to use. Returns: response (json): The response from the model. """ logger.info( "Generating text with Amazon &titan-text-express; model %s", model_id) bedrock = boto3.client(service_name='bedrock-runtime') accept = "application/json" content_type = "application/json" response = bedrock.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type ) response_body = json.loads(response.get("body").read()) finish_reason = response_body.get("error") if finish_reason is not None: raise ImageError(f"Text generation error. Error is {finish_reason}") logger.info( "Successfully generated text with Amazon &titan-text-express; model %s", model_id) return response_body def main(): """ Entrypoint for Amazon &titan-text-express; example. """ try: logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") model_id = 'amazon.titan-text-express-v1' prompt = """Meeting transcript: Miguel: Hi Brant, I want to discuss the workstream for our new product launch Brant: Sure Miguel, is there anything in particular you want to discuss? Miguel: Yes, I want to talk about how users enter into the product. Brant: Ok, in that case let me add in Namita. Namita: Hey everyone Brant: Hi Namita, Miguel wants to discuss how users enter into the product. Miguel: its too complicated and we should remove friction. for example, why do I need to fill out additional forms? I also find it difficult to find where to access the product when I first land on the landing page. Brant: I would also add that I think there are too many steps. Namita: Ok, I can work on the landing page to make the product more discoverable but brant can you work on the additonal forms? Brant: Yes but I would need to work with James from another team as he needs to unblock the sign up workflow. Miguel can you document any other concerns so that I can discuss with James only once? Miguel: Sure. From the meeting transcript above, Create a list of action items for each person. """ body = json.dumps({ "inputText": prompt, "textGenerationConfig": { "maxTokenCount": 4096, "stopSequences": [], "temperature": 0, "topP": 1 } }) response_body = generate_text(model_id, body) print(f"Input token count: {response_body['inputTextTokenCount']}") for result in response_body['results']: print(f"Token count: {result['tokenCount']}") print(f"Output text: {result['outputText']}") print(f"Completion reason: {result['completionReason']}") except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) except ImageError as err: logger.error(err.message) print(err.message) else: print( f"Finished generating text with the Amazon &titan-text-express; model {model_id}.") if __name__ == "__main__": main()