后端与接口
用 AWS SDK for Java 2.x 调用…
在 Java 应用中通过 AWS SDK for Java 2.x 集成 Amazon Bedrock,调用 Claude/Llama/Titan 等模型完成文本生成、流式响应、嵌入向量与 Spring Boot 服务封装。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用 AWS SDK for Java 2特定
解决思路
- 配置 AWS 凭证:使用 IAM 角色授予 Bedrock 权限,避免使用访问密钥(access keys)。
- 在 AWS 控制台中为所需基础模型申请访问权限(Enable Model Access)。
- 初始化可复用的 BedrockClient(模型管理)与 BedrockRuntimeClient(模型调用)实例,指定 Region(如 Region.US_EAST_1)。
- 在生产使用前先用简单提示(如 "Hello")验证模型可用性与响应解析是否正确。
- 为不同模型构建对应的 JSON payload:Claude 使用 anthropic_version、max_tokens、messages 数组;Titan 使用 inputText 与 textGenerationConfig(maxTokenCount、temperature);Llama 使用 prompt([INST]...[/INST])、max_gen_len、temperature。
- 调用 invokeModel 并解析响应:Claude 从 content[0].text 提取文本,Titan 嵌入从 embedding 数组读取为 double[]。
- 使用 listFoundationModels().modelSummaries() 发现可用基础模型,并缓存模型列表。
- 实现流式响应:使用 invokeModelWithResponseStream 配合 InvokeModelWithResponseStreamResponseHandler,在 onEventStream 中处理 PayloadPart 累积内容,在 onError 中记录错误。
- 实现指数退避重试:对 AwsServiceException 中 statusCode 为 429 或 >=500 的情况重试,延迟为 min(1000 * (1 << attempt) + 随机抖动, 30000) 毫秒。
- 创建文本嵌入用于 RAG:使用模型 amazon.titan-embed-text-v1,payload 为 {"inputText": text},解析 embedding 数组。
- Spring Boot 集成:用 @Configuration 定义 BedrockClient 与 BedrockRuntimeClient 的 @Bean,在 @Service 中注入并通过 ObjectMapper 构建 payload,模型 ID 用 @Value 从配置读取(默认 anthropic.claude-sonnet-4-5-20250929-v1:0)。
- 按任务选择模型:Claude 4.5 Sonnet 用于复杂推理与分析,Claude 4.5 Haiku 用于实时快速场景,Llama 3.1 作为开源通用替代,Titan 用于简单文本生成且成本低。
- 性能优化:复用客户端实例、I/O 操作使用异步客户端、长响应使用流式、缓存基础模型列表。
- 安全实践:不记录敏感提示数据、使用 IAM 角色认证、对用户输入做净化以防提示注入、对公开应用实施限流。
- 成本与限制管理:监控 token 用量并设置预算告警,注意各模型 payload 大小上限(大文档需分块),确认区域可用性,并注意 AWS 可能记录提示与响应。
- 常用模型 ID:Claude Sonnet 4.5 为 anthropic.claude-sonnet-4-5-20250929-v1:0,Claude Haiku 4.5 为 anthropic.claude-haiku-4-5-20251001-v1:0,Llama 3.1 70B 为 meta.llama3-1-70b-instruct-v1:0,Titan Embeddings 为 amazon.titan-embed-text-v1。
适用边界 · 注意事项
- 不使用 AWS 云服务或无法访问 Amazon Bedrock 的项目。
- 未在 AWS 控制台启用目标基础模型访问权限、或所在区域不支持该模型时。
- 对成本敏感且未设置用量监控与预算告警的场景。