Rumah > pembangunan bahagian belakang > Tutorial Python > Mencipta Ejen Kedai Kopi dengan Amazon Bedrock dan Shopify

Mencipta Ejen Kedai Kopi dengan Amazon Bedrock dan Shopify

Patricia Arquette
Lepaskan: 2024-10-30 18:02:31
asal
672 orang telah melayarinya

Hari ini saya akan menerangkan cara untuk pergi bekerja dengan Bedrock dengan selamat dan boleh dipercayai dan, pada masa yang sama, belajar sedikit tentang kopi.

Anda akan belajar cara menggunakan API Amazon Bedrock bagi model Teks dan Multimodal menggunakan Python untuk menjana nama, logo dan menu untuk kafe anda dan untuk mencipta ejen yang menyambung ke API Shopify untuk menerima pesanan.

Shopify ialah (pada pendapat saya) platform eCommerce terbaik yang wujud.

Dan sama seperti AWS, Shopify mempunyai API untuk segala-galanya dan platform untuk pembangun

Akhirnya anda akan membuat bahagian hadapan menggunakan Streamlit untuk memberikan pengalaman pengguna yang unik dan memberi kehidupan kepada ejen anda.

? Indeks

  • Memanfaatkan API Batuan Dasar
  • Mencipta ejen Amazon Bedrock yang berinteraksi dengan Shopify

? Menggunakan Amazon Bedrock API untuk menjana nama, logo dan menu untuk kedai kopi anda

Saat membuka kafeteria atau mempunyai idea kreatif untuk mana-mana perniagaan adalah peluang terbaik untuk bergantung pada Generative AI (GenAI) dan memanfaatkannya sepenuhnya.

Melalui Amazon Bedrock anda boleh menggunakannya, tetapi... Bagaimanakah perkhidmatan itu digunakan?

Setiap perkhidmatan dalam AWS mempunyai API, dan Amazon Bedrock tidak terkecuali Di bawah saya menerangkan cara menggunakan Amazon Bedrock API melalui contoh untuk menjana nama dan menu untuk Kafeteria semasa dalam perjalanan.

Dan saya juga menunjukkan kepada anda cara menggunakan model multimodal yang mampu menganalisis imej.

Arahan untuk memprogram skrip Python untuk dijalankan secara setempat atau dalam fungsi Lambda untuk menggunakan Amazon Bedrock:

Mula-mula anda mesti mendayakan akses kepada model dalam Arahan Batuan Dasar di sini

Keperluan:

  • Akaun di AWS, jika anda tidak mempunyai akaun, anda boleh membukanya di sini
  • Arahan AWS CLI di sini
  • Python 3.11 atau lebih tinggi

Langkah 1) Cipta persekitaran Python maya Arahan di sini

Dalam folder bedrock_examples repositori ini, anda akan menemui contoh berbeza yang digunakan di bawah untuk menggunakan model asas.

Dalam folder gesaan anda akan menemui gesaan contoh, yang boleh anda gunakan untuk menjana nama, Menu dan gesaan untuk dihantar kepada model penjanaan imej yang boleh anda gunakan di taman permainan Amazon Bedrock dan melalui menggunakan API daripada Python.

Langkah 2) Pasang keperluan

pip install -r requirements.txt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 3) Konfigurasikan Boto3 Maklumat lanjut tentang boto3

Di sini saya mengkonfigurasi klien AWS memberitahunya untuk menggunakan profil genaiday yang dipasang pada komputer saya dan memanggil klien bedrock-runtime yang akan membolehkan saya menggunakan model asas.

#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 4) Contoh: Guna model teks

Fungsi ini memanggil kaedah invoke_model dan saya menghantar gesaan yang ditunjukkan oleh pengguna dan mengembalikan respons

Bahagian yang paling penting ialah mesej yang dihantar:

pip install -r requirements.txt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh:

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }
Salin selepas log masuk
Salin selepas log masuk

Langkah 5) Contoh: Guna model multimodal.

Di sini prosesnya serupa, cuma anda perlu menambah jenis mime fail yang dihantar, untuk ini terdapat fungsi yang mendapatkan mimetype
berdasarkan nama fail

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
Salin selepas log masuk
Salin selepas log masuk

Kemudian untuk menggunakan model, mesej mestilah yang berikut:

print("Haiku")
print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")
Salin selepas log masuk
Salin selepas log masuk

Seruan model kelihatan seperti ini:

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]
Salin selepas log masuk

Contoh:

 "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
            }]
        }
    ]
Salin selepas log masuk

? Mencipta ejen Amazon Bedrock yang berinteraksi dengan Shopify

Untuk mencipta ejen Amazon Bedrock:

Pastikan anda mempunyai model Batuan Dasar yang anda mahu gunakan dengan Arahan didayakan akses di sini, dalam kes ini kami akan menggunakan Claude 3 Haiku dan Sonnet

Kemudian buat ejen Bedrock dalam konsol AWS:

1) Pergi ke perkhidmatan Batuan Dasar
2) Ejen
3) Buat ejen

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

4) Beri nama ejen, dalam kes kami "Jeda-Ejen-Kopi
5) Penerangan adalah pilihan.
6) Salah satu langkah yang paling penting ialah memilih model asas yang akan menjadikan ejen kami berfungsi dengan betul. Jika anda ingin mengetahui cara memilih model terbaik yang sesuai dengan kes penggunaan anda, berikut ialah panduan mengenai perkhidmatan Amazon Bedrock Penilaian .
7) Langkah seterusnya ialah gesaan yang akan membimbing model anda, di sini anda perlu setepat mungkin dan menunjukkan kemahiran anda sebagai jurutera segera, jika anda tidak tahu di mana untuk bermula, saya cadangkan melawati panduan ini di mana anda akan menemui garis panduan terbaik untuk model yang anda gunakan, dan satu lagi sumber yang sangat berguna ialah konsol antropik.

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

Ini ialah gesaan yang saya gunakan untuk ejen contoh, saya syorkan menulis gesaan dalam bahasa Inggeris memandangkan model tersebut dilatih dalam bahasa Inggeris dan kadangkala menulis dalam bahasa sumber latihan membantu mengelakkan tingkah laku yang salah.

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
Salin selepas log masuk

8) Konfigurasi tambahan, anda mesti membenarkan ejen menangkap input daripada pengguna, memandangkan mereka pasti akan kekurangan maklumat untuk memproses pesanan, contohnya: Mereka perlu meminta produk yang pelanggan inginkan, nama , antara lain.

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

9) Kumpulan Tindakan: Kumpulan tindakan mentakrifkan tindakan di mana ejen boleh membantu pengguna. Sebagai contoh, anda boleh menentukan kumpulan tindakan yang menyatakan TakeOrder yang boleh mempunyai tindakan berikut

  • Senaraikan produk
  • Proses Pesanan

Untuk membuat kumpulan tindakan yang anda perlukan untuk setiap tindakan:

  • Nama
  • Parameter

Kumpulan tindakan untuk dijalankan biasanya menggunakan fungsi Lambda, daripada Bedrock anda boleh:

  • Buat fungsi lambda daripada konsol Bedrock (Pilih Ciptaan pantas fungsi lambda)

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

  • Pilih fungsi lambda yang telah dibuat di sini arahan tentang acara tersebut dan tindak balas yang dijangkakan untuk setiap kumpulan tindakan

Jika anda memilih untuk mencipta fungsi lambda daripada konsol Bedrock, fungsi akan dibuat dalam python dengan kod sumber asas yang kemudiannya anda perlu ubah suai, dalam repo ini dalam file agents/action_group/lambda.py anda mempunyai kod contoh yang diubah suai untuk menjadikannya berfungsi dengan ejen.

Ini adalah pembolehubah yang akan memberi anda maklumat yang diperlukan:

  • fungsi: ialah nama tindakan yang digunakan, dalam kes contoh, ia boleh menjadi: get_products (untuk menyenaraikan produk) dan place_order (untuk menjana pesanan dalam Shopify)
  • parameter: ialah kamus parameter.

Dalam contoh berikut, anda boleh melihat bahawa terdapat dua tindakan:

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

Crear agente Paso 6

  • get_products yang tidak memerlukan sebarang parameter
  • pesanan_tempat yang mempunyai 3 parameter:
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

Jadi sebagai contoh apabila anda memanggil fungsi get_products dalam fungsi lambda ia dikendalikan seperti ini:

Terdapat fungsi get_products yang ditakrifkan yang akan bertanggungjawab untuk menanyakan Shopify API (Untuk tujuan pendidikan kami memulangkan semua produk)

Jika anda mahu ini berfungsi dalam Shopify, anda mesti menggantikan pembolehubah berikut dengan pembolehubah kedai anda:

pip install -r requirements.txt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kemudian dalam pengendali fungsi lambda, nama fungsi yang dipanggil disahkan dan respons dikembalikan dalam format yang diperlukan oleh kumpulan_tindakan:

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }
Salin selepas log masuk
Salin selepas log masuk

Coretan kod di atas adalah sebahagian daripada fungsi lambda yang terdapat di sini

10) Tekan Simpan dan Keluar, dan itu sahaja ejen sedia untuk diuji.

Ejen sedang beraksi

Perkara seterusnya adalah untuk menguji ejen dan mengesahkan bahawa ia berfungsi, dari Bedrock anda boleh menguji ejen, dan jika semasa perbualan anda mengklik "Lihat jejak atau Tunjukkan Jejak", ia akan menunjukkan kepada anda proses penaakulan, di sinilah anda harus Beri perhatian khusus dan buat pelarasan yang anda fikir perlu dalam gesaan atau cari model lain jika anda melihat model yang anda pilih tidak berfungsi seperti yang anda jangkakan.

Setelah anda berpuas hati dengan ejen tersebut, anda boleh mencipta Alias, alias ialah ID yang melaluinya anda akan dapat memanggil ejen daripada Amazon Bedrock API, apabila anda mencipta alias, ia akan mencipta versi ejen secara automatik, atau anda boleh menunjuk ke versi yang sedia ada, mempunyai alias berbeza dan versi berbeza akan membantu anda mengawal proses penggunaan ejen, contohnya:

  • Anda boleh mempunyai alias "pembangunan" yang akan pergi ke ujian Ejen terkini
  • Alyas "preprod" yang akan menjadi ejen dalam mod pra-pengeluaran
  • Alyas "prod" dan ini ialah ejen langsung.

Kemudian yang tinggal hanyalah menulis alias pengeluaran yang sepadan dengan versi yang anda mahu siaran langsung.

Cara untuk memanggil ejen

Untuk ini, dalam folder ejen/depan saya telah meninggalkan fail bernama agent.py.

Pembangunan ini menggunakan Streamlit, rangka kerja yang berkuasa untuk membuat contoh aplikasi pembelajaran mesin

Bahagian kod yang memanggil ejen ialah yang berikut:

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
Salin selepas log masuk
Salin selepas log masuk

Kami menggunakan boto3 untuk menggunakan API AWS, kami memanggil pelanggan jangka masa ejen batuan asas untuk dapat memanggil ejen.

Parameter yang perlu kami berikan kepadanya ialah:

  • ejenId
  • agentAliasId
  • inputTeks (gesaan)
  • sessionId (sesi, untuk mengenal pasti perbualan)

Dalam contoh ini, saya mentakrifkan pembolehubah di sini:

print("Haiku")
print(call_text("Estoy buscando armar un local de café al paso, dame 5 nombres para un local.")
Salin selepas log masuk
Salin selepas log masuk

Kemudahan:

Mula-mula anda mesti mendayakan akses kepada model dalam Arahan Batuan Dasar di sini

Keperluan:

  • Arahan AWS CLI di sini
  • Python 3.11 atau lebih tinggi

Saya syorkan mencipta Arahan persekitaran Python maya di sini

pip install -r requirements.txt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Perlaksanaan

#Cambiar la region y el perfil de AWS
aws = boto3.session.Session(profile_name='genaiday', region_name=region)
client = aws.client('bedrock-runtime')
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini akan mula menjalankan streamlit pada port 8501 dan anda boleh melawati URL berikut: http://localhost:8501/ untuk melihat bahagian hadapan yang akan memanggil ejen

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

Kesimpulan

Jika anda telah mengikuti semua langkah yang anda ada:

  • Menggunakan Amazon Bedrock API dari Bedrock Playground dan dari Python
  • Anda telah menggunakan teks asas dan model berbilang mod
  • Anda telah mencipta ejen dari awal yang menggunakan API Shopify

Beberapa pautan untuk anda mengikuti laluan anda dalam GenerativeAI

AI generatif AWS Bengkel
Pangkalan Pengetahuan Batuan Dasar
Anthropic Console (Untuk nyahpepijat gesaan kami)
Community.aws (lebih banyak artikel yang dihasilkan oleh dan untuk komuniti)

Atas ialah kandungan terperinci Mencipta Ejen Kedai Kopi dengan Amazon Bedrock dan Shopify. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan