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 访问
- 登录 AWS 管理控制台
- 导航到 Bedrock 服务
- 请求访问所需的模型
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故障排除
常见错误
- AccessDeniedException: 检查 IAM 权限和模型访问权限
- ValidationException: 验证模型 ID 和区域是否正确
- ThrottlingException: 达到速率限制,等待后重试
- ModelTimeoutException: 模型响应超时,尝试减少输入长度
- ResourceNotFoundException: 模型在该区域不可用
调试步骤
- 验证 AWS 凭证和权限
- 确认模型已在目标区域启用
- 检查网络连接和防火墙设置
- 查看 CloudTrail 日志获取详细错误信息
- 确认配额限制
最佳实践
1. 安全性
- 使用环境变量存储凭证
- 使用 IAM 角色而非长期凭证
- 定期轮换访问密钥
- 启用 CloudTrail 审计日志
2. 性能优化
- 选择最近的区域以降低延迟
- 使用适当的模型大小
- 启用流式响应
- 实施请求缓存
3. 成本控制
- 监控使用量和成本
- 为不同环境配置不同的 IAM 角色
- 设置配额警报
- 使用较小模型处理简单任务
4. 错误处理
- 实施适当的重试逻辑
- 处理速率限制
- 记录错误日志
- 设置请求超时
区域可用性
| 区域 | 代码 | Claude 3 | Llama 3 | Mistral |
|---|---|---|---|---|
| 美国东部(弗吉尼亚) | us-east-1 | ✅ | ✅ | ✅ |
| 美国西部(俄勒冈) | us-west-2 | ✅ | ✅ | ✅ |
| 欧洲(法兰克福) | eu-central-1 | ✅ | ✅ | ❌ |
| 亚太(东京) | ap-northeast-1 | ✅ | ❌ | ❌ |