Generare testo con i modelli linguistici

Introduzione ad Amazon Bedrock

Nikhil Rangarajan

Data Scientist

Inviare prompt ai modelli linguistici

  • Prompt: il testo di input che invii al modello
    • "Explain how AWS Lambda works"

Un'icona che rappresenta il prompt.

Introduzione ad Amazon Bedrock

Inviare prompt ai modelli linguistici

  • Prompt: il testo di input che invii al modello
    • "Explain how AWS Lambda works"
  • Completion: il testo generato dal modello
    • "AWS Lambda is a serverless compute service that..."

Icone che rappresentano prompt e completion.

Introduzione ad Amazon Bedrock

Inviare prompt ai modelli linguistici

  • Prompt: il testo di input che invii al modello
    • "Explain how AWS Lambda works"
  • Completion: il testo generato dal modello
    • "AWS Lambda is a serverless compute service that..."
  • Response:
    • Testo generato (completion)
    • Metadati (token, info modello)
    • Informazioni di stato

Tre icone in sequenza che rappresentano prompt, completion e response.

Introduzione ad Amazon Bedrock

Applicare tecniche base di prompt engineering

  • Tecniche per risultati migliori:
    • Chiarezza e specificità: istruzioni dettagliate e precise
    • Assegnazione di un ruolo: dai una persona per il contesto
    • Istruzioni di formattazione: aggiungi vincoli per guidare la risposta
"Explain the benefits of exercise 
in simple terms."
"You are a nutritionist. Explain the 
benefits of a balanced diet."
"List the top 3 benefits of cloud 
computing in bullet points."
Introduzione ad Amazon Bedrock

Tecniche avanzate di parsing del testo

  • Gestire chiavi mancanti o inattese
data = json.loads(response['body'].read())
if 'completion' in data:
    output = data['completion']

else: output = "Key not found"
  • Parsing JSON multilivello per navigare strutture annidate
try:
    nova_output = data.decode()["output"]

except (KeyError, IndexError) as e: nova_output = f"Error: {str(e)}"
Introduzione ad Amazon Bedrock

Elaborazione delle risposte e gestione del testo

  • Problemi Unicode o di encoding: gestire caratteri speciali nelle risposte
    # Ensure proper encoding
    output = data['completion'].encode('utf-8').decode('unicode_escape')
    print(output)
    
  • Risposte lunghe: dividi o tronca per usabilità
    # Truncate response for display
    output = data['completion'][:500]  # Limit to 500 characters
    print(output)
    
Introduzione ad Amazon Bedrock

Estrazione di categorie con Bedrock

  • Esempio: classificare testo
  • Usa prompt strutturati con categorie chiare
  • Dai istruzioni esplicite per una sola categoria
  • Elabora le risposte in modo efficiente
  • Risultato: categorizzazione accurata

Icone che rappresentano la classificazione del testo

Introduzione ad Amazon Bedrock

Estrazione di categorie con Bedrock

def categorize_ticket(ticket, categories):
  prompt = f"Categorize into one: {', '.join(categories)}. 
  Ticket: {ticket}"
  response = bedrock.invoke_model(
    modelId='amazon.nova-micro-v1:0',
    body=json.dumps({"messages": [{"role": "user", "content": 
                                   [{"text": prompt}]}]}))

return json.loads(nova_response.get("body").read().decode())["output"]
{"output": {"message": {"role": "assistant","content": [
        {
          "text": "Customer Service"
        }]}, "stop_reason": "stop_sequence"}}
Introduzione ad Amazon Bedrock

Passiamo alla pratica !

Introduzione ad Amazon Bedrock

Preparing Video For Download...