Prompt-Engineering-Konzepte - 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.

Prompt-Engineering-Konzepte

Prompt-Engineering bezieht sich auf die Praxis, die Texteingabe für große Sprachmodelle (LLMs) zu optimieren, um die gewünschten Antworten zu erhalten. Mithilfe von Prompts kann ein LLM eine Vielzahl von Aufgaben ausführen, darunter Klassifizierung, Beantwortung von Fragen, Codegenerierung, kreatives Schreiben und mehr. Die Qualität der Prompts für ein LLM kann sich auf die Qualität der Antworten des Modells auswirken. Dieser Abschnitt enthält die erforderlichen Informationen, um mit Prompt-Engineering zu beginnen. Es werden auch Tools abgedeckt, die Ihnen helfen, das bestmögliche Prompt-Format für Ihren Anwendungsfall zu finden, wenn Sie ein LLM in Amazon Bedrock verwenden.

Anmerkung

Alle Beispiele in diesem Dokument werden über API-Aufrufe abgerufen. Die Antwort kann aufgrund der stochastischen Beschaffenheit des LLM-Generierungsprozesses variieren. Sofern nicht anders angegeben, wurden die Eingabeaufforderungen von Mitarbeitern von AWS verfasst.

Anmerkung

Zum Reduzieren von Halluzinationen können Sie Ihren Prompt mithilfe von Techniken zur Prompt-Optimierung verfeinern, Techniken wie Retrieval Augmented Generation (RAG) verwenden, um dem Modell Zugriff auf relevantere Daten zu gewähren, oder ein anderes Modell verwenden, das zu besseren Ergebnissen führen könnte.

Amazon Bedrock umfasst Modelle verschiedener Anbieter. Im Folgenden finden Sie eine Liste der Prompt-Engineering-Richtlinien für diese Modelle.

Haftungsausschluss: Die Beispiele in diesem Dokument verwenden die aktuellen Textmodelle, die in Amazon Bedrock verfügbar sind. Außerdem enthält dieses Dokument allgemeine Richtlinien zu Eingabeaufforderungen. Modellspezifische Anleitungen finden Sie in den entsprechenden Dokumenten in Amazon Bedrock. Dieses Dokument bietet einen Ausgangspunkt. Die folgenden Beispielantworten werden zwar anhand bestimmter Modelle in Amazon Bedrock generiert, Sie können jedoch auch andere Modelle in Amazon Bedrock verwenden, um Ergebnisse zu erzielen. Die Ergebnisse können je nach Modell unterschiedlich sein, da jedes Modell eigene Leistungsmerkmale hat. Die Ausgabe, die Sie mithilfe von KI-Services generieren, ist Ihr Inhalt. Aufgrund der Beschaffenheit von Machine Learning ist die Ausgabe möglicherweise nicht kundenspezifisch und die Services können bei allen Kunden dieselben oder ähnliche Ergebnisse erzielen.

Was ist eine Eingabeaufforderung?

Eingabeaufforderungen (Prompts) sind spezifische Eingaben, die von Ihnen als Benutzer:in bereitgestellt werden und die LLMs in Amazon Bedrock dabei unterstützen, eine angemessene Antwort oder Ausgabe für eine bestimmte Aufgabe oder Instruktion zu generieren.

User Prompt: Who invented the airplane?

Wenn Titan über diesen Prompt abgefragt wird, stellt es eine Ausgabe bereit:

Output: The Wright brothers, Orville and Wilbur Wright are widely credited with inventing and manufacturing the world's first successful airplane.

(Quelle des Prompts: AWS, verwendetes Modell: Amazon Titan Text)

Komponenten einer Eingabeaufforderung

Eine einzelne Eingabeaufforderung umfasst mehrere Komponenten, z. B. die Aufgabe oder Instruktion, die die LLMs ausführen sollen, den Kontext der Aufgabe (z. B. eine Beschreibung der entsprechenden Domain), Demonstrationsbeispiele und den Eingabetext, den LLMs in Amazon Bedrock in ihrer Antwort verwenden sollen. Abhängig von Ihrem Anwendungsfall, der Verfügbarkeit der Daten und der Aufgabe sollte Ihre Eingabeaufforderung eine oder mehrere dieser Komponenten kombinieren.

Sehen Sie sich diesen Beispiel-Prompt an, in dem Titan aufgefordert wird, eine Bewertung zusammenzufassen:

User Prompt: The following is text from a restaurant review: “I finally got to check out Alessandro’s Brilliant Pizza and it is now one of my favorite restaurants in Seattle. The dining room has a beautiful view over the Puget Sound but it was surprisingly not crowded. I ordered the fried castelvetrano olives, a spicy Neapolitan-style pizza and a gnocchi dish. The olives were absolutely decadent, and the pizza came with a smoked mozzarella, which was delicious. The gnocchi was fresh and wonderful. The waitstaff were attentive, and overall the experience was lovely. I hope to return soon." Summarize the above restaurant review in one sentence.

(Quelle der Eingabeaufforderung: AWS)

Basierend auf diesem Prompt antwortet Titan mit einer kurzen, einzeiligen Zusammenfassung der Restaurantbewertung. Die Bewertung nennt wichtige Fakten und vermittelt, wie gewünscht, die wichtigsten Punkte.

Output: Alessandro's Brilliant Pizza is a fantastic restaurant in Seattle with a beautiful view over Puget Sound, decadent and delicious food, and excellent service.

(Verwendetes Modell: Amazon Titan Text)

Sowohl die Instruktion Summarize the above restaurant review in one sentence als auch der Bewertungstext I finally got to check out ... waren für diese Art der Ausgabe erforderlich. Ohne eine der beiden Komponenten würde das Modell nicht über genügend Informationen verfügen, um eine sinnvolle Zusammenfassung zu erstellen. Die Instruktion teilt dem LLM mit, was zu tun ist, und der Text ist die Eingabe, mit der das LLM arbeitet. Der Kontext (The following is text from a restaurant review) bietet zusätzliche Informationen und Schlüsselwörter, die das Modell dazu anleiten, die Eingabe bei der Formulierung seiner Ausgabe zu verwenden.

Im folgenden Beispiel stellt der Text Context: Climate change threatens people with increased flooding ... die Eingabe dar, die das LLM verwenden kann, um die Aufgabe zu erfüllen und die Frage Question: What organization calls climate change the greatest threat to global health in the 21st century?” zu beantworten.

User prompt: Context: Climate change threatens people with increased flooding, extreme heat, increased food and water scarcity, more disease, and economic loss. Human migration and conflict can also be a result. The World Health Organization (WHO) calls climate change the greatest threat to global health in the 21st century. Adapting to climate change through efforts like flood control measures or drought-resistant crops partially reduces climate change risks, although some limits to adaptation have already been reached. Poorer communities are responsible for a small share of global emissions, yet have the least ability to adapt and are most vulnerable to climate change. The expense, time required, and limits of adaptation mean its success hinge on limiting global warming. Question: What organization calls climate change the greatest threat to global health in the 21st century?

(Quelle der Eingabeaufforderung: https://en.wikipedia.org/wiki/Climate_change)

AI21 Labs Jurassic antwortet mit dem richtigen Namen der Organisation entsprechend dem im Prompt angegebenen Kontext.

Output: The World Health Organization (WHO) calls climate change the greatest threat to global health in the 21st century.

(Verwendetes Modell: AI21 Labs Jurassic-2 Ultra v1)

Few Shot Prompting und Zero Shot Prompting im Vergleich

Manchmal ist es hilfreich, einige Beispiele anzugeben, um LLMs dabei zu helfen, ihre Ausgabe besser an Ihre Erwartungen anzupassen. Dies wird auch als Few Shot Prompting oder In-Context Learning bezeichnet, bei dem das Wort Shot einer gekoppelten Beispieleingabe und der gewünschten Ausgabe entspricht. Zur Veranschaulichung finden Sie hier zunächst ein Beispiel für ein Zero Shot Prompting zur Stimmungsklassifizierung, bei der kein Beispiel für ein Ein-/Ausgabe-Paar im Eingabeaufforderungstext angegeben ist:

User prompt: Tell me the sentiment of the following headline and categorize it as either positive, negative or neutral: New airline between Seattle and San Francisco offers a great opportunity for both passengers and investors.

(Quelle der Eingabeaufforderung: AWS)

Output: Positive

(Verwendetes Modell: Amazon Titan Text)

Hier ist die Few-Shot-Version einer Eingabeaufforderung zur Stimmungsklassifizierung:

User prompt: Tell me the sentiment of the following headline and categorize it as either positive, negative or neutral. Here are some examples: Research firm fends off allegations of impropriety over new technology. Answer: Negative Offshore windfarms continue to thrive as vocal minority in opposition dwindles. Answer: Positive Manufacturing plant is the latest target in investigation by state officials. Answer:

(Quelle der Eingabeaufforderung: AWS)

Output: Negative

(Verwendetes Modell: Amazon Titan Text)

Im folgenden Beispiel werden Anthropic-Claude-Modelle verwendet. Beim Einsatz von Anthropic-Claude-Modellen empfiehlt es sich, die Tags <example></example> zu verwenden, um Demonstrationsbeispiele einzuschließen. Wir empfehlen außerdem, unterschiedliche Trennzeichen wie H: und A: in den Beispielen zu verwenden, um Verwechslungen mit den Trennzeichen Human: und Assistant: für die gesamte Eingabeaufforderung zu vermeiden. Beachten Sie, dass beim letzten Few-Shot-Beispiel das finale A: zugunsten von Assistant: weggelassen wurde, sodass stattdessen Anthropic Claude zur Generierung der Antwort aufgefordert wird.

User prompt: Human: Please classify the given email as "Personal" or "Commercial" related emails. Here are some examples. <example> H: Hi Tom, it's been long time since we met last time. We plan to have a party at my house this weekend. Will you be able to come over? A: Personal </example> <example> H: Hi Tom, we have a special offer for you. For a limited time, our customers can save up to 35% of their total expense when you make reservations within two days. Book now and save money! A: Commercial </example> H: Hi Tom, Have you heard that we have launched all-new set of products. Order now, you will save $100 for the new products. Please check our website. Assistant: Output: Commercial

(Quelle des Prompts: AWS, verwendetes Modell: Anthropic Claude)

Prompt-Vorlage

Eine Eingabeaufforderungsvorlage gibt die Formatierung der Eingabeaufforderung mit austauschbarem Inhalt an. Eingabeaufforderungsvorlagen sind „Rezepte“ für die Verwendung von LLMs für verschiedene Anwendungsfälle wie Klassifizierung, Zusammenfassung, Beantwortung von Fragen und mehr. Eine Vorlage für Eingabeaufforderungen kann Instruktionen, Few-Shot-Beispiele sowie spezifischen Kontext und Fragen enthalten, die für einen bestimmten Anwendungsfall geeignet sind. Das folgende Beispiel ist eine Vorlage, die Sie verwenden können, um mithilfe von Amazon-Bedrock-Textmodellen eine Few-Shot-Stimmungsklassifizierung durchzuführen:

Prompt template: """Tell me the sentiment of the following {{Text Type, e.g., “restaurant review”}} and categorize it as either {{Sentiment A}} or {{Sentiment B}}. Here are some examples: Text: {{Example Input 1}} Answer: {{Sentiment A}} Text: {{Example Input 2}} Answer: {{Sentiment B}} Text: {{Input}} Answer:"""

Benutzer können diese Vorlage kopieren und eigenen Text und Few-Shot-Beispiele eingeben, um Eingabeaufforderungen bei der Verwendung von LLMs in Amazon Bedrock abzuschließen. Weitere Vorlagen finden Sie in diesem Abschnitt.

Anmerkung

Die doppelten geschweiften Klammern {{ and }} kennzeichnen die Stellen, an denen datenspezifische Informationen in der Vorlage eingegeben werden müssen. Sie sollten nicht in den Eingabeaufforderungstext aufgenommen werden.

Aufrechterhaltung des Recalls von Amazon-Bedrock-Inferenzanforderungen

Wenn Sie über API-Aufrufe auf Modelle in Amazon Bedrock zugreifen, beachten Sie bitte, dass vorherige Prompts und frühere Anfragen nicht gespeichert wurden, es sei denn, die vorherige Interaktion ist im aktuellen Prompt enthalten. Wenn Sie frühere Prompts in eine Anfrage aufnehmen, können Sie Interaktionen im Konversationsstil führen oder Folgeanfragen stellen.

Wenn Sie über API-Aufrufe statt über den Text-Playground von Amazon Bedrock auf Anthropic-Claude-Modelle zugreifen, verfassen Sie die Prompts im Konversationsstil, um die gewünschte Antwort zu erhalten (für die Modellfamilien Titan Text und AI21 Labs Jurassic ist dies nicht erforderlich). Das folgende Beispiel zeigt eine Eingabeaufforderung im Konversationsstil:

User prompt: Human: Describe where sea otters live in two sentences. Assistant: Output: Here is a two sentence description of where sea otters live: Sea otters live in the northern Pacific Ocean along the coasts of Russia, Alaska, Canada, and the continental United States. They prefer coastal habitats like rocky shores, kelp forests, and estuaries where they have access to shallow, nearshore waters.

(Quelle des Prompts: AWS, verwendetes Modell: Anthropic Claude)

Beachten Sie, dass der Hauptinhalt der Eingabeaufforderung wie folgt verfasst ist: \n\nHuman: {{Main Content}}\n\nAssistant:. Bei Anthropic-Claude-Modellen müssen über die API gesendete Prompts \n\nHuman: und \n\nAssistant: enthalten.

Wenn Sie den Konversationsmodus in Titan verwenden möchten, können Sie beim Prompt für das Modell das Format User: {{}} \n Bot: verwenden.