Generarea textului cu modele de limbaj

Introducere în Amazon Bedrock

Nikhil Rangarajan

Data Scientist

Trimiterea prompturilor către modele de limbaj

  • Prompt: textul de intrare trimis modelului
    • „Explain how AWS Lambda works"

O pictogramă reprezentând promptul.

Introducere în Amazon Bedrock

Trimiterea prompturilor către modele de limbaj

  • Prompt: textul de intrare trimis modelului
    • „Explain how AWS Lambda works"
  • Completion: textul generat de model
    • „AWS Lambda is a serverless compute service that..."

Pictograme reprezentând promptul și completion-ul.

Introducere în Amazon Bedrock

Trimiterea prompturilor către modele de limbaj

  • Prompt: textul de intrare trimis modelului
    • „Explain how AWS Lambda works"
  • Completion: textul generat de model
    • „AWS Lambda is a serverless compute service that..."
  • Răspuns:
    • Text generat (completion)
    • Metadate (tokeni, informații despre model)
    • Informații de stare

Trei pictograme în secvență reprezentând promptul, completion-ul și răspunsul.

Introducere în Amazon Bedrock

Tehnici de bază pentru ingineria prompturilor

  • Tehnici pentru rezultate mai bune:
    • Claritate și specificitate: instrucțiuni detaliate și precise
    • Atribuirea unui rol: oferiți un persona pentru context mai bun
    • Instrucțiuni de formatare: constrângeri pentru ghidarea răspunsului
"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."
Introducere în Amazon Bedrock

Tehnici avansate de parsare a textului

  • Gestionarea cheilor lipsă sau neașteptate
data = json.loads(response['body'].read())
if 'completion' in data:
    output = data['completion']

else: output = "Key not found"
  • Parsare JSON pe mai multe niveluri pentru structuri profund imbricate
try:
    nova_output = data.decode()["output"]

except (KeyError, IndexError) as e: nova_output = f"Error: {str(e)}"
Introducere în Amazon Bedrock

Procesarea răspunsurilor și gestionarea textului

  • Probleme Unicode sau de codificare: gestionați caracterele speciale din răspunsuri
    # Ensure proper encoding
    output = data['completion'].encode('utf-8').decode('unicode_escape')
    print(output)
    
  • Procesarea răspunsurilor mari: împărțiți sau trunchiați rezultatele lungi
    # Truncate response for display
    output = data['completion'][:500]  # Limit to 500 characters
    print(output)
    
Introducere în Amazon Bedrock

Extragerea categoriilor cu Bedrock

  • Exemplu: clasificarea datelor text
  • Utilizați prompturi structurate cu opțiuni clare de categorii
  • Furnizați instrucțiuni explicite pentru o singură categorie
  • Procesați eficient răspunsurile modelului
  • Rezultat: Categorizare precisă a textului

Pictograme reprezentând clasificarea textului

Introducere în Amazon Bedrock

Extragerea categoriilor cu 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"}}
Introducere în Amazon Bedrock

Să exersăm!

Introducere în Amazon Bedrock

Preparing Video For Download...