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 для загрузки медиафайлов и взаимодействия с ними. Files API позволяет хранить до 20 ГБ файлов на проект, при этом максимальный размер файла составляет 2 ГБ. Файлы хранятся 48 часов.

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

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

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

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

Запрос Ответ

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


Файлы cookie

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

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

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

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

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

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

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

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

    • Будьте точны в инструкциях. Составляйте четкие и краткие инструкции, которые оставляют минимальное пространство для неверного толкования.
    • Добавьте в запрос несколько примеров. Используйте реалистичные примеры, чтобы показать, чего вы хотите достичь.
    • Разбивайте задачи на этапы. Разделите сложную задачу на несколько простых и направляйте модель в процессе ее выполнения.
    • Укажите формат выходных данных. В запросе укажите, в каком формате вы хотите получить ответ, например Markdown, JSON, HTML и т. д.
    • Если в запросе одно изображение, поместите его в начало. Gemini может обрабатывать изображения и текст в любом порядке, но если в запросе одно изображение, 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 может принимать несколько входных данных, которые она может использовать в качестве примеров, чтобы понять, какой результат вы хотите получить. Добавление этих примеров может помочь модели выявить закономерности и применить связь между данными изображениями и ответами к новому примеру. Этот процесс также называется обучением на нескольких примерах.

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

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

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

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

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

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

    Колизей

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

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

    город: Пекин, достопримечательность: Запретный город

    forbidden-city

    город: Рио-де-Жанейро, достопримечательность: статуя Христа-Искупителя

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

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

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

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

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

    Обновленный запрос Улучшенный ответ
    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 $$

    Таким образом, 4-й член последовательности равен -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 подгузников. На коробке указано, что подгузники предназначены для ребенка весом 10–17 кг.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Может, это синий океан,
    Сверкающий в лучах солнца?
    Или шум морской волны,
    Что приносит в душу мир?

    Зайчик, зайчик, расскажи,
    Что тебя так увлекло?
    Солёный бриз,
    Или крики чаек?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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