搜索
首页后端开发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查找文本文件的ZIPF分布如何使用Python查找文本文件的ZIPF分布Mar 05, 2025 am 09:58 AM

本教程演示如何使用Python处理Zipf定律这一统计概念,并展示Python在处理该定律时读取和排序大型文本文件的效率。 您可能想知道Zipf分布这个术语是什么意思。要理解这个术语,我们首先需要定义Zipf定律。别担心,我会尽量简化说明。 Zipf定律 Zipf定律简单来说就是:在一个大型自然语言语料库中,最频繁出现的词的出现频率大约是第二频繁词的两倍,是第三频繁词的三倍,是第四频繁词的四倍,以此类推。 让我们来看一个例子。如果您查看美国英语的Brown语料库,您会注意到最频繁出现的词是“th

如何在Python中下载文件如何在Python中下载文件Mar 01, 2025 am 10:03 AM

Python 提供多种从互联网下载文件的方法,可以使用 urllib 包或 requests 库通过 HTTP 进行下载。本教程将介绍如何使用这些库通过 Python 从 URL 下载文件。 requests 库 requests 是 Python 中最流行的库之一。它允许发送 HTTP/1.1 请求,无需手动将查询字符串添加到 URL 或对 POST 数据进行表单编码。 requests 库可以执行许多功能,包括: 添加表单数据 添加多部分文件 访问 Python 的响应数据 发出请求 首

我如何使用美丽的汤来解析HTML?我如何使用美丽的汤来解析HTML?Mar 10, 2025 pm 06:54 PM

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

python中的图像过滤python中的图像过滤Mar 03, 2025 am 09:44 AM

处理嘈杂的图像是一个常见的问题,尤其是手机或低分辨率摄像头照片。 本教程使用OpenCV探索Python中的图像过滤技术来解决此问题。 图像过滤:功能强大的工具 图像过滤器

如何使用Python使用PDF文档如何使用Python使用PDF文档Mar 02, 2025 am 09:54 AM

PDF 文件因其跨平台兼容性而广受欢迎,内容和布局在不同操作系统、阅读设备和软件上保持一致。然而,与 Python 处理纯文本文件不同,PDF 文件是二进制文件,结构更复杂,包含字体、颜色和图像等元素。 幸运的是,借助 Python 的外部模块,处理 PDF 文件并非难事。本文将使用 PyPDF2 模块演示如何打开 PDF 文件、打印页面和提取文本。关于 PDF 文件的创建和编辑,请参考我的另一篇教程。 准备工作 核心在于使用外部模块 PyPDF2。首先,使用 pip 安装它: pip 是 P

如何在django应用程序中使用redis缓存如何在django应用程序中使用redis缓存Mar 02, 2025 am 10:10 AM

本教程演示了如何利用Redis缓存以提高Python应用程序的性能,特别是在Django框架内。 我们将介绍REDIS安装,Django配置和性能比较,以突出显示BENE

引入自然语言工具包(NLTK)引入自然语言工具包(NLTK)Mar 01, 2025 am 10:05 AM

自然语言处理(NLP)是人类语言的自动或半自动处理。 NLP与语言学密切相关,并与认知科学,心理学,生理学和数学的研究有联系。在计算机科学

如何使用TensorFlow或Pytorch进行深度学习?如何使用TensorFlow或Pytorch进行深度学习?Mar 10, 2025 pm 06:52 PM

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。