Работа с файлами: текст, изображение, аудио, видео

Для понимания этих примеров рекомендуем сначала ознакомиться с
базовым примером.

В качестве контекста моделям Gemini 1.5 Pro и Gemini 1.5 Flash можно передавать файлы и опрашивать модель по их содержимому.

Поддерживаемые форматы

Изображения

  • PNG - image/png
  • JPEG - image/jpeg
  • WEBP - image/webp
  • HEIC - image/heic
  • HEIF - image/heif

Аудио

  • WAV - audio/wav
  • MP3 - audio/mp3
  • AIFF - audio/aiff
  • AAC - audio/aac
  • OGG Vorbis - audio/ogg
  • FLAC - audio/flac

Видео

  • video/mp4
  • video/mpeg
  • video/mov
  • video/avi
  • video/x-flv
  • video/mpg
  • video/webm
  • video/wmv
  • video/3gpp

Текст

  • text/plain
  • text/html
  • text/css
  • text/javascript
  • application/x-javascript
  • text/x-typescript
  • application/x-typescript
  • text/csv
  • text/markdown
  • text/x-python
  • application/x-python-code
  • application/json
  • text/xml
  • application/rtf
  • text/rtf

Структура запроса

POST https://api.proxyapi.ru/google/v1/models/gemini-1.5-pro:generateContent

Тело запроса:

{
  "contents": [
    {
      "role": "user",
      "parts": [
        { "text": "Опиши, что на изображении" },
        { "inlineData": { "mimeType": "image/jpeg", "data": "......." } }
      ]
    }
  ]
}

В data передается собственно содержимое файла в формате base64.

Пример для Node.js

import { GoogleGenerativeAI } from "@google/generative-ai";
import fs from "fs";

const token = "{PROXY_API_KEY}"
const genAI = new GoogleGenerativeAI(token);

const model = genAI.getGenerativeModel({ model: "gemini-1.5-pro" }, {
  baseUrl: "https://api.proxyapi.ru/google",
  customHeaders: {
    "Authorization": `Bearer ${token}`
  }
});

const prompt = "Опиши, что на фото";
const image = {
  inlineData: {
    data: Buffer.from(fs.readFileSync("image.heic")).toString("base64"),
    mimeType: "image/heic",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

Пример для Python

import base64
import requests

url = "https://api.proxyapi.ru/google"
token = "{PROXY_API_KEY}"
file_path = "image.heic"

with open(file_path, "rb") as file:
    file_bytes = file.read()
    encoded_bytes = base64.b64encode(file_bytes).decode("utf-8")


data = {
    "contents": [
        {
            "role": "user",
            "parts": [
                {"text": "Опиши, что на изображении"},
                {"inlineData": {"mimeType": "image/heic", "data": encoded_bytes}},
            ],
        }
    ]
}

response = requests.post(
    f"{url}/v1/models/gemini-1.5-pro:generateContent",
    json=data,
    headers={
        "Authorization": f"Bearer {token}",
    },
)

print(response.json())