diff --git a/fam-edge/src/fam_edge/model_adapters/gemini_adapter.py b/fam-edge/src/fam_edge/model_adapters/gemini_adapter.py index 9efe515..6cfb2a1 100644 --- a/fam-edge/src/fam_edge/model_adapters/gemini_adapter.py +++ b/fam-edge/src/fam_edge/model_adapters/gemini_adapter.py @@ -126,7 +126,8 @@ class GeminiAdapter(BaseModelAdapter): name = os.path.basename(video_path) size = os.path.getsize(video_path) upload_timeout = max(self.timeout, 900) - base = f"{self._base_url}/files?key={self.api_key}" + # 上传端点必须是 /upload/v1beta/files(/v1beta/files 只是元数据端点,不接受上传协议) + base = f"https://generativelanguage.googleapis.com/upload/v1beta/files?key={self.api_key}" # 1) 创建可续传上传会话 try: r0 = requests.post( diff --git a/fam-edge/src/fam_edge/model_adapters/nvidia_adapter.py b/fam-edge/src/fam_edge/model_adapters/nvidia_adapter.py index 113d79c..5a4209b 100644 --- a/fam-edge/src/fam_edge/model_adapters/nvidia_adapter.py +++ b/fam-edge/src/fam_edge/model_adapters/nvidia_adapter.py @@ -106,7 +106,9 @@ class NvidiaVisionAdapter(BaseModelAdapter): up = requests.put( upload_url, data=f, - headers={"Content-Type": "application/octet-stream"}, + # 注意:必须用小写 header 名,预签名 S3 URL 的签名覆盖小写 content-type + headers={"content-type": "application/octet-stream", + "x-amz-meta-nvcf-asset-description": "fam-edge video asset"}, timeout=upload_timeout, ) except requests.Timeout: