使用InvokeModel调用Amazon Nova时遇ValidationException错误求助
问题分析与修复方案
问题原因
调用Amazon Nova的InvokeModel接口处理S3存储的视频时,接口要求必须通过toolUse字段指定要使用的工具(比如用于获取S3资源的RetrieveAndGenerate工具),你的请求体中缺少这个必填字段,因此触发ValidationException校验错误。
修复方法
需要在请求的messages结构中添加toolUse字段,明确指定调用的工具及对应S3路径参数。以下是修正后的Python代码示例:
import boto3 import json # 初始化Bedrock Runtime客户端 client = boto3.client('bedrock-runtime', region_name='us-east-1') # 指定Nova模型ID model_id = 'amazon-nova-mini-v1' # 构造符合要求的请求体 request_body = { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [ { "type": "tool_use", "id": "video_analysis_tool", "name": "retrieve_and_generate", "input": { "retrieve": { "s3Location": { "uri": "s3://your-bucket-name/your-video-path.mp4" } }, "generate": { "prompt": "请分析该视频,描述核心内容与关键场景" } } } ] } ] } try: # 调用模型 response = client.invoke_model( modelId=model_id, body=json.dumps(request_body), contentType='application/json' ) # 解析并打印响应 response_content = json.loads(response['body'].read()) print(response_content) except client.exceptions.ValidationException as e: print(f"校验错误详情: {e}") except Exception as e: print(f"请求失败: {e}")
关键注意事项
tool_use结构必须包含三个核心字段:id(工具调用的唯一标识)、name(指定要调用的工具,如retrieve_and_generate用于获取S3资源并生成分析结果)、input(工具参数,包含S3路径和生成提示)。- 确保你的AWS账号及Bedrock服务角色拥有目标S3桶的读取权限。
- 可根据实际需求调整
generate中的prompt内容,或更换对应功能的工具名称。
内容的提问来源于stack exchange,提问作者Krzysztof
相关产品推荐
相关产品推荐

