Using files

Метод: media.upload

Создает File .

Конечная точка

загрузить URI для запросов на загрузку мультимедиа:
`опубликовать
https://generativelanguage.googleapis.com/upload/v1beta/files

  • URI метаданных для запросов только метаданных:
    POST https://generativelanguage.googleapis.com/v1beta/files URL-адрес использует синтаксис перекодирования gRPC .
  • Тело запроса

    Тело запроса содержит данные следующей структуры:

    Поля
    file object ( File )

    Необязательный. Метаданные для создаваемого файла.

    Пример запроса

    Изображение

    Питон

    myfile = genai.upload_file(media / "Cajun_instruments.jpg")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you tell me about the instruments in this photo?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this image.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    Аудио

    Питон

    myfile = genai.upload_file(media / "sample.mp3")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this audio clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/samplesmall.mp3`,
      {
        mimeType: "audio/mp3",
        displayName: "Audio sample",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Audio processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this audio clip.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    Текст

    Питон

    myfile = genai.upload_file(media / "poem.txt")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you add a few more lines to this poem?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
      mimeType: "text/plain",
      displayName: "Apollo 11",
    });
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Transcribe the first few sentences of this document.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    видео

    Питон

    import time
    
    # Video clip (CC BY 3.0) from https://peach.blender.org/download/
    myfile = genai.upload_file(media / "Big_Buck_Bunny.mp4")
    print(f"{myfile=}")
    
    # Videos need to be processed before you can use them.
    while myfile.state.name == "PROCESSING":
        print("processing video...")
        time.sleep(5)
        myfile = genai.get_file(myfile.name)
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this video clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/Big_Buck_Bunny.mp4`,
      {
        mimeType: "video/mp4",
        displayName: "Big Buck Bunny",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Video processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this video.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    Тело ответа

    Ответ на media.upload .

    В случае успеха тело ответа содержит данные следующей структуры:

    Поля
    file object ( File )

    Метаданные для созданного файла.

    JSON-представление
    {
      "file": {
        object (File)
      }
    }

    Метод: files.get

    Получает метаданные для данного File .

    Конечная точка

    получить https://generativelanguage.googleapis.com/v1beta/{name=files/*}

    Параметры пути

    string name

    Необходимый. Имя File , который нужно получить. Пример: files/abc-123 Он принимает форму files/{file} .

    Тело запроса

    Тело запроса должно быть пустым.

    Пример запроса

    Питон

    myfile = genai.upload_file(media / "poem.txt")
    file_name = myfile.name
    print(file_name)  # "files/*"
    
    myfile = genai.get_file(file_name)
    print(myfile)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResponse = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Get the previously uploaded file's metadata.
    const getResponse = await fileManager.getFile(uploadResponse.file.name);
    
    // View the response.
    console.log(
      `Retrieved file ${getResponse.displayName} as ${getResponse.uri}`,
    );

    Тело ответа

    В случае успеха тело ответа содержит экземпляр File .

    Метод: files.list

    Перечисляет метаданные для File , принадлежащих запрашивающему проекту.

    Конечная точка

    получить https://generativelanguage.googleapis.com/v1beta/files

    Параметры запроса

    pageSize integer

    Необязательный. Максимальное количество File , возвращаемых на страницу. Если не указано, по умолчанию — 10. Максимальный pageSize — 100.

    string pageToken

    Необязательный. Токен страницы из предыдущего вызова files.list .

    Тело запроса

    Тело запроса должно быть пустым.

    Пример запроса

    Питон

    print("My files:")
    for f in genai.list_files():
        print("  ", f.name)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const listFilesResponse = await fileManager.listFiles();
    
    // View the response.
    for (const file of listFilesResponse.files) {
      console.log(`name: ${file.name} | display name: ${file.displayName}`);
    }

    Тело ответа

    Ответ для files.list .

    В случае успеха тело ответа содержит данные следующей структуры:

    Поля
    объект files[] object ( File )

    Список File s.

    следующая string nextPageToken

    Токен, который можно отправить как pageToken в последующий вызов files.list .

    JSON-представление
    {
      "files": [
        {
          object (File)
        }
      ],
      "nextPageToken": string
    }

    Метод: files.delete

    Удаляет File .

    Конечная точка

    удалить https://generativelanguage.googleapis.com/v1beta/{name=files/*}

    Параметры пути

    string name

    Необходимый. Имя File , который нужно удалить. Пример: files/abc-123 Он принимает форму files/{file} .

    Тело запроса

    Тело запроса должно быть пустым.

    Пример запроса

    Питон

    myfile = genai.upload_file(media / "poem.txt")
    
    myfile.delete()
    
    try:
        # Error.
        model = genai.GenerativeModel("gemini-1.5-flash")
        result = model.generate_content([myfile, "Describe this file."])
    except google.api_core.exceptions.PermissionDenied:
        pass

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Delete the file.
    await fileManager.deleteFile(uploadResult.file.name);
    
    console.log(`Deleted ${uploadResult.file.displayName}`);

    Тело ответа

    В случае успеха тело ответа пустое.

    Ресурс REST: файлы

    Ресурс: Файл

    Файл, загруженный в API.

    JSON-представление
    {
      "name": string,
      "displayName": string,
      "mimeType": string,
      "sizeBytes": string,
      "createTime": string,
      "updateTime": string,
      "expirationTime": string,
      "sha256Hash": string,
      "uri": string,
      "state": enum (State),
      "error": {
        object (Status)
      },
    
      // Union field metadata can be only one of the following:
      "videoMetadata": {
        object (VideoMetadata)
      }
      // End of list of possible types for union field metadata.
    }
    Поля
    string name

    Неизменный. Идентификатор. Имя File ресурса. Идентификатор (имя, исключая префикс «files/») может содержать до 40 символов, состоящих из строчных букв, цифр или дефисов (-). Идентификатор не может начинаться или заканчиваться тире. Если при создании имя пусто, будет создано уникальное имя. Пример: files/123-456

    string displayName

    Необязательный. Удобочитаемое отображаемое имя File . Отображаемое имя должно содержать не более 512 символов, включая пробелы. Пример: «Приветственное изображение».

    string mimeType

    Только вывод. MIME-тип файла.

    строка sizeBytes string ( int64 format)

    Только вывод. Размер файла в байтах.

    строка createTime string ( Timestamp format)

    Только вывод. Временная метка создания File .

    Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: "2014-10-02T15:01:23Z" и "2014-10-02T15:01:23.045123456Z" .

    Строка updateTime string ( Timestamp format)

    Только вывод. Временная метка последнего обновления File .

    Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: "2014-10-02T15:01:23Z" и "2014-10-02T15:01:23.045123456Z" .

    строка expirationTime string ( Timestamp format)

    Только вывод. Временная метка, когда File будет удален. Устанавливается только в том случае, если срок действия File истекает.

    Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: "2014-10-02T15:01:23Z" и "2014-10-02T15:01:23.045123456Z" .

    строка sha256Hash string ( bytes format)

    Только вывод. SHA-256 хеш загруженных байтов.

    Строка в кодировке Base64.

    string uri

    Только вывод. URI File .

    перечисление state enum ( State )

    Только вывод. Состояние обработки файла.

    объект error object ( Status )

    Только вывод. Статус ошибки, если обработка файла не удалась.

    metadata поля объединения. Метаданные для файла. metadata могут быть только одним из следующих:
    объект videoMetadata object ( VideoMetadata )

    Только вывод. Метаданные для видео.

    ВидеоМетаданные

    Метаданные для File .

    JSON-представление
    {
      "videoDuration": string
    }
    Поля
    строка videoDuration string ( Duration format)

    Продолжительность видео.

    Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « s ». Пример: "3.5s" .

    Состояние

    Состояния жизненного цикла файла.

    Перечисления
    STATE_UNSPECIFIED Значение по умолчанию. Это значение используется, если состояние опущено.
    PROCESSING Файл обрабатывается и пока не может быть использован для вывода.
    ACTIVE Файл обработан и доступен для вывода.
    FAILED Не удалось обработать файл.

    Положение дел

    Тип Status определяет логическую модель ошибок, подходящую для различных сред программирования, включая API REST и API RPC. Он используется gRPC . Каждое сообщение Status содержит три части данных: код ошибки, сообщение об ошибке и сведения об ошибке.

    Подробнее об этой модели ошибок и о том, как с ней работать, можно узнать в API Design Guide .

    JSON-представление
    {
      "code": integer,
      "message": string,
      "details": [
        {
          "@type": string,
          field1: ...,
          ...
        }
      ]
    }
    Поля
    integer code

    Код состояния, который должен быть значением перечисления google.rpc.Code .

    string message

    Сообщение об ошибке для разработчика, которое должно быть на английском языке. Любое сообщение об ошибке, обращенное к пользователю, должно быть локализовано и отправлено в поле google.rpc.Status.details или локализовано клиентом.

    details[] object

    Список сообщений, содержащих сведения об ошибке. Существует общий набор типов сообщений для использования API.

    Объект, содержащий поля произвольного типа. Дополнительное поле "@type" содержит URI, идентифицирующий тип. Пример: { "id": 1234, "@type": "types.example.com/standard/id" } .