Using files

روش: media.upload

یک File ایجاد می کند.

نقطه پایانی

آپلود uri، برای درخواست های بارگذاری رسانه:
«پست
https://generativelanguage.googleapis.com/upload/v1beta/files

  • URI فراداده، برای درخواست‌های فقط فراداده:
    POST https://generativelanguage.googleapis.com/v1beta/files URL از دستور GRPC Transcoding استفاده می کند.
  • درخواست بدن

    بدنه درخواست حاوی داده هایی با ساختار زیر است:

    زمینه های
    شی 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 "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته updateTime string ( Timestamp format)

    فقط خروجی مهر زمانی آخرین به‌روزرسانی File .

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته expirationTime string ( Timestamp format)

    فقط خروجی مهر زمانی زمانی که File حذف خواهد شد. فقط در صورتی تنظیم کنید که File برنامه ریزی شده منقضی شود.

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته sha256Hash string ( bytes format)

    فقط خروجی SHA-256 هش بایت های آپلود شده.

    رشته ای با کد base64.

    string uri

    فقط خروجی uri of the File .

    state enum ( State )

    فقط خروجی وضعیت پردازش فایل

    موضوع error object ( Status )

    فقط خروجی اگر پردازش فایل انجام نشد، وضعیت خطا.

    metadata میدان اتحادیه فراداده برای فایل metadata تنها می تواند یکی از موارد زیر باشد:
    شئ videoMetadata object ( VideoMetadata )

    فقط خروجی فراداده برای یک ویدیو.

    داده های ویدیویی

    فراداده برای یک File ویدیویی.

    نمایندگی JSON
    {
      "videoDuration": string
    }
    زمینه های
    رشته videoDuration string ( Duration format)

    مدت زمان ویدیو.

    مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' s ' ختم می شود. مثال: "3.5s" .

    حالت

    وضعیت برای چرخه حیات یک فایل.

    Enums
    STATE_UNSPECIFIED مقدار پیش فرض اگر حالت حذف شود از این مقدار استفاده می شود.
    PROCESSING فایل در حال پردازش است و هنوز نمی توان از آن برای استنتاج استفاده کرد.
    ACTIVE فایل پردازش شده و برای استنباط در دسترس است.
    FAILED پردازش فایل ناموفق بود.

    وضعیت

    نوع Status یک مدل خطای منطقی را تعریف می کند که برای محیط های برنامه نویسی مختلف، از جمله REST API و RPC API مناسب است. توسط gRPC استفاده می شود. هر پیام Status شامل سه داده است: کد خطا، پیام خطا و جزئیات خطا.

    در راهنمای طراحی API می‌توانید درباره این مدل خطا و نحوه کار با آن اطلاعات بیشتری کسب کنید.

    نمایندگی 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" } .