亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

亞馬遜Bedrock:開發者和DevOps工程師的實戰指南

从前,构建AI应用程序以前需要深厚的传统技术经验和一定程度的机器学习知识。然而,这种情况很普遍,开发者们不得不根据需求调整模型、提供GPU并手动优化性能,这需要大量的时间和金钱投入。

虽然这种方法看起来很难,但 AWS 团队打造了 Amazon Bedrock,这是一个工具,允许开发者通过 API 或 AWS 管理控制台中的内置基础模型轻松创建自己的 AI 应用程序。Amazon Bedrock 让开发者可以构建生成式 AI 应用程序,而无需担心直接管理底层堆栈。

放松一下吧!
放松动图

在这篇文章中,你将了解有关 Amazon Bedrock 的所有内容,包括使用 Amazon Bedrock 的先决条件,包括准备工作和配置,如何开始使用 Amazon Bedrock,使用 Amazon Bedrock 的最佳实践,甚至包括 Amazon Bedrock 的核心概念。除此之外,你还将看到一些如何使用 AWS 的 Bedrock API 的代码示例。因此,这篇文章将作为一个 全方位指南 ,供那些有兴趣使用 Bedrock 构建生成式 AI 应用程序的人参考和使用。

省略

求大家支持Microtica 😅🙏

在继续之前,希望你能够加入我们的社区,支持我们在 Microtica 的工作!这样我会不胜感激。⭐️

⭐️ 加入 Microtica 的 Discord 服务器 ⭐️

感谢的GIF

亚马逊Bedrock是什么?

Amazon Bedrock 是一项服务,它让 DevOps 工程师和团队可以轻松构建生成式 AI 应用程序。通过使用来自 AI 基础设施提供商的基础模型,Amazon Bedrock 为开发者提供了一个现成的 API,从而无需手动构建或调整模型。这种方法简化了构建生成式应用程序的过程,并减少了与底层架构交互的复杂性。

Amazon Bedrock 的好处

在正式使用Amazon Bedrock之前,我想先分享一下Amazon Bedrock的一些优点,并举例说明这些优点如何对你的开发工作流程产生积极的影响。

  • 更快的开发流程:与手动处理模型相比,你需要不断调整和优化模型,而使用 AWS 只需工作在一个单一的 API 上。采用这种方法,几乎不需要花太多心思在细节上。这种方法节省了大量时间,因为它比直接操作模型所需的努力少得多。

  • 例子:我的同事使用 Amazon Bedrock 的文本生成模型创建了一个 AI 助手,无需直接处理任何 ML 模型,这为他节省了时间。他发现这种方法更快捷,因为他只需通过 API 调用就能在几天之内迅速添加 AI 功能,而不是花费数月甚至数周的时间。

  • 可扩展性:Amazon Bedrock 建立在 AWS 的云基础设施之上,并使用来自多个公司的模型,包括 AI21 Labs、Anthropic、Cohere、DeepSeek、Luma、Meta、Mistral AI 和 Stability AI。这使得团队可以轻松扩展其应用程序,在高负载工作量下也能保证应用性能,无需手动干预。
  • 示例:一家使用 Amazon Bedrock 进行产品推荐的电子商务服务可以在购物季轻松扩展资源,同时保证性能不受影响,也不会出现停机。
  • 与 AWS 生态系统集成:由于 Amazon Bedrock 是一个 AWS 产品,它能够无缝地与 Amazon SageMaker、Lambda 和 S3 集成,用于构建、部署和管理应用程序的全过程。
  • 示例:一家使用 Amazon Bedrock 进行欺诈检测的银行可以创建自动化工作流。例如,AWS Lambda 可以识别可疑交易,将这些报告存储在 S3 中,并使用 SageMaker 检查模式。
  • 成本效益:Amazon Bedrock 采用灵活的计费模式,因此你只需为所使用的资源付费。你无需在昂贵的服务器和模型上花费大量资金,而可以使用 Bedrock 中任何有助于节省成本的模型,同时仍能获得强大的 AI 功能。你可以查看 Amazon Bedrock 的定价模式页面。
  • 示例:我的一位同事使用 Amazon Bedrock 自动化博客文章,仅支付了她使用的 API 请求费用,节省了监控和调整 AI 模型的费用。
开始使用 Amazon Bedrock 🚀

现在是时候开始动手干实事了。在这部分,我们将看看真正需要做的事情以及开始之前你应该准备些什么。虽然Amazon Bedrock可以处理多种任务,本文只讲如何用AWS管理控制台轻松搭建生成式AI应用。

使用 Amazon Bedrock 前的必备条件

在开始使用Amazon Bedrock之前,你需要做好准备:

  • 基本的 Python 技能。
  • 一个 AWS 账户:这是首要的:要开始,请创建一个 AWS 账户
  • AWS 管理控制台:如果你不想写代码,你需要使用控制台来与模型进行交互。或者,你可以使用:

  • AWS CLI:你可以使用 CLI 通过 API 创建 AWS CLI 配置文件。有关如何使用此选项的说明,请参阅此文档。此选项需要一些基本的 Python 技能。
  • IAM 权限:你还需要为 Bedrock 分配所需的 IAM 角色。

走吧

在这篇文章中,我们将使用 AWS 管理控制台来进行操作。您也可以通过 CLI 亲自动手。

基本的AI/ML概念

即使亚马逊Bedrock有助于简化构建AI应用程序的过程,但对AI和机器学习的基本理解很有帮助,因为在使用亚马逊Bedrock时,你可能还会遇到一些情况,比如:

  • 基础模型(FMs):这些是亚马逊Bedrock提供的预构建的AI模型,用于生成应用程序。你可能会疑惑亚马逊是否完全拥有这些模型,但实际上有些模型来自不同的公司。
  • 提示设计:这是一个创建和改进输入提示的过程,以帮助AI模型生成准确且出色的响应。良好的提示设计可以提高模型的理解,并确保其输出符合预期。
  • 模型微调:使用亚马逊Bedrock,可以针对你的需求对模型进行微调。这种方式不同于手动调整。你可以根据需要随时调整模型,以满足你的需求。

亚马逊Bedrock的核心理念

现在,我们来看看亚马逊Bedrock的几个关键概念——通过快速了解它们,你就能更好地理解Bedrock是怎么运作的,并知道怎么才能充分利用它。

理解基础AI模型

我们来看看亚马逊Bedrock使用的某些基础模型以及在使用前需要注意的一些问题。

要找到你可以使用的模型列表、它们的能力以及它们在你所在区域的可用性,请参阅此指南。在该指南中,你会看到有关模型及其生成的内容的详细信息,比如图像、文本或代码。

在使用任何模型之前,你需要注意一些事项:

  • 用例:你应该了解模型是否符合你的应用程序需求。例如,如果你正在构建一个生成回复文本的聊天机器人,你需要使用支持文本输出的模型之一。
  • 性能与成本:现在,这句话“质量比数量更重要”确实有道理。首先,一些模型工作速度快,但通常较昂贵;其次,如果你想在预算范围内使用模型,你可能需要在性能和成本之间找到一个平衡点。
  • 定制化:Amazon Bedrock可以根据需求对模型进行调整。根据你的需求,你可能需要一个可以定制以适应你的项目的模型。
Amazon Bedrock API

注:Bedrock API 是一项由亚马逊提供的技术接口。

现在,让我们一起来探索Amazon Bedrock的API和SDK的功能,并学习如何使用它们吧。首先,我们将先了解API,然后学习如何使用基础模型。

概述

除了与服务互动外,Amazon Bedrock API 还能做以下事情:

  • 使用基础模型来生成文本、创建图像和编写代码
  • 通过可调整的设置来改变模型的行为。
  • 获取模型的相关信息,比如ARN和ID。

亚马逊 Bedrock 的 APIs 使用 AWS 的标准身份验证和授权方法,这需要 IAM 角色及其权限以确保安全。

认证与权限访问

要先安装最新版本的AWS CLI,并使用你的AWS IAM凭证登录。确保你的IAM用户或角色也有相应的权限。

    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "MarketplaceBedrock",
              "Effect": "允许",
              "Action": [
                  "aws-marketplace:ViewSubscriptions",
                  "aws-marketplace:Unsubscribe",
                  "aws-marketplace:Subscribe"
              ],
              "Resource": "*"
          }
      ]
    }

切换到全屏 退出全屏

这项政策允许您使用 API 来运行模型。要继续与 Amazon Bedrock API 互动,您可以参考和阅读这些文档。

AWS SDK 集成

AWS 提供了 SDK,可以与您喜爱的编程语言(比如 Python、Java、Go、JavaScript 和 Rust 等)集成的方式。现在,我们来看一些不同语言中如何使用的示例。

  • Python ( Boto3 )
        import logging
        import json
        import boto3

        from botocore.exceptions import ClientError

        logging.basicConfig(level=logging.INFO)
        logger = logging.getLogger(__name__)

        def list_foundation_models(bedrock_client):

            try:
                response = bedrock_client.list_foundation_models()
                models = response["modelSummaries"]
                logger.info("找到了 %s 个基础模型。", len(models))
                return models

            except ClientError:
                logger.error("无法获取基础模型列表。")
                raise

        def main():

            bedrock_client = boto3.client(service_name="bedrock")

            fm_models = list_foundation_models(bedrock_client)
            for model in fm_models:
                print(f"模型: {model['modelName']}")
                print(json.dumps(model, indent=2))
                print("---------------------------\n")

            logger.info("完成了。")

        if __name__ == "__main__":
            main()

全屏 全屏退出

这是一个清晰的例子来展示如何用Python(Boto3)展示可用的Amazon Bedrock模型有哪些。如果你想了解更多关于Python SDK的工作原理,阅读这个指南(https://docs.aws.amazon.com/code-library/latest/ug/python_3_bedrock_code_examples.html)。

  • JavaScript 示例(AWS SDK for JavaScript 版本 3)
    import { fileURLToPath } from "node:url";

    import {
      BedrockClient,
      列出基础模型命令,
    } from "@aws-sdk/client-bedrock";

    const REGION = 'us-east-1'; // 区域为 'us-east-1'
    const client = new BedrockClient({ region: REGION });

    export const main = async function () {
      const command = new 列出基础模型命令({});

      const response = await client.send(command);
      const models = response.modelSummaries;

      console.log("=".repeat(42) + '');

      for (const model of models) {
        console.log("=".repeat(42));
        console.log(` 模型: ${model.modelId}`);
        console.log("-".repeat(42));
        console.log(` 名称: ${model.modelName}`);
        console.log(` 提供商: ${model.providerName}`);
        console.log(` 模型ARN: ${model.modelArn}`);
        console.log(` 输入模态: ${model.inputModalities}`);
        console.log(` 输出模态: ${model.outputModalities}`);
        console.log(` 支持的自定义项: ${model.customizationsSupported}`);
        console.log(` 支持的推理类型: ${model.inferenceTypesSupported}`);
        console.log(` 生命周期状态: ${model.modelLifecycle.status}`);
        console.log(`${"=".repeat(42)}\n`);
      }

      const active = models.filter(
        (m) => m.modelLifecycle.status === 'ACTIVE',
      ).length;
      const legacy = models.filter(
        (m) => m.modelLifecycle.status === 'LEGACY',
      ).length;

      console.log(
        `在${REGION}中有${active}个活动和${legacy}个过时的基础模型。`,
      );

      return response;
    };

    if (process.argv[1] === fileURLToPath(import.meta.url)) {
      await main();
    }

切换到全屏 退出全屏

上面的代码示例还列出了可用的Bedrock模型列表。要了解更多关于如何使用JavaScript SDK的信息,请参阅此指南:在下方链接中,您可以看到关于如何使用JavaScript SDK的示例代码:查看示例代码

这里有一些代码示例展示了如何将Bedrock SDK集成到您喜爱的编程语言中,您可以在[这个指南]中找到它们。

了解 Amazon Bedrock API 的响应

现在,让我们来看看Amazon Bedrock提供的主要模型预测API功能:

  • InvokeModel – 发送一个请求并得到回应。
  • Converse – 支持连续对话,通过加入之前的聊天内容。

此外,Amazon Bedrock 支持 InvokeModelWithResponseStreamConverseStream 流式响应。

要看看当你用 InvokeModelConverse 提交一个单独的提示时会收到什么样的回复,可以参考下面的指南。请注意,InvokeModelConverse 是专门术语。

  • Converse API:本指南展示了如何使用Amazon Bedrock的Converse API。它还介绍了如何使用Amazon Bedrock运行时端点来发送请求,以及您使用ConverseConverseStream时收到的响应示例。
  • InvokeModel:本指南解释了如何使用Amazon Bedrock中的InvokeModel操作。它还涵盖了如何向基础模型发送请求并设置参数以获得最佳结果,以及如何管理和处理响应。
使用亚马逊Bedrock构建对话式AI应用

现在,让我们使用AWS管理控制台开始在Amazon Bedrock构建我们的第一个应用程序。对于这个项目,我们将创建一个仅处理文本的聊天机器人。

第一步:在 AWS 管理控制台中开始使用 Amazon Bedrock 服务

首先,从主 AWS 登录 URL 登录 AWS 管理控制台。登录后,您会进入仪表板。在仪表板中,找到并选择 AmazonBedrock 选项。也可以在 AWS 搜索栏中搜索 'Bedrock'。

在控制台搜索 AWS Bedrock

在选择了亚马逊Bedrock之后,前往模型访问标签页,并确保通过请求权限来访问这些亚马逊Titan文本生成模型。

请求访问权限

选择你想要使用的模型之后,点击下一步。之后,你会被引导到一个标签页,在那里你需要提交一个访问请求。

使用亚马逊泰坦构建聊天机器人,第二步是构建聊天机器人

转到侧边导航中的Playgrounds部分,然后选择Chat / Text区域。在实验区输入一个提示。点击运行按钮以从Titan的文本模型中生成一个回答。

AWS提示

第 3 步:部署聊天机器人到 AWS Lambda

好了,让我们使用AWS Lambda作为无服务器应用来上线聊天机器人!首先,我们得创建一个AWS Lambda函数。以下是创建AWS Lambda函数的一些步骤:

去 AWS Lambda,然后创建函数。

AWS Lambda 页面

  • 选择 零初始化作者 选项卡并在该选项卡中进行部署配置。请注意应将运行时设置为 Python 3.10

Scratch选集作者
点击图片查看大图

  • 创建一个具有完全访问权限的角色,该角色具有Bedrock和CloudWatch的相关权限

创建角色,点击这里

  • 创建函数啦!🚀

在Lambda函数里加点代码,然后点击部署按钮。

    import json
    import boto3

    # 使用Bedrock运行时调用模型
    bedrock = boto3.client('bedrock-runtime')

    # Lambda函数处理程序
    def lambda_handler(event, context):
        user_input = event['queryStringParameters']['message']

        # 调用模型并传入用户输入
        response = bedrock.invoke_model(
            body=json.dumps({
                "prompt": user_input,
                "maxTokens": 200
            }),
            modelId="amazon.titan-text-lite-v1"
        )

        # 解析模型返回的数据
        model_output = json.loads(response['body'].read().decode('utf-8'))

        # 返回HTTP 200状态码和JSON格式的响应
        return {
            "statusCode": 200,
            "headers": {"Content-Type": "application/json"},
            "body": json.dumps({"response": model_output["completions"][0]["data"]["text"]})
        }

点击全屏查看,然后退出全屏

步骤 4:通过 API Gateway 部署 API

  • 功能概览 下,点击 添加触发器 按钮并选择 API网关 选项。
  • 创建一个HTTP API并为您的API端点配置安全方法。
  • 部署API,搞定啦! 🤘

看看这是关于部署HTTP API的图片

  • 记录下你的 Invoke URL(调用URL) 以便与聊天机器人互动!🚀

URL调用

最终,你可以与你的API端点互动,并用它来开发。

使用亚马逊Bedrock和Anthropic Bedrock来构建代码生成工具

现在,让我们构建一个更有趣和技术性的工具。在本节中,我们将使用 Amazon Bedrock 和 Anthropic 的 Claude 2.0 模型来构建一个代码生成工具,该模型以生成代码作为其响应。别担心,我们还是会用到 AWS 管理控制台,不过,这个用例需要用到一些基本的 Python 知识。

步骤 1:进入 Bedrock 并选择使用 Anthropic Claude 2.0 模型。

就像我们在聊天机器人示例中所做的一样,通过AWS管理控制台访问Amazon Bedrock。转到 Playground 部分下的对话/文本部分。

选择模型 下拉框中,选择 Anthropic Claude 2.0 模型。选择后,你可以在聊天中输入关于代码的提示。

在聊天里从下拉菜单中选个模型吧。

这个模型超级棒,它不仅能生成代码,还能解释代码的作用和如何运作。它超级快且有效,使用起来非常棒。

如何在 AWS Lambda 上部署代码生成示例

同样,正如我们在第一个用例中所做的一样,我们将使用AWS Lambda来生成代码。

  • 创建一个新的Lambda实例

在 Lambda 函数中加入一些 Python 代码(运行时环境:3.9):

    import json
    import boto3

    bedrock = boto3.client('bedrock-runtime')

    def lambda_handler(event, context):

      prompt = event['queryStringParameters']['prompt']

      response = bedrock.invoke_model(
        body=json.dumps({
          "prompt": f"{prompt}",
          "max_length": 300,
          "temperature": 0.7,
          "k": 0,
          "p": 0.75,
          "frequency_penalty": 0,
          "presence_penalty": 0
        }),
        modelId="arn:aws:bedrock::account:model/claude-v2-20221215"
      )

      output = json.loads(response['body'].read().decode('utf-8'))

      return {
        "statusCode": 200,
        "headers": {"Content-Type": "application/json"},
        "body": json.dumps({"code": output[0]["generated_text"]})
      }

    # 这是一个使用Bedrock Runtime服务的Lambda函数,用于生成文本

进入或退出全屏

第 3 步:部署一个用于代码生成的 API

  • API 网关,然后选择HTTP API 选项。
  • 将其与代码生成器连起来。
  • 部署 API 并获取互动的调用 URL
与 Amazon Bedrock 合作的最佳做法

在使用Amazon Bedrock的过程中,需要特别注意安全、成本控制和性能。通过遵循这些最佳实践,您可以确保您的AI应用程序既安全又高效且成本可控。

1. 数据安全与隐私.

最好是让您的数据保持私密,因为AI模型通常涉及处理敏感的用户数据,因此安全性非常重要。在使用AWS Bedrock时,这里有一些实践可供参考:

  • 使用IAM角色和策略: 按照最小权限原则限制访问Bedrock API和数据存储。这意味着只赋予用户必要的权限,不多给一点。
  • 加密数据: 使用AWS密钥管理服务(KMS) 来保护存储中的敏感数据以及数据在传输中的安全。
  • 监控和审计访问: 启用CloudWatchAWS Config 来跟踪访问AI模型、数据和日志的人以及他们是如何访问的。
  • 屏蔽数据: 在将数据发送到Bedrock之前,移除任何个人身份信息(如姓名、地址等)以降低风险。

2. 成本优化:控制 Bedrock 使用量和费用 💰

AWS Bedrock 使用的是 按用量收费 的计费模式,因此,合理控制成本非常重要。您将根据使用量来计费。以下是如何用 AWS Bedrock 来节省成本的方法:

  • 选择正确的基础模型: 不同的模型费用不同;选择最适合您需求和预算的那个。
  • 优化 API 调用: 通过缓存和批处理减少不必要的 API 请求。
  • 监控使用情况: 使用 AWS 成本管理器AWS 预算 跟踪您的支出,并设置任何意外成本增加的警报。
  • 使用自动扩展: 在使用 Bedrock 和 AWS Lambda 时,调整请求的数量来减少不必要的 API 调用。

3. 偏见与公平

AI模型可能会根据训练数据中的偏见而产生偏见,这可能会引起问题,我们需要采取措施来解决这个问题。为了确保公平性:

  • 确保训练数据的多样性和代表性,
  • 定期检查模型输出,识别并纠正任何偏见,
  • 使用公平性指标评估和改进模型。

  • 检查模型的回应: 用各种提示来测试模型的输出,找出任何偏见或错误。
  • 使用多样化的数据微调模型: 在调整模型时,确保数据涵盖各种群体和视角。

4. 性能优化

为了加快响应速度和提升整体性能,请参考以下实践:

  • 调整 API 参数设置: 调整设置如 temperaturemaxTokens 以获得最佳效果。
  • 使用 GPU 优化的基础设施: 如果流量很大,请使用 AWS 应用程序负载均衡器 更高效地分配请求。
  • 降低延迟: 使用 AWS Global Accelerator 或 AWS 边缘服务将应用程序更靠近用户。
结论部分

AWS Bedrock使集成AI变得更加容易,通过提供来自Amazon及其他供应商基础设施的可扩展基础模型,而无需自己训练模型和维护基础设施。要获得最佳效果,开发人员可以更加专注于安全性、成本效益和性能优化,而无需自己动手。

继续探索 AWS Bedrock 的话,开发人员应该尝试各种不同的模型,根据需要调整输出,并与其他 AWS 服务进行整合。参考或查阅 Amazon Bedrock 的指南、博客和其他资源可以帮助您充分利用 Bedrock 的功能,并激发更多 AI 驱动应用的新想法。

在你走之前… 😄

感谢您花时间了解如何使用AWS Bedrock构建AI应用程序。如果您觉得这篇文章有用,请考虑通过注册一个账号并加入我们的社区 一起加入 来支持Microtica。您的支持对我们非常重要,可以帮助我们不断改进并为开发者社区提供更多有价值的资源!

免费加入 Microtica!🚀

感谢 GIF 小黄人

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消