如何通过InvokeAgent API向AWS Bedrock Agent发送图片?格式验证报错求助
解决AWS Bedrock Agent通过InvokeAgent API传递图片的问题
核心结论
Bedrock Agent的InvokeAgent API暂不支持直接通过sessionState.files字段传递Base64编码图片,该字段仅用于关联已预上传到S3的文件,且需遵循特定格式要求。
正确的图片传递流程
1. 预上传图片到S3并配置权限
- 确保S3桶已为Bedrock Agent的执行角色授予
s3:GetObject权限 - 将图片上传到Agent所在区域的S3桶中
2. 在InvokeAgent请求中关联S3文件
在sessionState.files字段中传入S3对象的ARN,而非Base64编码内容,示例格式如下:
sessionState={ "files": [ { "fileArn": "arn:aws:s3:::your-bucket-name/path/to/target-image.jpg" } ] }
修正后的Python代码示例
import boto3 # 初始化Bedrock Agent Runtime客户端 bedrock_agent_client = boto3.client( 'bedrock-agent-runtime', region_name='us-east-1' # 替换为你的Agent所在区域 ) # 调用InvokeAgent API response = bedrock_agent_client.invoke_agent( agentId='YOUR_AGENT_ID', agentAliasId='YOUR_AGENT_ALIAS_ID', sessionId='unique-session-identifier', inputText='请分析这张图片的内容', sessionState={ "files": [ { "fileArn": "arn:aws:s3:::your-bucket/images/sample.png" } ] } ) # 处理流式响应 for event in response['completion']: if 'chunk' in event: print(event['chunk']['bytes'].decode('utf-8'))
关键注意事项
- 需使用支持多模态的基础模型(如Claude 3、Gemini系列)
- S3文件大小需符合Bedrock的限制(通常不超过10MB)
- Agent的执行角色必须具备目标S3对象的读取权限
内容的提问来源于stack exchange,提问作者Vinícius Felizatti
相关产品推荐
相关产品推荐

