Modelli Amazon Titan Text - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modelli Amazon Titan Text

I modelli Amazon Titan Text supportano i seguenti parametri di inferenza.

Per ulteriori informazioni sulle linee guida ingegneristiche dei prompt di Titan testo, consulta TitanText Prompt Engineering Guidelines.

Per ulteriori informazioni sui Titan modelli, vedere. TitanModelli Amazon

Richiesta e risposta

Il corpo della richiesta viene passato nel body campo di una richiesta InvokeModelor InvokeModelWithResponseStream.

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

I parametri seguenti sono obbligatori:

  • InputText — La richiesta di fornire il modello per generare una risposta. Per generare risposte in uno stile colloquiale, racchiudi il prompt utilizzando il seguente formato:

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

È textGenerationConfig facoltativo. È possibile utilizzarlo per configurare i seguenti parametri di inferenza:

  • temperatura: utilizza un valore più basso per ridurre la casualità nelle risposte.

    Predefinita Minimo Massimo
    0.7 0,0 1
  • TopP: utilizza un valore più basso per ignorare le opzioni meno probabili e ridurre la diversità delle risposte.

    Predefinita Minimo Massimo
    0.9 0,0 1
  • max TokenCount — Specificate il numero massimo di token da generare nella risposta. I limiti massimi di token vengono applicati rigorosamente.

    Modello Predefinita Minimo Massimo
    Titan Text Lite 512 0 4,096
    Titan Text Express 512 0 8,192
    Titan Text Premier 512 0 3.072
  • stopSequences — Specificate una sequenza di caratteri per indicare dove il modello deve fermarsi.

InvokeModel Response

Il corpo della risposta contiene i seguenti campi possibili:

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

Di seguito sono fornite ulteriori informazioni su ciascun campo.

  • inputTextTokenCount: il numero di token nel prompt.

  • tokenCount: il numero di token nella risposta.

  • outputText: il testo nella risposta.

  • completionReason: il motivo per cui la risposta ha smesso di essere generata. Sono possibili i seguenti motivi.

    • FINISHED: la risposta è stata generata completamente.

    • LENGTH: la risposta è stata troncata a causa della lunghezza della risposta impostata.

    • STOP_CRITERIA_MET— La risposta è stata troncata perché sono stati raggiunti i criteri di interruzione.

    • RAG_QUERY_WHEN_RAG_DISABLED— La funzionalità è disattivata e non può completare l'interrogazione.

    • CONTENT_FILTERED— I contenuti sono stati filtrati o rimossi dal filtro dei contenuti applicato.

InvokeModelWithResponseStream Response

Ogni parte di testo nel corpo del flusso di risposta ha il seguente formato. Devi decodificare il campo bytes (cedi Usa l'API per richiamare un modello con un solo prompt per un esempio).

{ 'chunk': { 'bytes': b'{ "index": int, "inputTextTokenCount": int, "totalOutputTextTokenCount": int, "outputText": "<response-chunk>", "completionReason": string }' } }
  • index: l'indice del blocco nella risposta del flusso.

  • inputTextTokenCount: il numero di token nel prompt.

  • totalOutputTextTokenCount: il numero di token nella risposta.

  • outputText: il testo nella risposta.

  • completionReason: il motivo per cui la risposta ha smesso di essere generata. Sono possibili i seguenti motivi.

    • FINISHED: la risposta è stata generata completamente.

    • LENGTH: la risposta è stata troncata a causa della lunghezza della risposta impostata.

    • STOP_CRITERIA_MET— La risposta è stata troncata perché è stato raggiunto il criterio di interruzione.

    • RAG_QUERY_WHEN_RAG_DISABLED— La funzionalità è disattivata e non può completare l'interrogazione.

    • CONTENT_FILTERED— I contenuti sono stati filtrati o rimossi dal filtro applicato.

Esempi di codice

L'esempio seguente mostra come eseguire l'inferenza con il modello Amazon Titan Text Premier con l'SDK Python.

# 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()

L'esempio seguente mostra come eseguire l'inferenza con il Titan Text G1 - Express modello Amazon con 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()