Heim > Backend-Entwicklung > Python-Tutorial > Erstellen eines Coffeeshop-Agenten mit Amazon Bedrock und Shopify

Erstellen eines Coffeeshop-Agenten mit Amazon Bedrock und Shopify

Patricia Arquette
Freigeben: 2024-10-30 18:02:31
Original
669 Leute haben es durchsucht

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.

? Index

  • Aufrufen der Bedrock-API
  • Erstellen eines Amazon Bedrock-Agenten, der mit Shopify interagiert

? Aufrufen der Amazon Bedrock API zum Generieren von Namen, Logo und Menü für Ihr Café

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:

  • Ein Konto bei AWS. Wenn Sie noch kein Konto haben, können Sie hier eines eröffnen
  • AWS CLI-Anweisungen hier
  • Python 3.11 oder höher

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Beispiel:

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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.")
Nach dem Login kopieren
Nach dem Login kopieren

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]
Nach dem Login kopieren

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
            }]
        }
    ]
Nach dem Login kopieren

? Erstellen eines Amazon Bedrock-Agenten, der mit Shopify interagiert

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

Creación de un agente de cafetería con Amazon Bedrock y Shopify

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.

Creación de un agente de cafetería con Amazon Bedrock y Shopify

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
Nach dem Login kopieren

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.

Creación de un agente de cafetería con Amazon Bedrock y Shopify

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

  • Produkte auflisten
  • Auftrag bearbeiten

Um eine Aktionsgruppe zu erstellen, benötigen Sie für jede Aktion:

  • Der Name
  • Die Parameter

Auszuführende Aktionsgruppen rufen normalerweise eine Lambda-Funktion auf. Von Bedrock aus können Sie Folgendes tun:

  • Erstellen Sie eine Lambda-Funktion über die Bedrock-Konsole (Wählen Sie „Schnelle Erstellung einer Lambda-Funktion“ aus)

Creación de un agente de cafetería con Amazon Bedrock y Shopify

  • Wählen Sie eine hier bereits erstellte Lambda-Funktion, die Anweisungen zum Ablauf des Ereignisses und die erwartete Reaktion für jede Aktionsgruppe

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:

  • Funktion: ist der Name der aufgerufenen Aktion, im Fall des Beispiels kann es sein: get_products (um Produkte aufzulisten) und place_order (um die Bestellung in Shopify zu generieren)
  • Parameter: ist ein Wörterbuch von Parametern.

Im folgenden Beispiel können Sie sehen, dass es zwei Aktionen gibt:

Creación de un agente de cafetería con Amazon Bedrock y Shopify

Crear agente Paso 6

  • get_products, für das keine Parameter erforderlich sind
  • place_order mit 3 Parametern:
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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
                }]
            }
Nach dem Login kopieren
Nach dem Login kopieren

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.

Der Agent in Aktion

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:

  • Sie können einen Alias ​​„Entwicklung“ haben, der zu den neuesten Agententests führt
  • Ein „Preprod“-Alias, der der Agent im Vorproduktionsmodus wäre
  • Ein Alias ​​„prod“ und das ist der Live-Agent.

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
Nach dem Login kopieren
Nach dem Login kopieren

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:

  • agentId
  • agentAliasId
  • inputText (die Eingabeaufforderung)
  • sessionId (die Sitzung, um die Konversationen zu identifizieren)

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.")
Nach dem Login kopieren
Nach dem Login kopieren

Einrichtung:

Zuerst müssen Sie hier den Zugriff auf die Modelle in den Bedrock-Anweisungen aktivieren

Anforderungen:

  • AWS CLI-Anweisungen hier
  • Python 3.11 oder höher

Ich empfehle die Anleitung zum Erstellen einer virtuellen Python-Umgebung hier

pip install -r requirements.txt
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ausführung

#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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

Creación de un agente de cafetería con Amazon Bedrock y Shopify

Abschluss

Wenn Sie alle Schritte befolgt haben:

  • Verwendet die Amazon Bedrock API vom Bedrock Playground und von Python
  • Sie haben grundlegende Text- und multimodale Modelle aufgerufen
  • Sie haben einen Agenten von Grund auf erstellt, der eine Shopify-API nutzt

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage