AWS_PROFILE、IAM Identity Center、实例/容器角色)解析 AWS 凭据。
配置
BEDROCK_BASE_URL 为空时,GoModel 会回退到 AWS_REGION / AWS_DEFAULT_REGION。
运行 GoModel
验证
GET /v1/models 返回 Bedrock 模型,其 owned_by 设置为原始厂商(例如 anthropic、amazon)。流式传输(stream: true)和 Responses API 会在内部桥接到 Converse。
限制或扩展模型列表
默认情况下,GoModel 会查询 Bedrock 的控制平面,并列出该账户有权访问的所有按需文本模型。如需固定推理配置文件(inference profile)ID 或自定义模型 ARN:config.yaml 中配置:
CONFIGURED_PROVIDER_MODELS_MODE:fallback(默认)仅在 ListFoundationModels 不可用或返回为空时使用该列表;allowlist 只暴露配置的模型,并跳过上游调用。
多个 Bedrock 提供商
使用带后缀的环境变量注册不同的 Bedrock 实例:bedrock-us 和 bedrock-eu 两个提供商。Bedrock 凭据仍然来自标准 AWS 凭据链。
允许的工具
Bedrock Converse 无法将某一轮对话限制为已声明工具的一个子集。对于类型为allowed_tools 的 tool_choice,GoModel 只声明列出的函数:当模式为 required 时 toolChoice 为 any,否则为 auto。如果子集中没有任何已声明的函数,请求会以 400 被拒绝。
allowed_tools 的意义在于让客户端每一轮都发送相同的工具列表,从而保留其提示词缓存。缩小范围会改变发送到上游的工具定义,而在 Claude 模型上,工具定义在缓存前缀中位于系统提示词之前,因此在不同轮次之间变化的子集会使缓存失效。
尚未集成
- Bedrock 嵌入(Embeddings):
InvokeModel的嵌入路径因模型而异,尚未接入。
故障排查
AccessDeniedException/403:AWS 主体缺少 Bedrock 权限,或尚未在 Bedrock 控制台中授予模型访问权限。on-demand throughput isn't supported:该模型需要推理配置文件或预置吞吐量。请将BEDROCK_MODELS设置为推理配置文件 ID。model registry has no models:该区域没有按需文本模型,或控制平面调用失败。请设置BEDROCK_MODELS或检查 IAM。- 推断出的区域不正确:请显式传入
BEDROCK_BASE_URL。使用完整端点 URL 时,只有当主机名以.amazonaws.com结尾时,GoModel 才会从中提取区域部分;自定义端点应配合AWS_REGION使用。