Heute erkläre ich dir, wie du mit Bedrock sicher und zuverlässig an die Arbeit kommst und lerne gleichzeitig etwas über Kaffee.
Sie erfahren, wie Sie die Amazon Bedrock-API für Text und multimodale Modelle mithilfe von Python nutzen, um Namen, Logos und Menüs für Ihr Café zu generieren und einen Agenten zu erstellen, der eine Verbindung zu einer Shopify-API herstellt, um Bestellungen entgegenzunehmen.
Shopify ist (meiner Meinung nach) die beste E-Commerce-Plattform, die es gibt.
Und genau wie AWS verfügt Shopify über eine API für alles und eine Plattform für Entwickler
Schließlich erstellen Sie mit Streamlit ein Frontend, um ein einzigartiges Benutzererlebnis zu bieten und Ihrem Agenten Leben einzuhauchen.
Der Moment, eine Cafeteria zu eröffnen oder kreative Ideen für ein Unternehmen zu haben, ist eine hervorragende Gelegenheit, sich auf generative KI (GenAI) zu verlassen und das Beste daraus zu machen.
Über Amazon Bedrock können Sie es nutzen, aber... Wie wird dieser Service genutzt?
Jeder Dienst in AWS verfügt über eine API, und Amazon Bedrock ist keine Ausnahme. Im Folgenden erkläre ich anhand eines Beispiels, wie man die Amazon Bedrock-API nutzt, um Namen und ein Menü für eine Cafeteria für unterwegs zu generieren.
Und ich zeige Ihnen auch, wie Sie ein multimodales Modell nutzen können, das Bilder analysieren kann.
Anweisungen zum Programmieren eines Python-Skripts zur lokalen Ausführung oder in einer Lambda-Funktion zum Aufrufen von Amazon Bedrock:
Zuerst müssen Sie hier den Zugriff auf die Modelle in den Bedrock-Anweisungen aktivieren
Anforderungen:
Schritt 1) Erstellen Sie eine virtuelle Python-Umgebung. Anweisungen finden Sie hier
Im Ordner „bedrock_examples“ dieses Repositorys finden Sie verschiedene Beispiele, die unten zum Aufrufen des Grundmodells verwendet werden.
Im Prompts-Ordner finden Sie die Beispiel-Prompts, die Sie zum Generieren des Namens, des Menüs und eines Prompts zur Übergabe an ein Bildgenerierungsmodell verwenden können, das Sie sowohl im Amazon Bedrock-Playground als auch von aufrufen können Aufrufen der API aus Python.
Schritt 2) Installieren Sie die Anforderungen
pip install -r requirements.txt
Schritt 3) Boto3 konfigurieren Weitere Informationen zu boto3
Hier konfiguriere ich den AWS-Client, der ihn anweist, das auf meinem Computer installierte Genaiday-Profil zu verwenden, und rufe den Bedrock-Runtime-Client auf, der es mir ermöglicht, das grundlegende Modell aufzurufen.
#Cambiar la region y el perfil de AWS aws = boto3.session.Session(profile_name='genaiday', region_name=region) client = aws.client('bedrock-runtime')
Schritt 4) Beispiel: Textmodell aufrufen
Diese Funktion ruft die Methode invoke_model auf und ich übergebe die vom Benutzer angegebene Eingabeaufforderung und gebe die Antwort zurück
Der wichtigste Teil sind die gesendeten Nachrichten:
pip install -r requirements.txt
#Cambiar la region y el perfil de AWS aws = boto3.session.Session(profile_name='genaiday', region_name=region) client = aws.client('bedrock-runtime')
Beispiel:
{ "role": "user", "content": [{ "type": "text", "text": prompt }] }
Schritt 5) Beispiel: Rufen Sie ein multimodales Modell auf.
Hier ist der Vorgang ähnlich, nur Sie müssen den MIME-Typ der gesendeten Datei hinzufügen, dafür gibt es eine Funktion, die den MIME-Typ
anhand des Dateinamens ermittelt
def call_text(prompt,modelId="anthropic.claude-3-haiku-20240307-v1:0"): #esta función es para llamar un modelo de texto config = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 4096, "messages": [ { "role": "user", "content": [{ "type": "text", "text": prompt }] } ] } body = json.dumps(config) modelId = modelId accept = "application/json" contentType = "application/json" response = client.invoke_model( body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get("body").read()) results = response_body.get("content")[0].get("text") return results
Um dann das Modell aufzurufen, müssen die Nachrichten wie folgt lauten:
print("Haiku") print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")
Der Aufruf des Modells sieht folgendermaßen aus:
def read_mime_type(file_path): # Este hack es para versiones de python anteriores a 3.13 # Esta función lee el mime type de un archivo mimetypes.add_type('image/webp', '.webp') mime_type = mimetypes.guess_type(file_path) return mime_type[0]
Beispiel:
"messages": [ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": read_mime_type(file), "data": base64.b64encode(open(file, "rb").read()).decode("utf-8") } }, { "type": "text", "text": caption }] } ]
So erstellen Sie einen Amazon Bedrock-Agenten:
Stellen Sie sicher, dass Sie die Bedrock-Modelle haben, die Sie mit aktiviertem Zugriff verwenden möchten. Anweisungen finden Sie hier. In diesem Fall verwenden wir Claude 3 Haiku und Sonnet
Dann erstellen Sie den Bedrock-Agenten in der AWS-Konsole:
1) Gehen Sie zum Bedrock-Service
2) Agenten
3) Agent erstellen
4) Geben Sie dem Agenten einen Namen, in unserem Fall „Pause-Coffee-Agent“
5) Beschreibung ist optional.
6) Einer der wichtigsten Schritte ist die Auswahl des Grundmodells, mit dem unser Agent ordnungsgemäß funktioniert. Wenn Sie wissen möchten, wie Sie das für Ihren Anwendungsfall am besten geeignete Modell auswählen, finden Sie hier eine Anleitung zum Amazon Bedrock-Modell Bewertung .
7) Der nächste Schritt ist die Eingabeaufforderung, die Ihr Modell leitet. Hier müssen Sie so präzise wie möglich sein und Ihre Fähigkeiten als Eingabeaufforderungsingenieur unter Beweis stellen. Wenn Sie nicht wissen, wo Sie anfangen sollen, empfehle ich Ihnen, diesen Leitfaden zu besuchen, in dem Sie sich befinden finden Sie die besten Richtlinien für das von Ihnen verwendete Modell. Eine weitere sehr nützliche Ressource ist die Anthropic-Konsole.
Dies ist die Eingabeaufforderung, die ich für den Beispielagenten verwendet habe. Ich empfehle, die Eingabeaufforderung auf Englisch zu verfassen, da die Modelle auf Englisch trainiert wurden und das Schreiben in der Quellsprache des Trainings manchmal hilft, fehlerhaftes Verhalten zu vermeiden.
def call_multimodal(file,caption,modelId="anthropic.claude-3-haiku-20240307-v1:0"): #esta funcion es para llamar a un modelo multimodal con una imagen y un texto config = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 4096, "messages": [ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": read_mime_type(file), "data": base64.b64encode(open(file, "rb").read()).decode("utf-8") } }, { "type": "text", "text": caption }] } ] } body = json.dumps(config) modelId = modelId accept = "application/json" contentType = "application/json" response = client.invoke_model( body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get("body").read()) results = response_body.get("content")[0].get("text") return results
8) Zusätzliche Konfiguration: Sie müssen dem Agenten ermöglichen, Eingaben des Benutzers zu erfassen, da ihm sicherlich Informationen zur Bearbeitung der Bestellung fehlen, zum Beispiel: Er muss nach den Produkten fragen, die der Kunde wünscht, und nach dem Namen , unter anderem.
9) Aktionsgruppen: Eine Aktionsgruppe definiert die Aktionen, bei denen der Agent dem Benutzer helfen kann. Sie können beispielsweise eine Aktionsgruppe mit der Bezeichnung „TakeOrder“ definieren, die die folgenden Aktionen haben kann
Um eine Aktionsgruppe zu erstellen, benötigen Sie für jede Aktion:
Auszuführende Aktionsgruppen rufen normalerweise eine Lambda-Funktion auf. Von Bedrock aus können Sie Folgendes tun:
Wenn Sie sich dafür entscheiden, die Lambda-Funktion über die Bedrock-Konsole zu erstellen, wird in Python eine Funktion mit einem grundlegenden Quellcode erstellt, den Sie dann in diesem Repo in der Datei Agents/action_group/lambda.py ändern müssen Haben Sie den geänderten Beispielcode, damit er mit dem Agent funktioniert.
Dies sind die Variablen, die Ihnen die notwendigen Informationen liefern:
Im folgenden Beispiel können Sie sehen, dass es zwei Aktionen gibt:
Parametro | Descripcion | Tipo | Obligatorio |
---|---|---|---|
customerEmail | Email of the customer | string | False |
customerName | Name of the customer | string | True |
products | SKUs and quantities to add to the cart in the format [{ variantId: variantId, quantity: QUANTITY }] | array | True |
Wenn Sie beispielsweise die Funktion get_products in der Lambda-Funktion aufrufen, wird dies wie folgt gehandhabt:
Es ist eine get_products-Funktion definiert, die für die Abfrage der Shopify-API verantwortlich ist (zu Bildungszwecken geben wir alle Produkte zurück)
Wenn Sie möchten, dass dies in Shopify funktioniert, müssen Sie die folgenden Variablen durch die Ihres Shops ersetzen:
pip install -r requirements.txt
#Cambiar la region y el perfil de AWS aws = boto3.session.Session(profile_name='genaiday', region_name=region) client = aws.client('bedrock-runtime')
Dann wird im Handler der Lambda-Funktion der Name der aufgerufenen Funktion überprüft und die Antwort in dem Format zurückgegeben, das die Aktionsgruppe benötigt:
{ "role": "user", "content": [{ "type": "text", "text": prompt }] }
Die obigen Codeausschnitte sind Teil der Lambda-Funktion, die Sie hier finden
10) Klicken Sie auf „Speichern“ und „Beenden“ und fertig! Der Agent ist bereit zum Testen.
Als Nächstes müssen Sie den Agenten testen und bestätigen, dass er funktioniert. Von Bedrock aus können Sie den Agenten testen. Wenn Sie während des Gesprächs auf „Trace anzeigen“ oder „Trace anzeigen“ klicken, wird Ihnen der Argumentationsprozess angezeigt. Hier finden Sie die Informationen Sie sollten besonders aufmerksam sein und in der Eingabeaufforderung die Anpassungen vornehmen, die Sie für notwendig halten, oder nach einem anderen Modell suchen, wenn Sie feststellen, dass das von Ihnen gewählte Modell nicht wie erwartet funktioniert.
Sobald Sie mit dem Agenten zufrieden sind, können Sie einen Alias erstellen. Ein Alias ist eine ID, über die Sie den Agenten über die Amazon Bedrock-API aufrufen können. Wenn Sie den Alias erstellen, wird eine Version davon erstellt Der Agent wird automatisch aktiviert, oder Sie können auf eine bereits vorhandene Version verweisen. Mit unterschiedlichen Aliasen und unterschiedlichen Versionen können Sie den Agent-Bereitstellungsprozess besser steuern, zum Beispiel:
Dann müssen Sie nur noch den Produktionsalias notieren, der der Version entspricht, die Sie live schalten möchten.
So rufen Sie den Agenten auf
Dazu habe ich im Ordner „agents/frontend“ eine Datei namens agent.py hinterlassen.
Diese Entwicklung nutzt Streamlit, ein leistungsstarkes Framework zur Erstellung von Beispielanwendungen für maschinelles Lernen
Der Teil des Codes, der den Agenten aufruft, ist der folgende:
def call_text(prompt,modelId="anthropic.claude-3-haiku-20240307-v1:0"): #esta función es para llamar un modelo de texto config = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 4096, "messages": [ { "role": "user", "content": [{ "type": "text", "text": prompt }] } ] } body = json.dumps(config) modelId = modelId accept = "application/json" contentType = "application/json" response = client.invoke_model( body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get("body").read()) results = response_body.get("content")[0].get("text") return results
Wir verwenden boto3, um die AWS-API zu nutzen, wir rufen den Bedrock-Agent-Runtime-Client auf, um den Agenten aufrufen zu können.
Die Parameter, die wir ihm übergeben müssen, sind:
In diesem Beispiel definiere ich die Variablen hier:
print("Haiku") print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")
Zuerst müssen Sie hier den Zugriff auf die Modelle in den Bedrock-Anweisungen aktivieren
Anforderungen:
Ich empfehle die Anleitung zum Erstellen einer virtuellen Python-Umgebung hier
pip install -r requirements.txt
#Cambiar la region y el perfil de AWS aws = boto3.session.Session(profile_name='genaiday', region_name=region) client = aws.client('bedrock-runtime')
Dadurch wird Streamlit auf Port 8501 ausgeführt und Sie können die folgende URL besuchen: http://localhost:8501/, um das Frontend zu sehen, das den Agenten aufruft
Wenn Sie alle Schritte befolgt haben:
Einige Links, damit Sie Ihren Weg innerhalb von GenerativeAI verfolgen können
Workshop AWS generative KI
Bedrock-Wissensdatenbanken
Anthropic Console (Zum Debuggen unserer Eingabeaufforderungen)
Community.aws (weitere Artikel, die von und für die Community erstellt wurden)
Das obige ist der detaillierte Inhalt vonErstellen eines Coffeeshop-Agenten mit Amazon Bedrock und Shopify. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!