Skip to main content

Gemini 多模态对话示例

以下示例展示如何使用Gemini的多模态功能,让AI理解和分析图片、视频内容,进行多媒体智能对话。

快速开始

只需要替换 <API-KEY> 为你的实际API密钥即可运行。
curl -X POST "https://model-api.skyengine.com.cn/v1beta/models/gemini-2.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API-KEY>" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "text": "这张图片里有什么?请详细描述。"
          },
          {
            "inlineData": {
              "mimeType": "image/jpeg",
              "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
            }
          }
        ]
      }
    ]
  }'

使用File API上传大视频文件

对于超过20MB的大视频文件,推荐先使用File API上传,然后通过文件URI进行视频理解分析。
# 第一步:上传视频文件
curl --request POST \
  --url https://model-api.skyengine.com.cn/v1/files/upload \
  --header 'Authorization: Bearer <API-KEY>' \
  --header 'Content-Type: video/mp4' \
  --header 'filename: my_large_video.mp4' \
  --data-binary '@/path/to/your/large_video.mp4'

# 响应示例:
# {
#   "uri": "tokenops://bucket.example.com/file_api/20241016/my_large_video.mp4",
#   "mime_type": "video/mp4"
# }

# 第二步:使用文件URI进行视频理解
curl -X POST "https://model-api.skyengine.com.cn/v1beta/models/gemini-2.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API-KEY>" \
  -d '{
    "contents": [
      {
        "parts": [
          {
            "text": "请详细分析这个视频的内容,包括场景、人物、动作和情节发展。"
          },
          {
            "fileData": {
              "mimeType": "video/mp4",
              "fileUri": "tokenops://bucket.example.com/file_api/20241016/my_large_video.mp4"
            }
          }
        ]
      }
    ]
  }'

File API 说明

File API 上传成功后返回包含 urimime_type 的JSON格式:
{
  "uri": "tokenops://bucket.example.com/file_api/20241016/test.mp4",
  "mime_type": "video/mp4"
}
在视频理解API中使用 uri 作为 fileUri 字段:
{
  "fileData": {
    "mimeType": "video/mp4",
    "fileUri": "tokenops://bucket.example.com/file_api/20241016/test.mp4"
  }
}

API格式说明

基本请求结构

{
  "contents": [
    {
      "parts": [
        {
          "text": "分析这个文件"
        },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "base64编码的文件数据"
          }
        }
      ]
    }
  ]
}

多文件输入

{
  "contents": [
    {
      "parts": [
        {
          "text": "比较这些文件"
        },
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "第一个文件的base64数据"
          }
        },
        {
          "inlineData": {
            "mimeType": "video/mp4",
            "data": "第二个文件的base64数据"
          }
        }
      ]
    }
  ]
}