搜尋
首頁後端開發Python教學使用 Amazon Bedrock 和 Shopify 建立咖啡店代理

今天我將解釋如何安全可靠地使用 Bedrock 工作,同時了解一些關於咖啡的知識。

您將學習如何使用 Python 使用 Amazon Bedrock API 的文字和多模式模型來為您的咖啡館產生名稱、徽標和選單,並建立連接到 Shopify API 來接受訂單的代理。

Shopify(在我看來)是現有的最好的電子商務平台。

就像 AWS 一樣,Shopify 擁有適用於所有內容的 API 和開發人員導向的平台

最後,您將使用 Streamlit 創建一個前端,以提供獨特的用戶體驗並為您的代理賦予生命。

?指數

  • 呼叫基岩 API
  • 建立與 Shopify 互動的 Amazon Bedrock 代理程式

?呼叫 Amazon Bedrock API 為您的咖啡店產生名稱、徽標和選單

開設自助餐廳或為任何企業提出創意的時刻都是依靠生成式人工智慧 (GenAI) 並充分利用它的絕佳機會。

透過 Amazon Bedrock 您可以使用它,但是...該服務是如何使用的?

AWS 中的每項服務都有一個 API,Amazon Bedrock 也不例外。下面我將透過範例解釋如何使用 Amazon Bedrock API 為行動自助餐廳產生名稱和菜單。

我還向您展示如何使用能夠分析影像的多模態模型。

對 Python 腳本進行程式設計以在本地運行或在 Lambda 函數中呼叫 Amazon Bedrock 的說明:

首先,您必須在此處啟用對基岩說明中模型的存取

要求:

  • AWS上的一個帳戶,如果您沒有帳戶,可以在這裡開一個帳戶
  • 此處的 AWS CLI 說明
  • Python 3.11 或更高版本

第 1 步)建立虛擬 Python 環境 此處說明

在此儲存庫的 bedrock_examples 資料夾中,您將找到下面用於呼叫基礎模型的不同範例。

在提示資料夾中,您將找到範例提示,您將能夠使用它來產生名稱、選單和提示以傳遞給圖像生成模型,您可以在Amazon Bedrock 遊樂場中調用該模型,也可以透過從Python 呼叫API。

步驟 2) 安裝要求

pip install -r requirements.txt

步驟 3) 配置 Boto3 有關 boto3 的更多資訊

在這裡,我配置 AWS 客戶端,告訴它使用我電腦上安裝的 genaiday 配置文件,並調用 bedrock-runtime 客戶端,這將允許我調用基礎模型。

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

步驟 4) 範例:呼叫文字模型

此函數呼叫方法invoke_model,我傳遞使用者指示的提示並回傳回應

最重要的部分是發送的訊息:

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')

範例:

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }

步驟 5) 範例:呼叫多模式模型。

這裡的過程類似,只是你需要添加發送文件的mime類型,為此有一個函數可以根據文件名獲取mimetype

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

然後要呼叫模型,訊息必須如下:

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

模型的呼叫如下圖所示:

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]

範例:

 "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
            }]
        }
    ]

?建立與 Shopify 互動的 Amazon Bedrock 代理

建立 Amazon Bedrock 代理:

確保您擁有想要使用的基岩模型並啟用了此處的訪問說明,在本例中我們將使用 Claude 3 Haiku 和 Sonnet

然後在AWS控制台中建立Bedrock代理:

1) 前往基岩服務
2) 代理
3)建立代理

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

4)為代理程式命名,在我們的例子中為「Pause-Coffee-Agent
5) 描述是可選的。
6) 最重要的步驟之一是選擇使我們的代理人正常工作的基礎模型。如果您想了解如何選擇適合您的用例的最佳模型,請參閱有關 Amazon Bedrock 模型的指南。評價.
7) 下一步是指導您模型的提示,在這裡您必須盡可能精確並發揮您作為提示工程師的技能,如果您不知道從哪裡開始,我建議您訪問本指南將為您正在使用的模型找到最佳指南,另一個非常有用的資源是anthropic 控制台。

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

這是我用於範例代理的提示,我建議用英語編寫提示,因為模型是用英語訓練的,有時用訓練源語言編寫有助於避免錯誤行為。

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) 附加配置,您必須允許代理捕獲用戶的輸入,因為他們肯定會缺乏處理訂單的信息,例如:他們需要詢問客戶想要的產品、名稱,除其他外。

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

9) 操作群組:操作群組定義代理可以幫助使用者的操作。例如,您可以定義一個表示 TakeOrder 的操作組,該操作組可以具有以下操作

  • 列出產品
  • 處理訂單

要建立每個操作所需的操作組:

  • 名字
  • 參數

要執行的操作群組通常會呼叫 Lambda 函數,從 Bedrock 中您可以:

  • 從 Bedrock 控制台建立 lambda 函數(選擇「快速建立 lambda 函數」)

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

  • 選擇此處已建立的 lambda 函數,其中包含事件的說明以及每個操作組的預期回應

如果您選擇從Bedrock 控制台建立lambda 函數,則會在python 中建立一個函數,其中包含基本原始碼,然後您必須對其進行修改,在此儲存庫中的Agents/action_group/lambda.py文件中,您可以修改了範例程式碼以使其與代理程式一起使用。

這些變數將為您提供必要的資訊:

  • function:是呼叫的操作的名稱,在範例中它可以是:get_products(列出產品)和 place_order(在 Shopify 中產生訂單)
  • parameters:是參數的字典。

在下面的範例中,您可以看到有兩個操作:

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

Crear agente Paso 6

  • 不需要任何參數的get_products
  • place_order 有 3 個參數:
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

例如,當您在 lambda 函數中呼叫 get_products 函數時,它的處理方式如下:

定義了一個 get_products 函數,它將負責查詢 Shopify API(出於教育目的,我們傳回所有產品)

如果您希望在 Shopify 中使用此功能,您必須將以下變數替換為您商店的變數:

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')

然後在 lambda 函數的處理程序中,驗證被呼叫函數的名稱,並以 action_group 所需的格式回傳回應:

{
                "role": "user",
                "content": [{
                    "type": "text",
                    "text": prompt
                }]
            }

上面的程式碼片段是此處找到的 lambda 函數的一部分

10) 按“儲存並退出”,代理就可以進行測試了。

代理人在行動

接下來是測試代理並驗證它是否有效,從Bedrock 中您可以測試代理,如果在對話過程中您單擊“查看跟踪或顯示跟踪”,它將向您顯示推理過程,這就是您應該特別注意並在提示中進行您認為必要的調整,或者如果您發現您選擇的模型無法按您的預期工作,請尋找其他模型。

一旦您對代理感到滿意,您就可以創建一個別名,別名是一個ID,通過它您將能夠從Amazon Bedrock API 調用代理,當您創建別名時,它將創建一個版本自動代理,或者您可以指向已經存在的版本,具有不同的別名和不同的版本將幫助您控制代理部署過程,例如:

  • 您可以有一個別名“development”,它將進入最新的代理測試
  • 一個「preprod」別名,它將是預生產模式下的代理
  • 別名“prod”,這是即時代理。

然後剩下的就是記下與您想要上線的版本相對應的生產別名。

如何呼叫代理

為此,我在agents/frontend資料夾中留下了一個名為agent.py的檔案。

此開發使用 Streamlit,一個強大的框架來製作範例機器學習應用程式

呼叫代理程式的程式碼部分如下:

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

我們使用 boto3 來使用 AWS API,我們呼叫 bedrock-agent-runtime 用戶端來呼叫代理程式。

我們需要傳遞給它的參數是:

  • 代理 ID
  • 代理別名
  • inputText(提示)
  • sessionId(會話,用於識別對話)

在此範例中,我在這裡定義變數:

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

設施:

首先,您必須在此處啟用對基岩說明中模型的存取

要求:

  • 此處的 AWS CLI 說明
  • Python 3.11 或更高版本

我建議建立一個虛擬 Python 環境 說明請參考此處

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')

這將開始在連接埠 8501 上執行 Streamlit,您可以存取以下 URL:http://localhost:8501/ 查看將呼叫代理程式的前端

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

結論

如果您已執行所有步驟:

  • 從 Bedrock Playground 和 Python 使用 Amazon Bedrock API
  • 您已經呼叫了基礎文字和多模式模型
  • 您已經從頭開始建立了一個使用 Shopify API 的代理程式

一些連結供您在 GenerativeAI 中遵循自己的道路

AWS 生成式人工智慧研討會
基岩知識庫
Anthropic Console(用於調試我們的提示)
Community.aws(更多由社群產生並為社群產生的文章)

以上是使用 Amazon Bedrock 和 Shopify 建立咖啡店代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs. C:了解關鍵差異Python vs. C:了解關鍵差異Apr 21, 2025 am 12:18 AM

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

Python vs.C:您的項目選擇哪種語言?Python vs.C:您的項目選擇哪種語言?Apr 21, 2025 am 12:17 AM

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

達到python目標:每天2小時的力量達到python目標:每天2小時的力量Apr 20, 2025 am 12:21 AM

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

最大化2小時:有效的Python學習策略最大化2小時:有效的Python學習策略Apr 20, 2025 am 12:20 AM

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

在Python和C之間進行選擇:適合您的語言在Python和C之間進行選擇:適合您的語言Apr 20, 2025 am 12:20 AM

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python與C:編程語言的比較分析Python與C:編程語言的比較分析Apr 20, 2025 am 12:14 AM

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天2小時:Python學習的潛力每天2小時:Python學習的潛力Apr 20, 2025 am 12:14 AM

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python與C:學習曲線和易用性Python與C:學習曲線和易用性Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用