Generowanie tekstu za pomocą modeli językowych

Wprowadzenie do Amazon Bedrock

Nikhil Rangarajan

Data Scientist

Wysyłanie promptów do modeli językowych

  • Prompt: tekst wejściowy wysyłany do modelu
    • „Explain how AWS Lambda works"

Ikona reprezentująca prompt.

Wprowadzenie do Amazon Bedrock

Wysyłanie promptów do modeli językowych

  • Prompt: tekst wejściowy wysyłany do modelu
    • „Explain how AWS Lambda works"
  • Completion: tekst wygenerowany przez model
    • „AWS Lambda is a serverless compute service that..."

Ikony reprezentujące prompt i completion.

Wprowadzenie do Amazon Bedrock

Wysyłanie promptów do modeli językowych

  • Prompt: tekst wejściowy wysyłany do modelu
    • „Explain how AWS Lambda works"
  • Completion: tekst wygenerowany przez model
    • „AWS Lambda is a serverless compute service that..."
  • Odpowiedź (response):
    • Wygenerowany tekst (completion)
    • Metadane (tokeny, informacje o modelu)
    • Informacje o statusie

Trzy ikony w sekwencji reprezentujące prompt, completion i response.

Wprowadzenie do Amazon Bedrock

Stosowanie podstawowych technik prompt engineeringu

  • Techniki uzyskiwania lepszych wyników:
    • Jasność i precyzja: pisz szczegółowe i dokładne instrukcje
    • Przypisanie roli: nadaj personę, aby poprawić rozumienie kontekstu
    • Instrukcje formatowania: dodaj ograniczenia, aby kierować odpowiedzią
"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."
Wprowadzenie do Amazon Bedrock

Zaawansowane techniki parsowania tekstu

  • Obsługa brakujących lub nieoczekiwanych kluczy
data = json.loads(response['body'].read())
if 'completion' in data:
    output = data['completion']

else: output = "Key not found"
  • Wielopoziomowe parsowanie JSON do nawigacji w głęboko zagnieżdżonych strukturach
try:
    nova_output = data.decode()["output"]

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

Przetwarzanie odpowiedzi i obsługa tekstu

  • Problemy z Unicode lub kodowaniem: obsługa znaków specjalnych w odpowiedziach tekstowych
    # Ensure proper encoding
    output = data['completion'].encode('utf-8').decode('unicode_escape')
    print(output)
    
  • Przetwarzanie dużych odpowiedzi: dziel lub skracaj duże dane wyjściowe
    # Truncate response for display
    output = data['completion'][:500]  # Limit to 500 characters
    print(output)
    
Wprowadzenie do Amazon Bedrock

Ekstrakcja kategorii za pomocą Bedrock

  • Przykład: klasyfikacja danych tekstowych
  • Używaj ustrukturyzowanych promptów z jasnymi opcjami kategorii
  • Podaj wyraźne instrukcje dla wyjścia jednokategoriowego
  • Efektywnie przetwarzaj odpowiedzi modelu
  • Wynik: dokładna kategoryzacja tekstu

Ikony reprezentujące klasyfikację tekstu

Wprowadzenie do Amazon Bedrock

Ekstrakcja kategorii za pomocą 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"}}
Wprowadzenie do Amazon Bedrock

Czas na ćwiczenia!

Wprowadzenie do Amazon Bedrock

Preparing Video For Download...