Using files

رابط برنامه‌نویسی Gemini از آپلود فایل‌های رسانه‌ای جدا از ورودی اعلان پشتیبانی می‌کند و به شما امکان می‌دهد از رسانه‌های خود در چندین درخواست و اعلان مختلف استفاده مجدد کنید. برای جزئیات بیشتر، راهنمای اعلان با رسانه را بررسی کنید.

روش: media.upload

داده‌ها را در ragStore آپلود می‌کند، قبل از ذخیره آنها در یک سند RagStore، پیش‌پردازش‌ها و تکه‌ها را انجام می‌دهد.

نقطه پایانی

  • آپلود URI، برای درخواست‌های آپلود رسانه:
  • پست https: / /generativelanguage.googleapis.com /upload /v1beta /{ragStoreName=ragStores /*}:uploadToRagStore
  • آدرس URL فراداده، برای درخواست‌های فقط فراداده:
  • پست https: / /generativelanguage.googleapis.com /v1beta /{ragStoreName=ragStores /*}:uploadToRagStore

    پارامترهای مسیر

    string ragStoreName

    الزامی. تغییرناپذیر. نام RagStore که فایل در آن آپلود می‌شود. مثال: ragStores/my-rag-store-123 این مقدار به شکل ragStores/{ragstore} است.

    درخواست بدنه

    بدنه درخواست شامل داده‌هایی با ساختار زیر است:

    فیلدها
    string displayName

    اختیاری. نام سند ایجاد شده را نمایش می‌دهد.

    شیء customMetadata[] object ( CustomMetadata )

    فراداده‌های سفارشی که باید با داده‌ها مرتبط شوند.

    شیء chunkingConfig object ( ChunkingConfig )

    اختیاری. پیکربندی برای اطلاع‌رسانی به سرویس در مورد نحوه‌ی قطعه‌بندی داده‌ها. در صورت عدم ارائه، سرویس از پارامترهای پیش‌فرض استفاده خواهد کرد.

    string mimeType

    اختیاری. نوع MIME داده‌ها. در صورت عدم ارائه، از محتوای آپلود شده استنباط خواهد شد.

    بدنه پاسخ

    این یک کپی از google.longrunning.Operation است. ما باید آن را کپی کنیم زیرا برای تعامل با scotty، باید یک فیلد مخصوص scotty اضافه کنیم که نمی‌توان آن را در پروتوتایپ Operation سطح بالا اضافه کرد.

    در صورت موفقیت، بدنه پاسخ شامل داده‌هایی با ساختار زیر است:

    فیلدها
    string name

    نام اختصاص داده شده توسط سرور، که فقط در همان سرویسی که در ابتدا آن را برمی‌گرداند، منحصر به فرد است. اگر از نگاشت پیش‌فرض HTTP استفاده می‌کنید، name باید نام منبعی باشد که به operations/{unique_id} ختم می‌شود.

    object metadata

    فراداده‌های مختص سرویس مرتبط با عملیات. معمولاً شامل اطلاعات پیشرفت و فراداده‌های رایج مانند زمان ایجاد است. برخی از سرویس‌ها ممکن است چنین فراداده‌ای را ارائه ندهند. هر متدی که یک عملیات طولانی مدت را برمی‌گرداند، باید نوع فراداده را، در صورت وجود، مستند کند.

    یک شیء حاوی فیلدهایی از نوع دلخواه. یک فیلد اضافی "@type" حاوی یک URI است که نوع را مشخص می‌کند. مثال: { "id": 1234, "@type": "types.example.com/standard/id" } .

    boolean done

    اگر مقدار آن false باشد، به این معنی است که عملیات هنوز در حال انجام است. اگر true ، عملیات تکمیل شده و error یا response در دسترس است.

    result Union type
    نتیجه عملیات، که می‌تواند یک error یا یک response معتبر باشد. اگر done == false باشد، نه error و نه response تنظیم نمی‌شوند. اگر done == true باشد، دقیقاً یکی از error یا response می‌تواند تنظیم شود. برخی از سرویس‌ها ممکن است نتیجه را ارائه ندهند. result فقط می‌تواند یکی از موارد زیر باشد:
    شیء error object ( Status )

    نتیجه خطای عملیات در صورت عدم موفقیت یا لغو.

    object response

    پاسخ عادی و موفقیت‌آمیز عملیات. اگر متد اصلی هیچ داده‌ای مانند Delete در صورت موفقیت برنگرداند، پاسخ google.protobuf.Empty خواهد بود. اگر متد اصلی Get / Create / Update استاندارد باشد، پاسخ باید resource باشد. برای متدهای دیگر، پاسخ باید از نوع XxxResponse باشد، که در آن Xxx نام متد اصلی است. به عنوان مثال، اگر نام متد اصلی TakeSnapshot() باشد، نوع پاسخ استنباط شده TakeSnapshotResponse خواهد بود.

    یک شیء حاوی فیلدهایی از نوع دلخواه. یک فیلد اضافی "@type" حاوی یک URI است که نوع را مشخص می‌کند. مثال: { "id": 1234, "@type": "types.example.com/standard/id" } .

    نمایش JSON
    {
      "name": string,
      "metadata": {
        "@type": string,
        field1: ...,
        ...
      },
      "done": boolean,
    
      // result
      "error": {
        object (Status)
      },
      "response": {
        "@type": string,
        field1: ...,
        ...
      }
      // Union type
    }

    پیکربندی قطعه‌بندی

    پارامترهایی برای اعلام نحوه قطعه‌بندی فایل به سرویس. الهام گرفته از google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto

    فیلدها
    config Union type
    پیکربندی قطعه‌بندی مورد استفاده در config . می‌تواند فقط یکی از موارد زیر باشد:
    شیء whiteSpaceConfig object ( WhiteSpaceConfig )

    پیکربندی تقسیم‌بندی فضای سفید.

    نمایش JSON
    {
    
      // config
      "whiteSpaceConfig": {
        object (WhiteSpaceConfig)
      }
      // Union type
    }

    پیکربندی فضای سفید

    پیکربندی برای الگوریتم قطعه‌بندی فضای سفید [فضای سفید محدود شده].

    فیلدها
    integer maxTokensPerChunk

    حداکثر تعداد توکن‌ها در هر قطعه. توکن‌ها به عنوان کلماتی برای این الگوریتم قطعه‌بندی تعریف می‌شوند. توجه: ما توکن‌ها را به عنوان کلماتی تعریف می‌کنیم که بر خلاف خروجی یک توکن‌ساز، توسط فضای خالی تقسیم شده‌اند. پنجره متن آخرین مدل جاسازی جمینی از تاریخ 2025-04-17 در حال حاضر 8192 توکن است. ما فرض می‌کنیم که میانگین کلمه 5 کاراکتر است. بنابراین، حد بالا را روی 2**9 قرار می‌دهیم که 512 کلمه یا 2560 توکن است، با فرض بدترین حالت یک کاراکتر در هر توکن. این یک تخمین محافظه‌کارانه است که برای جلوگیری از سرریز پنجره متن در نظر گرفته شده است.

    integer maxOverlapTokens

    حداکثر تعداد توکن‌های همپوشانی بین دو قطعه مجاور.

    نمایش JSON
    {
      "maxTokensPerChunk": integer,
      "maxOverlapTokens": integer
    }

    روش: files.get

    متادیتای File داده شده را دریافت می‌کند.

    نقطه پایانی

    دریافت https: / /generativelanguage.googleapis.com /v1beta /{name=files /*}

    پارامترهای مسیر

    string name

    الزامی. نام File که قرار است دریافت شود. مثال: files/abc-123 این پارامتر به شکل files/{file} است.

    درخواست بدنه

    بدنه درخواست باید خالی باشد.

    درخواست نمونه

    پایتون

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "poem.txt")
    file_name = myfile.name
    print(file_name)  # "files/*"
    
    myfile = client.files.get(name=file_name)
    print(myfile)

    نود جی اس

    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    const myfile = await ai.files.upload({
      file: path.join(media, "poem.txt"),
    });
    const fileName = myfile.name;
    console.log(fileName);
    
    const fetchedFile = await ai.files.get({ name: fileName });
    console.log(fetchedFile);

    برو

    ctx := context.Background()
    client, err := genai.NewClient(ctx, &genai.ClientConfig{
    	APIKey:  os.Getenv("GEMINI_API_KEY"),
    	Backend: genai.BackendGeminiAPI,
    })
    if err != nil {
    	log.Fatal(err)
    }
    myfile, err := client.Files.UploadFromPath(
    	ctx,
    	filepath.Join(getMedia(), "poem.txt"), 
    	&genai.UploadFileConfig{
    		MIMEType: "text/plain",
    	},
    )
    if err != nil {
    	log.Fatal(err)
    }
    fileName := myfile.Name
    fmt.Println(fileName)
    file, err := client.Files.Get(ctx, fileName, nil)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println(file)

    پوسته

    name=$(jq ".file.name" file_info.json)
    # Get the file of interest to check state
    curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
    # Print some information about the file you got
    name=$(jq ".file.name" file_info.json)
    echo name=$name
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri

    بدنه پاسخ

    در صورت موفقیت، بدنه پاسخ شامل نمونه‌ای از File است.

    روش: files.list

    فراداده‌های مربوط به File که متعلق به پروژه درخواست‌کننده هستند را فهرست می‌کند.

    نقطه پایانی

    دریافت https: / /generativelanguage.googleapis.com /v1beta /files

    پارامترهای پرس و جو

    integer pageSize

    اختیاری. حداکثر تعداد File برای برگرداندن در هر صفحه. اگر مشخص نشود، پیش‌فرض ۱۰ است. حداکثر pageSize ۱۰۰ است.

    string pageToken

    اختیاری. یک توکن صفحه از فراخوانی قبلی files.list .

    درخواست بدنه

    بدنه درخواست باید خالی باشد.

    درخواست نمونه

    پایتون

    from google import genai
    
    client = genai.Client()
    print("My files:")
    for f in client.files.list():
        print("  ", f.name)

    نود جی اس

    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    console.log("My files:");
    // Using the pager style to list files
    const pager = await ai.files.list({ config: { pageSize: 10 } });
    let page = pager.page;
    const names = [];
    while (true) {
      for (const f of page) {
        console.log("  ", f.name);
        names.push(f.name);
      }
      if (!pager.hasNextPage()) break;
      page = await pager.nextPage();
    }

    برو

    ctx := context.Background()
    client, err := genai.NewClient(ctx, &genai.ClientConfig{
    	APIKey:  os.Getenv("GEMINI_API_KEY"),
    	Backend: genai.BackendGeminiAPI,
    })
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("My files:")
    page, err := client.Files.List(ctx, nil)
    if err != nil {
    	log.Fatal(err)
    }
    for _, f := range page.Items {
    	fmt.Println("  ", f.Name)
    }

    پوسته

    echo "My files: "
    
    curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GEMINI_API_KEY"

    بدنه پاسخ

    پاسخ برای files.list .

    در صورت موفقیت، بدنه پاسخ شامل داده‌هایی با ساختار زیر است:

    فیلدها
    شیء files[] object ( File )

    فهرست File s.

    string nextPageToken

    یک توکن که می‌تواند به عنوان یک pageToken به فراخوانی بعدی files.list ارسال شود.

    نمایش JSON
    {
      "files": [
        {
          object (File)
        }
      ],
      "nextPageToken": string
    }

    روش: فایل‌ها.حذف

    File را حذف می‌کند.

    نقطه پایانی

    حذف https: / /generativelanguage.googleapis.com /v1beta /{name=files /*}

    پارامترهای مسیر

    string name

    الزامی. نام File که قرار است حذف شود. مثال: files/abc-123 این پارامتر به شکل files/{file} است.

    درخواست بدنه

    بدنه درخواست باید خالی باشد.

    درخواست نمونه

    پایتون

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "poem.txt")
    
    client.files.delete(name=myfile.name)
    
    try:
        result = client.models.generate_content(
            model="gemini-2.0-flash", contents=[myfile, "Describe this file."]
        )
        print(result)
    except genai.errors.ClientError:
        pass

    نود جی اس

    // The Gen AI SDK for TypeScript and JavaScript is in preview.
    // Some features have not been implemented.

    برو

    ctx := context.Background()
    client, err := genai.NewClient(ctx, &genai.ClientConfig{
    	APIKey:  os.Getenv("GEMINI_API_KEY"),
    	Backend: genai.BackendGeminiAPI,
    })
    if err != nil {
    	log.Fatal(err)
    }
    myfile, err := client.Files.UploadFromPath(
    	ctx, 
    	filepath.Join(getMedia(), "poem.txt"), 
    	&genai.UploadFileConfig{
    		MIMEType: "text/plain",
    	},
    )
    if err != nil {
    	log.Fatal(err)
    }
    // Delete the file.
    _, err = client.Files.Delete(ctx, myfile.Name, nil)
    if err != nil {
    	log.Fatal(err)
    }
    // Attempt to use the deleted file.
    parts := []*genai.Part{
    	genai.NewPartFromURI(myfile.URI, myfile.MIMEType,),
    	genai.NewPartFromText("Describe this file."),
    }
    
    contents := []*genai.Content{
    	genai.NewContentFromParts(parts, genai.RoleUser),
    }
    
    _, err = client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
    // Expect an error when using a deleted file.
    if err != nil {
    	return nil
    }
    return fmt.Errorf("expected an error when using deleted file")

    پوسته

    curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY

    بدنه پاسخ

    در صورت موفقیت، بدنه پاسخ یک شیء JSON خالی خواهد بود.

    منبع REST: فایل‌ها

    منبع: فایل

    فایلی در API آپلود شد. شناسه بعدی: ۱۵

    فیلدها
    string name

    تغییرناپذیر. شناسه. نام منبع File . شناسه (نام به استثنای پیشوند "files/") می‌تواند شامل حداکثر ۴۰ کاراکتر باشد که حروف کوچک و عددی یا خط تیره (-) باشند. شناسه نمی‌تواند با خط تیره شروع یا پایان یابد. اگر نام در هنگام ایجاد خالی باشد، یک نام منحصر به فرد ایجاد می‌شود. مثال: files/123-456

    string displayName

    اختیاری. نام نمایشی قابل خواندن توسط انسان برای File . نام نمایشی نباید بیش از ۵۱۲ کاراکتر، شامل فاصله‌ها، باشد. مثال: "تصویر خوش آمدید"

    string mimeType

    فقط خروجی. نوع MIME فایل.

    string ( int64 format) sizeBytes (با فرمت int64)

    فقط خروجی. اندازه فایل بر حسب بایت.

    رشته‌ی createTime string ( Timestamp format)

    فقط خروجی. مهر زمانیِ ایجاد File .

    از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

    رشته updateTime string ( Timestamp format)

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

    از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

    string ( Timestamp format) expirationTime (با فرمت مهر زمان)

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

    از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

    string ( bytes format) sha256Hash (با فرمت بایت)

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

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

    string uri

    فقط خروجی. url File .

    downloadUri string

    فقط خروجی. آدرس دانلود File .

    شمارشگر state enum ( State )

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

    شمارش source enum ( Source )

    منبع فایل.

    شیء error object ( Status )

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

    Union type metadata
    فراداده برای فایل. metadata می‌تواند فقط یکی از موارد زیر باشد:
    شیء فراداده videoMetadata object ( VideoFileMetadata )

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

    نمایش JSON
    {
      "name": string,
      "displayName": string,
      "mimeType": string,
      "sizeBytes": string,
      "createTime": string,
      "updateTime": string,
      "expirationTime": string,
      "sha256Hash": string,
      "uri": string,
      "downloadUri": string,
      "state": enum (State),
      "source": enum (Source),
      "error": {
        object (Status)
      },
    
      // metadata
      "videoMetadata": {
        object (VideoFileMetadata)
      }
      // Union type
    }

    فراداده فایل ویدیویی

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

    فیلدها
    رشته videoDuration string ( Duration format)

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

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

    نمایش JSON
    {
      "videoDuration": string
    }

    ایالت

    حالت‌هایی برای چرخه حیات یک فایل.

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

    منبع

    انوم‌ها
    SOURCE_UNSPECIFIED در صورتی که منبع مشخص نشده باشد، استفاده می‌شود.
    UPLOADED نشان می‌دهد که فایل توسط کاربر آپلود شده است.
    GENERATED نشان می‌دهد که فایل توسط گوگل ایجاد شده است.
    REGISTERED نشان می‌دهد که فایل ثبت شده است، یعنی یک فایل Google Cloud Storage.

    وضعیت

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

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

    فیلدها
    integer code

    کد وضعیت، که باید یک مقدار شمارشی از google.rpc.Code باشد.

    string message

    یک پیام خطای مربوط به توسعه‌دهنده که باید به زبان انگلیسی باشد. هرگونه پیام خطای مربوط به کاربر باید بومی‌سازی شده و در فیلد google.rpc.Status.details ارسال شود، یا توسط کلاینت بومی‌سازی شود.

    details[] object

    فهرستی از پیام‌هایی که جزئیات خطا را در خود دارند. مجموعه‌ای مشترک از انواع پیام‌ها برای استفاده توسط APIها وجود دارد.

    یک شیء حاوی فیلدهایی از نوع دلخواه. یک فیلد اضافی "@type" حاوی یک URI است که نوع را مشخص می‌کند. مثال: { "id": 1234, "@type": "types.example.com/standard/id" } .

    نمایش JSON
    {
      "code": integer,
      "message": string,
      "details": [
        {
          "@type": string,
          field1: ...,
          ...
        }
      ]
    }