亚马逊AWS官方博客

Amazon Bedrock 现已正式发布 — 使用基础模型构建和扩展生成式人工智能应用程序

今年 4 月,我们宣布将 Amazon Bedrock 纳入使用 AWS 生成式人工智能进行构建的新工具集。Amazon Bedrock 是一项完全托管的服务,提供各种来自领先 AI 公司(包括 AI21 LabsAnthropicCohereStability AIAmazon)的高性能基础模型(FM),以及用于构建生成式人工智能应用程序的广泛功能,可简化开发,同时维护隐私和安全。

今天,我很高兴地宣布,Amazon Bedrock 现已正式发布! 我还很高兴地告诉大家,Meta 的 Llama 2 13B 和 70B 参数模型即将在 Amazon Bedrock 上提供。

Amazon Bedrock

Amazon Bedrock 的全面功能可帮助您试验各种顶级 FM,采用微调和检索增强生成(RAG)等技术,使用您的数据私下对其进行自定义,以及创建执行复杂业务任务的托管代理,所有这些都无需编写任何代码。请查看我之前的文章,详细了解适用于 Amazon Bedrock 的代理以及如何将 FM 连接到公司的数据来源

请注意,某些功能(例如适用于 Amazon Bedrock 的代理,包括知识库)仍以预览版形式提供。在本博文末尾,我将详细介绍哪些功能继续以预览版形式提供。

由于 Amazon Bedrock 是无服务器的,因此您无需管理任何基础设施,并且可以使用您已经熟悉的 AWS 服务将生成式人工智能功能安全地集成和部署到您的应用程序中。

Amazon Bedrock 已与 Amazon CloudWatchAWS CloudTrail 集成,可支持您的监控和治理需求。您可以使用 CloudWatch 来跟踪使用情况指标并构建用于审计目的的自定义控制面板。借助 CloudTrail,您可以在将其他系统集成到生成式人工智能应用程序时监控 API 活动并解决问题。Amazon Bedrock 还允许您构建符合 GDPR 要求的应用程序,并且可以使用 Amazon Bedrock 来运行受美国《健康保险流通与责任法案》(HIPAA)监管的敏感工作负载。

开始使用 Amazon Bedrock
您可以通过 AWS 管理控制台AWS SDK 和开源框架(例如 LangChain)来访问 Amazon Bedrock 中可用的 FM。

Amazon Bedrock 控制台中,您可以浏览 FM,并探索和加载每个模型的示例用例和提示。首先,您需要启用对模型的访问权限。在控制台中,选择左侧导航窗格中的模型访问权限并启用您要访问的模型。启用模型访问权限后,您可以尝试不同的模型和推理配置设置,以找到适合您的用例的模型。

例如,以下是使用 Cohere 的 Command 模型提取合约实体用例示例:

Amazon Bedrock

该示例显示了带有示例响应的提示、示例的推理配置参数设置以及运行该示例的 API 请求。如果您选择在平台中打开,则可以在交互式控制台体验中进一步探索模型和用例。

Amazon Bedrock 提供聊天、文本和图像模型平台。在聊天平台中,您可以使用对话聊天界面试验各种 FM。以下示例使用 Anthropic 的 Claude 模型:

Amazon Bedrock

在评估不同的模型时,应尝试各种提示工程技术和推理配置参数。提示工程是一项令人兴奋的新技能,专注于如何更好地理解 FM 并将其应用于您的任务和用例。有效的提示工程是指精心设计完美的查询,以充分利用 FM 并获得正确而精确的响应。通常,提示应简单、直接,并避免歧义。您还可以在提示中提供示例,或者鼓励模型通过更复杂的任务进行推理。

推理配置参数会影响模型生成的响应。您可以通过 TemperatureTop PTop K 等参数控制随机性和多样性,并通过 Maximum LengthMax Tokens 控制模型响应的长度。请注意,每个模型都会公开一组不同但往往重叠的推理参数。这些参数要么在模型之间采用相同的命名,要么足够相似,便于在您尝试不同模型时进行推理。

我们在 AWS 与 DeepLearning.AI 合作开发的具有大型语言模型的生成式人工智能点播课程的第一周中更详细地讨论了有效的即时工程技术和推理配置参数。您还可以查看 Amazon Bedrock 文档和模型提供商的相应文档,以获取更多提示。

接下来,让我们看看如何通过 API 与 Amazon Bedrock 进行交互。

使用 Amazon Bedrock API
使用 Amazon Bedrock 非常简单,只需为您的用例选择 FM,然后进行几次 API 调用即可。在以下代码示例中,我将使用适用于 Python 的 Amazon SDK(Boto3)与 Amazon Bedrock 进行交互。

列出可用的基础模型
首先,让我们设置 boto3 客户端,然后使用 list_foundation_models() 来查看最新的可用 FM 列表:

import boto3
import json

bedrock = boto3.client(
    service_name='bedrock',
    region='us-east-1'
)

bedrock.list_foundation_models()

使用 Amazon Bedrock 的 InvokeModel API 运行推理
接下来,让我们使用 Amazon Bedrock 的 InvokeModel API 和 boto3 运行时系统客户端执行推理请求。运行时系统客户端管理数据面板 API,包括 InvokeModel API。

Amazon Bedrock

InvokeModel API 需要以下参数:

{
    "modelId": <MODEL_ID>,
    "contentType": "application/json",
    "accept": "application/json",
    "body": <BODY>
}

modelId 参数标识您要使用的 FM。请求 body 是一个 JSON 字符串,其中包含任务提示以及任何推理配置参数。请注意,提示格式将因所选模型提供商和 FM 而异。contentTypeaccept 参数定义请求正文和响应中数据的 MIME 类型,默认为 application/json。有关最新型号、InvokeModel API 参数和提示格式的更多信息,请参阅 Amazon Bedrock 文档

示例:使用 AI21 Lab 的 Jurassic-2 模型生成文本
以下是使用 AI21 Lab 的 Jurassic-2 Ultra 模型生成文本的示例。我会让模型给我讲一个敲门笑话 — 我的 Hello World 版本。

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime',
    region='us-east-1'
)

modelId = 'ai21.j2-ultra-v1' 
accept = 'application/json'
contentType = 'application/json'

body = json.dumps(
    {"prompt": "Knock, knock!",
     "maxTokens": 200,
     "temperature": 0.7,
     "topP": 1,
    }
)

response = bedrock_runtime.invoke_model(
    body=body,
	modelId=modelId,
	accept=accept,
	contentType=contentType
)

response_body = json.loads(response.get('body').read())

响应如下:

outputText = response_body.get('completions')[0].get('data').get('text')
print(outputText)
Who's there? 
Boo! 
Boo who? 
Don't cry, it's just a joke!

您还可以使用 InvokeModel API 与嵌入模型交互。

示例:使用 Amazon 的 Titan Embeddings 模型创建文本嵌入
文本嵌入模型将文本输入(例如单词、短语或可能的大型文本单元)转换为数字表示形式(称为嵌入向量)。嵌入向量捕获高维向量空间中文本的语义,非常适用于个性化或搜索等应用。在以下示例中,我使用 Amazon Titan Embeddings 模型来创建嵌入向量。

prompt = "Knock-knock jokes are hilarious."

body = json.dumps({
    "inputText": prompt,
})

model_id = 'amazon.titan-embed-g1-text-02'
accept = 'application/json' 
content_type = 'application/json'

response = bedrock_runtime.invoke_model(
    body=body,
    modelId=model_id,
    accept=accept,
    contentType=content_type
)

response_body = json.loads(response['body'].read())
embedding = response_body.get('embedding')

The embedding vector (shortened) will look similar to this:

[0.82421875, -0.6953125, -0.115722656, 0.87890625, 0.05883789, -0.020385742, 0.32421875, -0.00078201294, -0.40234375, 0.44140625, ...]

请注意,Amazon Titan Embeddings 现已上市。用于文本生成的 Amazon Titan Text 系列模型继续以预览版的形式提供。

使用 Amazon Bedrock 的 InvokeModelWithResponseStream API 运行推理
InvokeModel API 请求是同步的,并会等待模型生成整个输出。对于支持流式响应的模型,Bedrock 还提供了 InvokeModelWithResponseStream API,可让您调用指定的模型以使用提供的输入运行推理,但在模型生成输出时流式传输响应。

Amazon Bedrock

流式传输响应对于响应式聊天界面特别有用,可以让用户保持参与交互式应用程序。以下是使用 Amazon Bedrock 的 InvokeModelWithResponseStream API 的 Python 代码示例:

response = bedrock_runtime.invoke_model_with_response_stream(
    modelId=modelId,
    body=body)

stream = response.get('body')
if stream:
    for event in stream:
        chunk=event.get('chunk')
        if chunk:
            print(json.loads(chunk.get('bytes').decode))

数据隐私和网络安全
借助 Amazon Bedrock,您可以控制自己的数据,并且您的所有输入和自定义内容都是 AWS 账户私有的。您的数据(例如提示、完成情况和微调模型)不会用于改进服务。此外,绝不会与第三方模型提供商共享数据。

您的数据将保留在处理 API 调用的区域。所有数据在传输过程中至少采用 TLS 1.2 加密进行加密。静态数据通过 AES-256 使用 AWS KMS 托管数据加密密钥进行加密。您也可以使用自己的密钥(客户管理的密钥)来加密数据。

您可以将自己的 AWS 账户和虚拟私有云(VPC)配置为使用 Amazon VPC 端点(在 AWS PrivateLink 上构建)通过 AWS 网络安全地连接到 Amazon Bedrock。这就可以在 VPC 中运行的应用程序与 Amazon Bedrock 之间建立安全、私密的连接。

治理和监控
Amazon Bedrock 与 IAM 集成,可帮助您管理针对 Amazon Bedrock 的权限。此类权限包括访问 Amazon Bedrock 中的特定模型、平台或功能。所有 AWS 托管服务 API 活动,包括 Amazon Bedrock 活动,都将通过您的账户记录到 CloudTrail。

Amazon Bedrock 使用 AWS/Bedrock 命名空间向 CloudWatch 发送数据点,以跟踪诸如 InputTokenCountOutputTokenCountInitationLatencyInvocations(数量)等常见指标。您可以在搜索指标时通过指定模型 ID 维度来筛选结果并获取特定模型的统计信息。 当您开始使用 Amazon Bedrock 构建生成式人工智能应用程序时,这种近乎实时的见解可帮助您跟踪使用情况和成本(输入和输出令牌计数)并解决性能问题(调用延迟和调用数量)。

计费和定价模型
使用 Amazon Bedrock 时,请记住以下几点关于计费和定价模式的注意事项:

计费 — 文本生成模型按已处理的输入令牌和生成的输出令牌计费。文本嵌入模型按已处理的输入令牌计费。图像生成模型按生成的图像计费。

定价模式 — Amazon Bedrock 提供两种定价模式,即按需和预配置吞吐量。按需定价允许您在即用即付的基础上使用 FM,而无需做出任何基于时间的期限承诺。预配置吞吐量主要是为需要保证吞吐量以换取定期承诺的大型、一致的推理工作负载而设计的。在这种模式下,您指定特定 FM 的模型单元数量,以满足应用程序的性能要求(由每分钟处理的输入和输出令牌的最大数量定义)。有关详细定价信息,请参阅 Amazon Bedrock 定价

现已推出
Amazon Bedrock 现已在如下 AWS 区域推出:美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)。要了解更多信息,请访问 Amazon Bedrock、查看 Amazon Bedrock 文档在 community.aws 上探索生成式人工智能空间,并参加 Amazon Bedrock 研讨会进行实践。请将反馈发送至 AWS re:Post for Amazon Bedrock 或通过您通常使用的 AWS Support 联系方式发送反馈。

(提供预览版)Amazon Titan Text 系列文本生成模型、Stability AI 的 Stable Diffusion XL 图像生成模型以及包括知识库在内的适用于 Amazon Bedrock 的代理继续以预览版形式提供。如果您想访问,请通过通常使用的 AWS 联系方式联系我们。

(即将推出)MetaLlama 2 13B 和 70B 参数模型将很快通过 Amazon Bedrock 的完全托管 API 提供,用于推断和微调。

立即开始使用 Amazon Bedrock 构建生成式人工智能应用程序!

— Antje


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。