Files API

Gemini может одновременно обрабатывать различные типы входных данных, включая текст, изображения и аудио.

В этом руководстве рассказывается, как работать с медиафайлами с помощью Files API. Основные операции одинаковы для аудиофайлов, изображений, видео, документов и других поддерживаемых типов файлов.

Инструкции по созданию запросов для файлов приведены в разделе Руководство по запросам для файлов.

Загрузить файл

Чтобы загрузить медиафайл, можно использовать Files API. Всегда используйте Files API, если общий размер запроса (включая файлы, текстовый запрос, системные инструкции и т. д.) превышает 100 МБ. Для PDF-файлов ограничение составляет 50 МБ.

В следующем коде загружается файл, который затем используется в вызове interactions.create.

Python

from google import genai

client = genai.Client()

myfile = client.files.upload(file="path/to/sample.mp3")

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input=[
        {"type": "text", "text": "Describe this audio clip"},
        {"type": "audio", "uri": myfile.uri, "mime_type": myfile.mime_type}
    ]
)

print(interaction.output_text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const myfile = await client.files.upload({
    file: "path/to/sample.mp3",
    config: { mime_type: "audio/mpeg" },
  });

  const interaction = await client.interactions.create({
    model: "gemini-3.8-flash",
    input: [
      { type: "text", text: "Describe this audio clip" },
      { type: "audio", uri: myfile.uri, mime_type: myfile.mimeType }
    ]
  });
  console.log(interaction.output_text);
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.AudioContent;
import com.google.genai.gaos.models.interactions.AudioContentMimeType;
import com.google.genai.gaos.models.interactions.Content;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;
import java.util.Arrays;
import java.util.List;

Client client = new Client();

File myFile =
    client.files.upload(
        new java.io.File("path/to/sample.mp3"),
        UploadFileConfig.builder().mimeType("audio/mp3").build());

Content textContent = TextContent.builder().text("Describe this audio clip").build();
Content audioContent =
    AudioContent.builder()
        .uri(myFile.uri().orElse(""))
        .mimeType(AudioContentMimeType.of(myFile.mimeType().orElse("audio/mp3")))
        .build();

List<Content> contents = Arrays.asList(textContent, audioContent);

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.8-flash"))
        .input(InteractionsInput.ofContent(contents))
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

System.out.println(interaction.outputText().orElse(""));

Проложить маршрут

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    myFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", &genai.UploadFileConfig{
        MIMEType: "audio/mp3",
    })
    if err != nil {
        log.Fatal(err)
    }

    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model: interactions.Model("gemini-3.8-flash"),
            Input: interactions.NewInteractionsInput([]interactions.Content{
                interactions.NewContent(interactions.TextContent{
                    Text: "Describe this audio clip",
                }),
                interactions.NewContent(interactions.AudioContent{
                    URI:      genai.Ptr(myFile.URI),
                    MimeType: interactions.AudioContentMimeType(myFile.MIMEType).ToPointer(),
                }),
            }),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res.Interaction.OutputText != nil {
        fmt.Println(*res.Interaction.OutputText)
    }
}

REST

AUDIO_PATH="path/to/sample.mp3"
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now create an interaction using the Interactions API
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "gemini-3.8-flash",
      "input": [
        {"type": "text", "text": "Describe this audio clip"},
        {"type": "audio", "uri": '$file_uri', "mime_type": "'${MIME_TYPE}'"}
      ]
    }' 2> /dev/null > response.json

cat response.json
echo

jq ".outputs[] | select(.type == \"text\") | .text" response.json

Как получить метаданные файла

Чтобы убедиться, что API успешно сохранил загруженный файл, и получить его метаданные, вызовите files.get.

Python

from google import genai

client = genai.Client()

myfile = client.files.upload(file='path/to/sample.mp3')
file_name = myfile.name
myfile = client.files.get(name=file_name)
print(myfile)

JavaScript

import {
  GoogleGenAI,
} from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const myfile = await client.files.upload({
    file: "path/to/sample.mp3",
    config: { mime_type: "audio/mpeg" },
  });

  const fileName = myfile.name;
  const fetchedFile = await client.files.get({ name: fileName });
  console.log(fetchedFile);
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;

Client client = new Client();

File myFile =
    client.files.upload(
        new java.io.File("path/to/sample.mp3"),
        UploadFileConfig.builder().mimeType("audio/mp3").build());

String fileName = myFile.name().orElse("");
File fileMetadata = client.files.get(fileName, null);
System.out.println(fileMetadata);

Проложить маршрут

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    myFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", &genai.UploadFileConfig{
        MIMEType: "audio/mp3",
    })
    if err != nil {
        log.Fatal(err)
    }

    fileMetadata, err := client.Files.Get(ctx, myFile.Name, nil)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(fileMetadata)
}

REST

# file_info.json was created in the upload example
name=$(jq -r ".file.name" file_info.json)
# Get the file of interest to check state
curl https://generativelanguage.googleapis.com/v1beta/$name \
-H "x-goog-api-key: $GEMINI_API_KEY" > file_info.json
# Print some information about the file you got
name=$(jq -r ".name" file_info.json)
echo name=$name
file_uri=$(jq -r ".uri" file_info.json)
echo file_uri=$file_uri

Как получить список загруженных файлов

Следующий код позволяет получить список всех загруженных файлов:

Python

from google import genai

client = genai.Client()

print('My files:')
for f in client.files.list():
    print(' ', f.name)

JavaScript

import {
  GoogleGenAI,
} from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const listResponse = await client.files.list({ config: { pageSize: 10 } });
  for await (const file of listResponse) {
    console.log(file.name);
  }
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.types.File;

Client client = new Client();

System.out.println("My files:");
for (File f : client.files.list(null)) {
  System.out.println("  " + f.name().orElse(""));
}

Проложить маршрут

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("My files:")
    for f, err := range client.Files.All(ctx) {
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println(" ", f.Name)
    }
}

REST

echo "My files: "

curl "https://generativelanguage.googleapis.com/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY"

Как удалить загруженные файлы

Файлы автоматически удаляются через 48 часов. Вы также можете вручную удалить загруженный файл:

Python

from google import genai

client = genai.Client()

myfile = client.files.upload(file='path/to/sample.mp3')
client.files.delete(name=myfile.name)

JavaScript

import {
  GoogleGenAI,
} from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const myfile = await client.files.upload({
    file: "path/to/sample.mp3",
    config: { mime_type: "audio/mpeg" },
  });

  const fileName = myfile.name;
  await client.files.delete({ name: fileName });
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.types.File;
import com.google.genai.types.UploadFileConfig;

Client client = new Client();

File myFile =
    client.files.upload(
        new java.io.File("path/to/sample.mp3"),
        UploadFileConfig.builder().mimeType("audio/mp3").build());

client.files.delete(myFile.name().orElse(""), null);

Проложить маршрут

package main

import (
    "context"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    myFile, err := client.Files.UploadFromPath(ctx, "path/to/sample.mp3", &genai.UploadFileConfig{
        MIMEType: "audio/mp3",
    })
    if err != nil {
        log.Fatal(err)
    }

    if _, err := client.Files.Delete(ctx, myFile.Name, nil); err != nil {
        log.Fatal(err)
    }
}

REST

curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/$name \
  -H "x-goog-api-key: $GEMINI_API_KEY"

Информация об использовании

Вы можете использовать Files API для загрузки медиафайлов и взаимодействия с ними. API файлов позволяет хранить до 20 ГБ файлов на проект, при этом максимальный размер файла составляет 2 ГБ. Файлы хранятся 48 часов.

В течение этого времени вы можете использовать API для получения метаданных о файлах. Однако скачивать загруженные пользователями файлы нельзя. Вы можете скачивать файлы, сгенерированные моделями, например видео, с помощью метода files.download. Files API доступен бесплатно во всех регионах, где поддерживается Gemini API.

Стратегии запроса файлов

В этом разделе приведены рекомендации по использованию медиафайлов в запросах к Gemini API.

Возможность использовать в запросах различные типы данных дает вам больше гибкости в отношении того, какие задачи вы можете решать с помощью Gemini API. Например, вы можете отправить модели фотографию вкусного блюда и попросить написать о нем короткий пост для блога.

Запрос Ответ

Напиши короткую и интересную запись в блоге на основе этого изображения. В нем должно быть описание блюда на фотографии и рассказ о том, как я готовлю еду на неделю.


Файлы cookie

Подготовка еды – отличный способ сэкономить время и деньги, а также начать питаться более здоровой пищей. Это отличный пример вкусного и полезного блюда, которое можно приготовить заранее.

Это блюдо включает коричневый рис, жареные овощи и курицу терияки. Коричневый рис – это полезный сложный углевод, который обеспечит вас энергией надолго. Запеченные овощи – отличный способ получить ежедневную дозу витаминов и минералов, а курица терияки – вкусный и богатый белком вариант.

Это блюдо также легко приготовить. Просто приготовьте коричневый рис, запеките овощи и приготовьте курицу терияки. Когда все будет готово, разложите еду по контейнерам и уберите в холодильник. и брать его с собой в спешке.

Если вы ищете полезное и вкусное блюдо, которое можно приготовить заранее, этот рецепт – отличный вариант. Оно богато питательными веществами и обладает насыщенным вкусом, а также помогает дольше чувствовать себя сытым.

Готовьте полезные и вкусные блюда!

Если вы не можете получить нужный результат от запросов, в которых используются медиафайлы, попробуйте применить следующие стратегии. В следующих разделах приведены подходы к проектированию и советы по устранению неполадок, которые помогут улучшить запросы с мультимодальными входными данными.

Чтобы улучшить мультимодальные запросы, следуйте этим рекомендациям:

  • Основные принципы создания запросов

    • Будьте точны в инструкциях. Составляйте четкие и краткие инструкции, которые оставляют минимальное пространство для неверного толкования.
    • Добавьте в запрос несколько примеров. Используйте реалистичные примеры, чтобы показать, чего вы хотите достичь.
    • Разбивайте задачи на этапы. Разделяйте сложные задачи на более простые подзадачи, чтобы модели было проще их выполнять.
    • Укажите формат выходных данных. В запросе укажите, в каком формате вы хотите получить ответ, например Markdown, JSON, HTML и т. д.
    • В запросах с одним изображением ставьте его первым. Gemini может обрабатывать изображения и текст в любом порядке, но в запросах с одним изображением (или видео) лучше сначала указать изображение, а затем текстовый запрос. Однако если для понимания запроса необходимо, чтобы изображения и текст были тесно связаны, используйте наиболее естественный порядок.
  • Устранение неполадок с мультимодальными запросами

    • Если модель не использует информацию из нужной части изображения, укажите в запросе, на какие аспекты изображения следует обратить внимание.
    • Если результат работы модели слишком общий (не учитывает особенности изображения или видео), попробуйте в начале запроса попросить модель описать изображение или видео, а затем дать инструкции. Также можно попросить модель ссылаться на то, что изображено на картинке.
    • Чтобы устранить неполадки, попросите модель описать изображение или объяснить свои рассуждения. Это поможет понять, как модель интерпретирует запрос.
    • Если в результате запроса вы получаете галлюцинации, попробуйте снизить температуру или попросить модель составить более короткие описания. Это снизит вероятность того, что она будет додумывать дополнительные детали.
    • Настройка параметров выборки. Экспериментируйте с различными настройками температуры и выбором top-k, чтобы настроить креативность модели.

Будьте конкретны в своих инструкциях

Чтобы получить наилучший результат, составляйте четкие и подробные запросы. Если вы хотите получить определенный результат, лучше включить это требование в запрос, чтобы получить желаемый результат.

Если попросить модель "описать это изображение" (табло в аэропорту), она может создать общее описание. Если вам нужно, чтобы модель извлекла из изображения время и город, вы можете включить этот запрос непосредственно в свой промпт.

Запрос Ответ модели

Опиши это изображение,

На изображении показано табло прилетов и вылетов в аэропорту.

Обновленный запрос Улучшенная реакция
Расписание поездок

Извлеки из изображения время и город и представь их в виде списка.

  • 10:50, Москва
  • 11:05, Эдинбург
  • 11:05, Лондон
  • 11:10, Бухарест
  • 11:30 (Киев)
  • 11:35, Дублин
  • 11:45, Ист-Мидлендс
  • 12:15, София
  • 12:30, Лондон
  • 12:30 Ньюкасл
  • 12:40 Санкт-Петербург
  • 12:40, Лондон
  • 12:45, Манчестер
  • Добавьте несколько примеров

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

    В примере ниже исходный ответ написан в виде предложения и содержит название страны (Бразилия). Предположим, вы хотите получить результат в другом формате или стиле и вам нужен только город, а не страна. Добавление в запрос нескольких примеров может помочь модели отвечать так, как вам нужно.

    Запрос Ответ модели
    Расписание поездок

    Определите город, в котором находится ориентир.

    Это статуя Христа-Искупителя в Рио-де-Жанейро, Бразилия.

    Обновленный запрос Улучшенная реакция

    Определите город, в котором находится достопримечательность.

    Колизей

    город: Рим, достопримечательность: Колизей.

    Запретный город

    city: Beijing, landmark: Forbidden City

    forbidden-city

    city: Rio de Janeiro, landmark: Christ the Redeemer statue

    Разбить на шаги

    Для сложных задач, например тех, которые требуют как визуального понимания, так и рассуждений, может быть полезно разбить задачу на более мелкие и простые шаги. Вы также можете напрямую попросить модель "думать пошагово" в своем запросе.

    Запрос Ответ модели

    Когда у меня закончится туалетная бумага?

    Скоро у вас останется только три броска.

    Обновленный запрос Улучшенный ответ
    1. Сначала посчитай, сколько рулонов туалетной бумаги на этой картинке.
    2. Затем определите, сколько туалетной бумаги в среднем использует один человек в день.
    3. Рассчитай, на сколько хватит этих рулонов туалетной бумаги.
    1. На этой картинке три рулона туалетной бумаги.
    2. Обычно человек использует около 20 листов туалетной бумаги в день.
    3. Если в каждом рулоне 200 листов, то одного рулона хватит примерно на 10 дней. Значит, трех рулонов хватит примерно на месяц.

    Математические и другие текстовые задачи – отличный пример того, как можно попросить модель рассуждать пошагово.

    Запрос Ответ

    Какое число будет четвертым в последовательности?

    -135

    Ответ модели неправильный. Чтобы улучшить результат, можно попросить модель проанализировать задачу, прежде чем отвечать на запрос.

    Запрос Ответ

    Сначала разберите формулу на изображении.

    Затем, используя формулу, ответьте на вопрос "Какое число будет четвертым в последовательности?".

    Нажмите, чтобы развернуть результат

    $$ b(n) = b(n-1) * (-3) $$

    $$ b(1) = 15 $$

    1. Подставьте n = 4 в формулу:

      $$ b(4) = b(4-1) * (-3) $$

      $$ b(4) = b(3) * (-3) $$

    2. Значение b(3) нам неизвестно, поэтому подставим в формулу n = 3:

      $$ b(3) = b(3-1) * (-3) $$

      $$ b(3) = b(2) * (-3) $$

    3. Мы не знаем значение b(2), поэтому подставим n = 2 в формулу:

      $$ b(2) = b(2-1) * (-3) $$

      $$ b(2) = b(1) * (-3) $$

    4. Мы знаем, что значение b(1) равно 15, поэтому подставим его в формулу:

      $$ b(2) = 15 * (-3) $$

      $$ b(2) = -45 $$

    5. Теперь, когда мы знаем значение b(2), подставим его в формулу для b(3):

      $$ b(3) = b(2) * (-3) $$

      $$ b(3) = -45 * (-3) $$

      $$ b(3) = 135 $$

    6. Теперь, когда мы знаем значение b(3), подставим его в формулу для b(4):

      $$ b(4) = b(3) * (-3) $$

      $$ b(4) = 135 * (-3) $$

      $$ b(4) = -405 $$

    Таким образом, четвертый член последовательности равен -405.

    Ответ модели правильный. Чтобы сделать его ещё более понятным, вы можете попросить модель рассуждать пошагово.

    Обновленный запрос Улучшенный ответ

    Какое число будет четвертым в последовательности? Рассуждай пошагово.

    Первый срок – 15 дней.

    Второй член равен b(1) * (-3) = 15 * (-3) = -45.

    Третий член равен b(2) * (-3) = -45 * (-3) = 135.

    Четвертый член последовательности: b(3) * (-3) = 135 * (-3) = -405.

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

    Часто возникает необходимость, чтобы выходные данные модели были в определенном формате (например, Markdown, JSON, HTML), особенно если они должны быть использованы в последующей задаче. Вы можете попробовать получить выходные данные в этом формате, указав это в запросе. Вот два примера:

    Запрос Ответ модели

    Преобразуй таблицу на этом изображении в формат Markdown

    ```none | Предмет | Статус | Время | Дата начала | Срок сдачи | | ------- | ------ | ---- | ---------- | ------ | | Математика | Выполнено | 1,5 ч | 29.11.2023 | 01.12.2023 | | География | Выполнено | 30 мин | 02.12.2023 | 04.12.2023 | | Физика | В процессе | 2 ч | 03.12.2023 | 05.12.2023 | | Биология | Не начато | 6 ч | 02.11.2016 | 06.12.2023 | ```
    Запрос Ответ модели

    Укажите список всех следующих атрибутов:

    ингредиенты, тип кухни, вегетарианское или нет, в формате JSON

    ```json { "ingredients": [ "rice", "shrimp", "clams", "mussels", "peas", "tomatoes", "onions", "garlic", "olive oil", "paprika", "salt", "pepper" ], "type of cuisine": "Spanish", "vegetarian": false } ```

    Если в запросе одно изображение, поместите его в начало

    Gemini может интерпретировать изображения и текст в любом порядке, но если вы разместите одно изображение перед текстовым запросом, результаты могут быть лучше. В приведенных ниже примерах в каждом запросе сначала указывается изображение, а затем текст.

    Устранение неполадок с мультимодальными запросами

    Если вы не получаете полезных ответов, возможно, вам нужно устранить неполадки в запросе. Вот несколько стратегий, которые вы можете попробовать.

    Если модель не использует информацию из нужной части изображения

    Чтобы получить более точный ответ, вы можете указать, на какие аспекты изображения следует обратить внимание.

    Запрос Ответ модели

    На сколько дней хватит этих подгузников?

    Подгузников хватит на 198 дней.

    Обновленный запрос Улучшенный ответ

    На сколько хватит этих подгузников?

    Используйте вес, указанный на коробке, чтобы определить возраст ребенка, и укажите общее количество подгузников в коробке.

    Разделите общее количество на число подгузников, которое ребенок использует за день.

    В коробке 198 подгузников. На коробке указано, что подгузники предназначены для ребенка весом 22–37 фунтов.

    Средний ребенок в этом диапазоне веса, вероятно, находится в возрасте от 1 до 2 лет.

    Двухлетний ребенок обычно использует шесть подгузников в день, поэтому 198 подгузников хватит примерно на 33 дня (198/6).

    Если результат работы модели слишком общий и недостаточно адаптирован к входному изображению.

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

    Запрос Ответ модели

    Что общего между этими изображениями?

    Все четыре изображения – примеры пейзажной фотографии.

    Обновленный запрос Улучшенный ответ

    Сначала подробно опиши, что изображено на каждой картинке. Что общего у этих изображений?

    На первом изображении показан человек, собирающий чемодан. На втором изображении показан пустой коридор в торговом центре. На третьем изображении показан рулон туалетной бумаги. На четвертом изображении показано темное и бурное море.

    Общее между этими изображениями то, что все они являются примерами лиминальных пространств. Лиминальные пространства – это места или ситуации, которые находятся между двумя другими местами или ситуациями. Они часто характеризуются неопределенностью или двусмысленностью.

    На первом изображении показан человек, который находится дома и в поездке. На втором изображении показан коридор между двумя магазинами. На третьем изображении показана туалетная бумага, которая может представлять ванную комнату. Ванная комната – это переходное пространство между личной и общественной сферами. Это место, где мы готовимся войти во внешний мир или покинуть его.

    На четвертом изображении море неспокойное, но и не штормовое.

    Лиминальные пространства могут быть как захватывающими, так и тревожными. Они могут быть началом или концом. Они могут быть местом для размышлений или местом для действий.

    Вы также можете попросить модель использовать информацию с изображения.

    Обновленный запрос Улучшенный ответ

    Что общего между этими изображениями? В ответе ссылайтесь на то, что изображено на картинках.

    Все изображения связаны с путешествиями. На первом изображении показан человек, собирающий чемодан, на втором – пустой коридор в торговом центре, на третьем – стопка туалетной бумаги, а на четвертом – темное и бурное море.

    Все эти изображения связаны с путешествиями, поскольку на них показаны вещи, которые люди берут с собой в поездки. На первом изображении показан человек, собирающий чемодан, что люди делают, когда собираются в поездку. На втором изображении показан пустой коридор в торговом центре, куда люди часто ходят за покупками перед поездкой. На третьем изображении показана стопка туалетной бумаги, которую люди часто используют во время путешествий. На четвертом изображении показано темное и бурное море, с которым люди часто сталкиваются во время путешествий.

    Эти же советы применимы и к созданию изображений. В примере ниже, где изображен кролик, явная просьба включить в ответ элементы из изображения может улучшить результат.

    Запрос Ответ модели

    Напиши стихотворение об этом изображении.

    Маленький кролик, такой мягкий и коричневый,
    прыгает по полю вверх и вниз.
    Ушки длинные, хвостик маленький,
    Ты самый милый зверек на свете.

    Ты щиплешь травку, зеленую и сладкую,
    И ускакиваешь, когда видишь меня.
    Но я всегда буду твоим другом,
    Маленький кролик, до самого конца.

    Обновленный запрос Улучшенный ответ

    Напиши описательное и драматическое стихотворение об этом изображении и укажи местоположение.

    Зайка серенький сидит,
    Ушками он шевелит.
    Что ты видишь там,
    Вдали, куда ты смотришь?

    Она цвета океана,
    Искрится в лучах солнца?
    Или волны, что бьются о берег,
    Их ритм тебе по душе?

    Зайчик, зайчик, расскажи,
    Что тебя так увлекло?
    Что тебе нравится больше:
    соленый бриз или крики чаек?

    Возможно, дело в его необъятности,
    Мир такой большой и маленький.
    Где мечты могут бродить,
    И приключения могут быть посеяны.

    Зайчик, о чем ты мечтаешь,
    Когда на траве отдыхаешь?
    Хочешь ли ты исследовать глубины
    Или остаться на суше, где можно прыгать?

    Что бы это ни было, маленький кролик,
    не дай этому огоньку угаснуть.
    Ведь в ваших мечтах и стремлениях
    Скрыт мир,который вы можете создать.

    Как устранить неполадки с запросом

    Бывает сложно понять, почему запрос не сработал: потому что модель не распознала изображение или потому что она распознала его, но не выполнила правильные шаги рассуждения. Чтобы понять, в чем причина, попросите модель описать, что изображено на картинке.

    Например, если модель предлагает к чаю попкорн, сначала устраните неполадки, чтобы определить, правильно ли она распознала чай на изображении.

    Запрос Запрос для устранения неполадок

    Какую закуску можно приготовить за одну минуту, чтобы она хорошо сочеталась с этим блюдом?

    Опиши, что изображено на этой картинке.

    Ещё один способ – попросить модель объяснить, почему она пришла к такому выводу. Это поможет вам понять, на каком этапе рассуждений произошла ошибка, если она была.

    Запрос Запрос для устранения неполадок

    Какую закуску можно приготовить за минуту, чтобы она хорошо сочеталась с этим?

    Какую закуску можно приготовить за одну минуту, чтобы она хорошо сочеталась с этим блюдом? Объясните, почему вы так считаете.

    Дальнейшие действия

    • Попробуйте написать собственные мультимодальные запросы в Google AI Studio.
    • Чтобы узнать, как использовать Gemini Files API для загрузки медиафайлов и их добавления в запросы, ознакомьтесь с руководствами по Vision, аудио и документов.
    • Дополнительные сведения о том, как составлять запросы, например как настраивать параметры выборки, можно найти на странице Стратегии составления запросов.