如何正确向AWS Bedrock发送请求?Python调用报错排查
问题排查与修正方案
报错原因
初始化bedrock-runtime客户端时指定了错误的endpoint_url,使用了AWS Bedrock主服务的端点(https://bedrock.us-east-1.amazonaws.com),但Bedrock Runtime服务有独立的专属端点,主服务端点不支持InvokeModel操作,因此触发ValidationException。
修正后的完整代码
1. 客户端初始化(修正端点)
import boto3 # 初始化Bedrock Runtime客户端,使用正确的Runtime专属端点 dev = boto3.session.Session(profile_name="dev") bedrock_runtime = dev.client( service_name="bedrock-runtime", region_name="us-east-1", endpoint_url="https://bedrock-runtime.us-east-1.amazonaws.com" # 修正端点 )
2. 调用模型并解析响应
import json model_id = "anthropic.claude-v2" content_type = "application/json" accept = "*/*" # Claude模型要求prompt以"\n\nAssistant:"结尾,确保响应格式正确 body = { "prompt": "Human: Who was the 40th president of the united states?\n\nAssistant:", "max_tokens_to_sample": 42, "temperature": 0.5, "top_k": 250, "top_p": 1, "anthropic_version": "bedrock-2023-05-31" } resp = bedrock_runtime.invoke_model( modelId=model_id, contentType=content_type, accept=accept, body=json.dumps(body) ) # 解析并打印响应结果 resp_body = json.loads(resp['body'].read()) print(resp_body['completion'])
额外注意事项
- 确认AWS账号在
us-east-1区域已启用anthropic.claude-v2模型 - 验证
dev配置文件对应的AWS凭证拥有bedrock:InvokeModel权限 - Claude系列模型严格要求prompt遵循
Human: 问题内容\n\nAssistant:的格式,否则可能无法生成有效响应
内容的提问来源于stack exchange,提问作者Istvan
相关产品推荐
相关产品推荐

