View a markdown version of this page

使用 Anthropic Messages API 进行推断 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Anthropic Messages API 进行推断

Anthropic Messages API 使用 Anthropic 请求和响应格式提供对 Claude 模型的原生访问。您可以在bedrock-runtime和bedrock-mantle终端节点上使用消息 API。对于新应用程序,我们推荐使用bedrock-runtime终端节点。

Endpoint 基本网址 使用案例
bedrock-runtime https://bedrock-runtime.{region}.amazonaws.com/anthropic 推荐用于新应用程序。使用 AWS SDK 集成、IAM 身份验证和调用日志。
bedrock-mantle https://bedrock-mantle.{region}.api.aws/anthropic/v1/messages 支持亚马逊 Bedrock API 密钥身份验证和工作空间 () Anthropic-compatible.

支持的区域:

消息 API 可在提供 Claude 模型的所有地区的bedrock-runtime终端节点上使用。有关详细信息,请参阅按型号划分的区域可用性。在bedrock-mantle终端节点上,它适用于所有支持的区域bedrock-mantle(参见支持的区域和终端节点)。

先决条件

在使用消息 API 之前,请确保您具备以下条件:

  • 模型访问权限 — 在亚马逊 Bedrock 控制台中请求访问 Claude 模型。请参阅申请访问模型。

  • 身份验证 -取决于端点:

    • bedrock-runtime— 通过 AWS 软件开发工具包(boto3 等)、亚马逊 Bedrock API 密钥(参见API 密钥)或通过 aws-bedrock-token-generator 库的凭证生成的短期 Bedrock 持有者代币使用 S AWS igV4 证书。 AWS https://pypi.org/project/aws-bedrock-token-generator/

    • bedrock-mantle— 使用亚马逊 Bedrock API 密钥(参见API 密钥)或 AWS SigV4 证书。

  • Anthropic 版本标头 — 所有请求都需要 API 版本:

    • bedrock-runtime: 调用时"anthropic_version": "bedrock-2023-05-31"在请求正文中设置InvokeModel。使用时,AnthropicSDK 会自动添加所需的标头base_url=https://bedrock-runtime.{region}.amazonaws.com/anthropic。

    • bedrock-mantle:设置anthropic-version: 2023-06-01为 HTTP 标头。

基本请求

要向 Claude 模型发送基本信息,请选择首选方法的选项卡,然后按照以下步骤操作:

bedrock-runtime (Python, Anthropic SDK)

使用由 aw Anthropic s-bedrock-token-generator 生成的短期 Bedrock 持有者代币对应bedrock-runtime终端节点的/anthropic路由 SDK:

from anthropic import Anthropic from aws_bedrock_token_generator import provide_token token = provide_token(region="us-east-1") client = Anthropic( base_url="https://bedrock-runtime.us-east-1.amazonaws.com/anthropic", api_key=token, ) response = client.messages.create( model="global.anthropic.claude-sonnet-5", max_tokens=1024, messages=[ {"role": "user", "content": "Explain quantum computing in one sentence."} ] ) print(response.content[0].text)
bedrock-runtime (Python, boto3)
import boto3 import json client = boto3.client("bedrock-runtime", region_name="us-east-1") response = client.invoke_model( modelId="anthropic.claude-sonnet-5", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Explain quantum computing in one sentence."} ] }) ) result = json.loads(response["body"].read()) print(result["content"][0]["text"])
bedrock-runtime (AWS CLI)

使用 C AWS LI 调用模型:

aws bedrock-runtime invoke-model \ --model-id anthropic.claude-sonnet-5 \ --body '{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Explain quantum computing in one sentence."} ] }' \ --cli-binary-format raw-in-base64-out \ output.json
bedrock-runtime (curl)

您可以通过使用 AWS SigV4 签署请求来bedrock-runtime直接使用 curl 进行调用。以下示例使用 curl 的内置--aws-sigv4标志(在 curl 7.75.0 及更高版本中可用):

curl -X POST \ "https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-sonnet-5/invoke" \ -H "Content-Type: application/json" \ --aws-sigv4 "aws:amz:us-east-1:bedrock" \ --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \ -d '{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Explain quantum computing in one sentence."} ] }'
注意

如果您使用来自 AWS STS 的临时证书(例如,代入的角色),还-H "X-Amz-Security-Token: $AWS_SESSION_TOKEN"要通过添加到请求来传递会话令牌。对于大多数用例,我们建议使用 AWS SDK 或 CLI,它们可以自动处理请求签名和凭据刷新。

bedrock-runtime (curl, API key)

您也可以使用该 Anthropic-native /anthropic/v1/messages路由使用亚马逊 Bedrock API 密钥进行通话bedrock-runtime,就像bedrock-mantle:

curl -X POST https://bedrock-runtime.us-east-1.amazonaws.com/anthropic/v1/messages \ -H "x-api-key: $AWS_BEARER_TOKEN_BEDROCK" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "us.anthropic.claude-sonnet-5", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Explain quantum computing in one sentence."} ] }'
bedrock-mantle (curl)
curl -X POST https://bedrock-mantle.us-east-1.api.aws/anthropic/v1/messages \ -H "x-api-key: $BEDROCK_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic.claude-sonnet-5", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Explain quantum computing in one sentence."} ] }'

直播回复

要在响应令牌生成时以增量方式接收它们,请选择首选方法的选项卡,然后按照以下步骤操作:

bedrock-runtime (Python, Anthropic SDK)
from anthropic import Anthropic from aws_bedrock_token_generator import provide_token token = provide_token(region="us-east-1") client = Anthropic( base_url="https://bedrock-runtime.us-east-1.amazonaws.com/anthropic", api_key=token, ) with client.messages.stream( model="global.anthropic.claude-sonnet-5", max_tokens=1024, messages=[ {"role": "user", "content": "Write a short poem about cloud computing."} ], ) as stream: for text in stream.text_stream: print(text, end="", flush=True)
bedrock-runtime (Python, boto3)
import boto3 import json client = boto3.client("bedrock-runtime", region_name="us-east-1") response = client.invoke_model_with_response_stream( modelId="anthropic.claude-sonnet-5", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ {"role": "user", "content": "Write a short poem about cloud computing."} ] }) ) for event in response["body"]: chunk = json.loads(event["chunk"]["bytes"]) if chunk["type"] == "content_block_delta": print(chunk["delta"]["text"], end="")
bedrock-runtime (curl, API key)
curl -X POST https://bedrock-runtime.us-east-1.amazonaws.com/anthropic/v1/messages \ -H "x-api-key: $AWS_BEARER_TOKEN_BEDROCK" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "us.anthropic.claude-sonnet-5", "max_tokens": 1024, "stream": true, "messages": [ {"role": "user", "content": "Write a short poem about cloud computing."} ] }'
bedrock-mantle (curl)
curl -X POST https://bedrock-mantle.us-east-1.api.aws/anthropic/v1/messages \ -H "x-api-key: $BEDROCK_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic.claude-sonnet-5", "max_tokens": 1024, "stream": true, "messages": [ {"role": "user", "content": "Write a short poem about cloud computing."} ] }'

支持的功能

除了上面的 “扩展思维” 、“适应性思维” 、“结构化输出” 、“压缩” 、“拒绝请求的备用信用(测试版)” 和 “Mid-conversation 系统消息” 部分外,消息 API 还支持 Claude 模型的以下功能:

  • 系统提示 -使用system参数设置模型行为。

  • Multi-turn 对话 — 交替传递user和assistant消息。

  • 工具使用 -定义模型可以调用的工具。请参阅使用工具完成 Amazon Bedrock 模型响应。

  • 视觉 — 在content数组中将图像与文本一起发送。

  • 即时缓存 — 缓存常用上下文以减少延迟和成本。

有关消息 API 请求和响应字段的完整参考信息,请参阅请求和响应。

数代币

要计算请求在发送进行推理之前将消耗的输入令牌的数量,请使用端点上的 Anthropic count_tokens 路径。bedrock-mantle这是 Region-specific 端点不可用的 Claude 模型支持的唯一代币计数路径,包括仅bedrock-runtime通过跨区域推断 (CRIS) 启动的 Claude 模型。有关详细信息和示例,请参阅使用 bedrock-mantle 端点计算代币。