Skip to content

AWS Bedrock

AWS Bedrock 是亚马逊的托管 AI 服务,提供来自多个提供商的基础模型。

支持的模型

Anthropic Claude

  • anthropic.claude-3-opus-20240229-v1:0 - Claude 3 Opus
  • anthropic.claude-3-sonnet-20240229-v1:0 - Claude 3 Sonnet
  • anthropic.claude-3-haiku-20240307-v1:0 - Claude 3 Haiku

Meta Llama

  • meta.llama3-8b-instruct-v1:0 - LLaMA 3 8B
  • meta.llama3-70b-instruct-v1:0 - LLaMA 3 70B
  • meta.llama2-13b-chat-v1 - LLaMA 2 13B
  • meta.llama2-70b-chat-v1 - LLaMA 2 70B

Mistral AI

  • mistral.mistral-7b-instruct-v0:2 - Mistral 7B
  • mistral.mixtral-8x7b-instruct-v0:1 - Mixtral 8x7B

AI21 Labs

  • ai21.j2-ultra-v1 - Jurassic-2 Ultra
  • ai21.j2-mid-v1 - Jurassic-2 Mid

Cohere

  • cohere.command-text-v14 - Command Text
  • cohere.command-light-text-v14 - Command Light

配置方法

基础配置

config.yaml~/.bytebuddy/config.yaml 中配置:

yaml
models:
  - name: "bedrock-claude"
    provider: "bedrock"
    model: "anthropic.claude-3-sonnet-20240229-v1:0"
    roles: ["chat", "edit"]
    env:
      region: "us-east-1"
      accessKeyId: "${AWS_ACCESS_KEY_ID}"
      secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 4000

使用 IAM 角色

在 EC2 或 Lambda 中使用 IAM 角色(无需密钥):

yaml
models:
  - name: "bedrock-iam"
    provider: "bedrock"
    model: "anthropic.claude-3-sonnet-20240229-v1:0"
    roles: ["chat"]
    env:
      region: "us-east-1"

使用 AWS 配置文件

yaml
models:
  - name: "bedrock-profile"
    provider: "bedrock"
    model: "anthropic.claude-3-sonnet-20240229-v1:0"
    roles: ["chat"]
    env:
      region: "us-east-1"
      profile: "my-aws-profile"

多模型配置

yaml
models:
  - name: "claude-sonnet"
    provider: "bedrock"
    model: "anthropic.claude-3-sonnet-20240229-v1:0"
    roles: ["chat", "edit"]
    env:
      region: "us-west-2"
      accessKeyId: "${AWS_ACCESS_KEY_ID}"
      secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 4000

  - name: "llama3-70b"
    provider: "bedrock"
    model: "meta.llama3-70b-instruct-v1:0"
    roles: ["chat"]
    env:
      region: "us-west-2"
      profile: "bedrock-profile"
    defaultCompletionOptions:
      temperature: 0.5
      maxTokens: 4000

配置字段说明

必需字段

  • name: 模型配置的唯一标识符
  • provider: 设置为 "bedrock"
  • model: Bedrock 模型 ID

环境配置 (env)

  • region: AWS 区域(必需)
  • accessKeyId: AWS 访问密钥 ID(可选,使用 IAM 角色时不需要)
  • secretAccessKey: AWS 秘密访问密钥(可选)
  • profile: AWS 配置文件名称(可选)
  • sessionToken: AWS 会话令牌(可选,用于临时凭证)

可选字段

  • roles: 模型角色 [chat, edit, apply]
  • defaultCompletionOptions:
    • temperature: 控制输出的随机性(0-1)
    • maxTokens: 最大令牌数
    • topP: 核采样参数

环境变量配置

bash
# ~/.bashrc 或 ~/.zshrc
export AWS_ACCESS_KEY_ID="your-access-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret-access-key"
export AWS_SESSION_TOKEN="your-session-token"  # 可选

设置步骤

1. 启用 Bedrock 访问

  1. 登录 AWS 管理控制台
  2. 导航到 Bedrock 服务
  3. 请求访问所需的模型

2. 配置 IAM 权限

确保您的 AWS 身份具有以下权限:

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws:bedrock:*:*:model/*"
    }
  ]
}

3. 获取凭证

  • 选项 A: 创建访问密钥(用于本地开发)
  • 选项 B: 配置 IAM 角色(用于 EC2/Lambda)
  • 选项 C: 使用 AWS 配置文件

使用场景配置

代码生成

yaml
models:
  - name: "code-assistant"
    provider: "bedrock"
    model: "anthropic.claude-3-sonnet-20240229-v1:0"
    roles: ["chat", "edit"]
    env:
      region: "us-east-1"
      accessKeyId: "${AWS_ACCESS_KEY_ID}"
      secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
    defaultCompletionOptions:
      temperature: 0.3
      maxTokens: 2000

通用对话

yaml
models:
  - name: "chat-bot"
    provider: "bedrock"
    model: "anthropic.claude-3-haiku-20240307-v1:0"
    roles: ["chat"]
    env:
      region: "us-east-1"
      profile: "default"
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 1000

故障排除

常见错误

  1. AccessDeniedException: 检查 IAM 权限和模型访问权限
  2. ValidationException: 验证模型 ID 和区域是否正确
  3. ThrottlingException: 达到速率限制,等待后重试
  4. ModelTimeoutException: 模型响应超时,尝试减少输入长度
  5. ResourceNotFoundException: 模型在该区域不可用

调试步骤

  1. 验证 AWS 凭证和权限
  2. 确认模型已在目标区域启用
  3. 检查网络连接和防火墙设置
  4. 查看 CloudTrail 日志获取详细错误信息
  5. 确认配额限制

最佳实践

1. 安全性

  • 使用环境变量存储凭证
  • 使用 IAM 角色而非长期凭证
  • 定期轮换访问密钥
  • 启用 CloudTrail 审计日志

2. 性能优化

  • 选择最近的区域以降低延迟
  • 使用适当的模型大小
  • 启用流式响应
  • 实施请求缓存

3. 成本控制

  • 监控使用量和成本
  • 为不同环境配置不同的 IAM 角色
  • 设置配额警报
  • 使用较小模型处理简单任务

4. 错误处理

  • 实施适当的重试逻辑
  • 处理速率限制
  • 记录错误日志
  • 设置请求超时

区域可用性

区域代码Claude 3Llama 3Mistral
美国东部(弗吉尼亚)us-east-1
美国西部(俄勒冈)us-west-2
欧洲(法兰克福)eu-central-1
亚太(东京)ap-northeast-1