Using files

Gemini API में, प्रॉम्प्ट के इनपुट से अलग मीडिया फ़ाइलें अपलोड की जा सकती हैं. इससे, एक ही मीडिया फ़ाइल का इस्तेमाल कई अनुरोधों और प्रॉम्प्ट में किया जा सकता है. ज़्यादा जानकारी के लिए, मीडिया का इस्तेमाल करके प्रॉम्प्ट देना गाइड देखें.

तरीका: media.upload

यह डेटा को ragStore में अपलोड करता है. साथ ही, इसे RagStore Document में सेव करने से पहले, प्रीप्रोसेस और चंक करता है.

एंडपॉइंट

  • मीडिया अपलोड करने के अनुरोधों के लिए, अपलोड यूआरआई:
post https://generativelanguage.googleapis.com/upload/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore
  • सिर्फ़ मेटाडेटा के अनुरोधों के लिए मेटाडेटा यूआरआई:
post https://generativelanguage.googleapis.com/v1beta/{ragStoreName=ragStores/*}:uploadToRagStore

पाथ पैरामीटर

ragStoreName string

ज़रूरी है. इम्यूटेबल. RagStore का नाम, जिसमें फ़ाइल अपलोड करनी है. उदाहरण: ragStores/my-rag-store-123 यह ragStores/{ragstore} के फ़ॉर्म में होता है.

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में, इस स्ट्रक्चर का डेटा शामिल होता है:

फ़ील्ड
displayName string

ज़रूरी नहीं. बनाए गए दस्तावेज़ का डिसप्ले नेम.

customMetadata[] object (CustomMetadata)

डेटा से जोड़ा जाने वाला कस्टम मेटाडेटा.

chunkingConfig object (ChunkingConfig)

ज़रूरी नहीं. इस कॉन्फ़िगरेशन से सेवा को यह पता चलता है कि डेटा को कैसे बांटा जाए. अगर यह जानकारी नहीं दी जाती है, तो सेवा डिफ़ॉल्ट पैरामीटर का इस्तेमाल करेगी.

mimeType string

ज़रूरी नहीं. डेटा का MIME टाइप. अगर यह जानकारी नहीं दी जाती है, तो अपलोड किए गए कॉन्टेंट से इसका अनुमान लगाया जाएगा.

जवाब का मुख्य भाग

यह google.longrunning.Operation की कॉपी है. हमें इसे कॉपी करने की ज़रूरत इसलिए है, क्योंकि Scotty के साथ इंटरैक्ट करने के लिए, हमें Scotty के लिए खास तौर पर बनाया गया फ़ील्ड जोड़ना होता है. इसे टॉप लेवल के ऑपरेशन प्रोटो में नहीं जोड़ा जा सकता.

अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.

Fields
name string

सर्वर की ओर से असाइन किया गया नाम. यह नाम सिर्फ़ उसी सेवा के लिए यूनीक होता है जो इसे पहली बार दिखाती है. अगर डिफ़ॉल्ट एचटीटीपी मैपिंग का इस्तेमाल किया जाता है, तो name एक संसाधन का नाम होना चाहिए. इसका आखिरी हिस्सा operations/{unique_id} होना चाहिए.

metadata object

कार्रवाई से जुड़ा, सेवा के हिसाब से मेटाडेटा. आम तौर पर, इसमें प्रोग्रेस की जानकारी और सामान्य मेटाडेटा होता है. जैसे, बनाने का समय. ऐसा हो सकता है कि कुछ सेवाएं इस तरह का मेटाडेटा उपलब्ध न कराएं. लंबे समय तक चलने वाली कार्रवाई को वापस लाने वाले किसी भी तरीके को मेटाडेटा टाइप के बारे में जानकारी देनी चाहिए.

एक ऑब्जेक्ट, जिसमें आर्बिट्ररी टाइप के अलग-अलग फ़ील्ड शामिल हों. एक ऐसा अतिरिक्त फ़ील्ड "@type" जिसमें टाइप की पहचान करने वाला यूआरआई हो. उदाहरण: { "id": 1234, "@type": "types.example.com/standard/id" }.

done boolean

अगर वैल्यू false है, तो इसका मतलब है कि कार्रवाई अब भी चल रही है. अगर वैल्यू true है, तो कार्रवाई पूरी हो गई है और error या response उपलब्ध है.

result Union type
कार्रवाई का नतीजा, जो error या मान्य response हो सकता है. अगर वैल्यू done == false है, तो न तो error और न ही response सेट है. अगर वैल्यू done == true है, तो error या response में से सिर्फ़ एक को सेट किया जा सकता है. ऐसा हो सकता है कि कुछ सेवाएं, नतीजे न दिखाएं. result इनमें से सिर्फ़ एक हो सकता है:
error object (Status)

अगर कार्रवाई पूरी नहीं होती है या रद्द हो जाती है, तो गड़बड़ी का नतीजा.

response object

कार्रवाई का सामान्य और सही रिस्पॉन्स. अगर मूल तरीके से डेटा नहीं मिलता है, जैसे कि Delete, तो जवाब google.protobuf.Empty होता है. अगर ओरिजनल तरीका स्टैंडर्ड Get/Create/Update है, तो जवाब संसाधन होना चाहिए. अन्य तरीकों के लिए, जवाब में टाइप XxxResponse होना चाहिए. यहां Xxx, मूल तरीके का नाम है. उदाहरण के लिए, अगर मूल तरीके का नाम TakeSnapshot() है, तो अनुमानित जवाब का टाइप TakeSnapshotResponse है.

एक ऑब्जेक्ट, जिसमें आर्बिट्ररी टाइप के अलग-अलग फ़ील्ड शामिल हों. एक ऐसा अतिरिक्त फ़ील्ड "@type" जिसमें टाइप की पहचान करने वाला यूआरआई हो. उदाहरण: { "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
}

ChunkingConfig

ये पैरामीटर, सेवा को यह बताने के लिए होते हैं कि फ़ाइल को कैसे बांटा जाए. इन्हें 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
}

WhiteSpaceConfig

व्हाइट स्पेस के आधार पर शब्दों को अलग करने वाले एल्गोरिदम के लिए कॉन्फ़िगरेशन [व्हाइट स्पेस के आधार पर सीमा तय की गई है].

Fields
maxTokensPerChunk integer

हर चंक में ज़्यादा से ज़्यादा टोकन की संख्या. इस चंकिंग एल्गोरिदम के लिए, टोकन को शब्दों के तौर पर तय किया जाता है. ध्यान दें: हम टोकन को व्हाइटस्पेस से अलग किए गए शब्दों के तौर पर तय कर रहे हैं, न कि टोकनाइज़र के आउटपुट के तौर पर. 17-04-2025 तक, Gemini Embedding मॉडल के नए वर्शन की कॉन्टेक्स्ट विंडो में 8,192 टोकन शामिल हैं. हम मानते हैं कि एक शब्द में औसतन पांच वर्ण होते हैं. इसलिए, हमने ऊपरी सीमा को 2**9 पर सेट किया है. इसका मतलब है कि ज़्यादा से ज़्यादा 512 शब्द या 2560 टोकन इस्तेमाल किए जा सकते हैं. ऐसा इसलिए, क्योंकि हम मानते हैं कि सबसे खराब स्थिति में हर टोकन में एक वर्ण होगा. यह एक अनुमान है, ताकि कॉन्टेक्स्ट विंडो में ज़्यादा जानकारी न भरी जा सके.

maxOverlapTokens integer

दो आस-पास के चंक के बीच ओवरलैप होने वाले टोकन की ज़्यादा से ज़्यादा संख्या.

JSON के काेड में दिखाना
{
  "maxTokensPerChunk": integer,
  "maxOverlapTokens": integer
}

तरीका: files.get

दिए गए File के लिए मेटाडेटा मिलता है.

एंडपॉइंट

get https://generativelanguage.googleapis.com/v1beta/{name=files/*}

पाथ पैरामीटर

name string

ज़रूरी है. File का नाम. उदाहरण: files/abc-123 यह files/{file} के फ़ॉर्म में होता है.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

अनुरोध का उदाहरण

Python

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)

Node.js

// 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 के मेटाडेटा की सूची मिलती है.

एंडपॉइंट

get https://generativelanguage.googleapis.com/v1beta/files

क्वेरी पैरामीटर

pageSize integer

ज़रूरी नहीं. हर पेज पर ज़्यादा से ज़्यादा File वापस लाने की संख्या. अगर कोई वैल्यू नहीं दी गई है, तो डिफ़ॉल्ट रूप से 10 का इस्तेमाल किया जाता है. ज़्यादा से ज़्यादा pageSize की वैल्यू 100 हो सकती है.

pageToken string

ज़रूरी नहीं. पिछले files.list कॉल का पेज टोकन.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

अनुरोध का उदाहरण

Python

from google import genai

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

Node.js

// 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 का जवाब.

अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.

Fields
files[] object (File)

File की सूची.

nextPageToken string

यह एक ऐसा टोकन है जिसे बाद में किए जाने वाले files.list कॉल में pageToken के तौर पर भेजा जा सकता है.

JSON के काेड में दिखाना
{
  "files": [
    {
      object (File)
    }
  ],
  "nextPageToken": string
}

तरीका: files.delete

File को मिटाता है.

एंडपॉइंट

delete https://generativelanguage.googleapis.com/v1beta/{name=files/*}

पाथ पैरामीटर

name string

ज़रूरी है. मिटाए जाने वाले File का नाम. उदाहरण: files/abc-123 यह files/{file} के फ़ॉर्म में होता है.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

अनुरोध का उदाहरण

Python

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

Node.js

// 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 रिसॉर्स: files

संसाधन: फ़ाइल

एपीआई में अपलोड की गई फ़ाइल. अगला आईडी: 15

Fields
name string

इम्यूटेबल. आइडेंटिफ़ायर. File संसाधन का नाम. आईडी में ज़्यादा से ज़्यादा 40 वर्ण हो सकते हैं. आईडी में "files/" प्रीफ़िक्स शामिल नहीं होता. आईडी में लोअरकेस अल्फ़ान्यूमेरिक वर्ण या डैश (-) हो सकते हैं. आईडी की शुरुआत या आखिर में डैश नहीं हो सकता. अगर नाम की जगह खाली स्ट्रिंग मौजूद है, तो एक यूनीक नाम जनरेट किया जाएगा. उदाहरण: files/123-456

displayName string

ज़रूरी नहीं. File का डिसप्ले नेम, जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. डिसप्ले नेम में स्पेस मिलाकर 512 से ज़्यादा वर्ण नहीं होने चाहिए. उदाहरण: "वेलकम इमेज"

mimeType string

सिर्फ़ आउटपुट के लिए. फ़ाइल का MIME टाइप.

sizeBytes string (int64 format)

सिर्फ़ आउटपुट के लिए. फ़ाइल का साइज़, बाइट में.

createTime string (Timestamp format)

सिर्फ़ आउटपुट के लिए. File को बनाए जाने का टाइमस्टैंप.

यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" या "2014-10-02T15:01:23+05:30".

updateTime string (Timestamp format)

सिर्फ़ आउटपुट के लिए. File को आखिरी बार अपडेट किए जाने का टाइमस्टैंप.

यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" या "2014-10-02T15:01:23+05:30".

expirationTime string (Timestamp format)

सिर्फ़ आउटपुट के लिए. वह टाइमस्टैंप जब File मिट जाएगा. इस वैल्यू को सिर्फ़ तब सेट करें, जब File की समयसीमा खत्म होने वाली हो.

यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" या "2014-10-02T15:01:23+05:30".

sha256Hash string (bytes format)

सिर्फ़ आउटपुट के लिए. अपलोड किए गए बाइट का SHA-256 हैश.

base64 कोड में बदली गई स्ट्रिंग.

uri string

सिर्फ़ आउटपुट के लिए. File का यूआरआई.

downloadUri string

सिर्फ़ आउटपुट के लिए. File का डाउनलोड यूआरआई.

state enum (State)

सिर्फ़ आउटपुट के लिए. फ़ाइल प्रोसेस होने की स्थिति.

source enum (Source)

फ़ाइल का सोर्स.

error object (Status)

सिर्फ़ आउटपुट के लिए. अगर फ़ाइल प्रोसेस नहीं हो पाती है, तो गड़बड़ी की स्थिति.

metadata Union type
फ़ाइल का मेटाडेटा. 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
}

VideoFileMetadata

वीडियो File का मेटाडेटा.

Fields
videoDuration string (Duration format)

वीडियो की अवधि.

यह अवधि सेकंड में होती है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में 's' होता है. उदाहरण: "3.5s".

JSON के काेड में दिखाना
{
  "videoDuration": string
}

राज्य

किसी फ़ाइल के लाइफ़साइकल की स्थितियां.

Enums
STATE_UNSPECIFIED डिफ़ॉल्ट वैल्यू. अगर राज्य की जानकारी नहीं दी जाती है, तो इस वैल्यू का इस्तेमाल किया जाता है.
PROCESSING फ़ाइल को प्रोसेस किया जा रहा है. इसलिए, फ़िलहाल इसका इस्तेमाल अनुमान लगाने के लिए नहीं किया जा सकता.
ACTIVE फ़ाइल को प्रोसेस कर दिया गया है और अनुमान लगाने के लिए उपलब्ध है.
FAILED फ़ाइल को प्रोसेस नहीं किया जा सका.

स्रोत

Enums
SOURCE_UNSPECIFIED अगर सोर्स की जानकारी नहीं दी गई है, तो इसका इस्तेमाल किया जाता है.
UPLOADED इससे पता चलता है कि फ़ाइल को उपयोगकर्ता ने अपलोड किया है.
GENERATED इससे पता चलता है कि फ़ाइल को Google ने जनरेट किया है.
REGISTERED इससे पता चलता है कि फ़ाइल रजिस्टर की गई है. इसका मतलब है कि यह Google Cloud Storage की फ़ाइल है.

स्थिति

Status टाइप, लॉजिकल गड़बड़ी का एक ऐसा मॉडल तय करता है जो अलग-अलग प्रोग्रामिंग एनवायरमेंट के लिए सही होता है. इनमें REST API और RPC API शामिल हैं. इसका इस्तेमाल gRPC करता है. हर Status मैसेज में तीन तरह का डेटा होता है: गड़बड़ी का कोड, गड़बड़ी का मैसेज, और गड़बड़ी की जानकारी.

इस गड़बड़ी के मॉडल और इसके साथ काम करने के तरीके के बारे में ज़्यादा जानने के लिए, एपीआई डिज़ाइन गाइड पढ़ें.

Fields
code integer

स्टेटस कोड, जो google.rpc.Code की enum वैल्यू होनी चाहिए.

message string

डेवलपर को दिखने वाला गड़बड़ी का मैसेज, जो अंग्रेज़ी में होना चाहिए. उपयोगकर्ता को दिखने वाली गड़बड़ी के किसी भी मैसेज को स्थानीय भाषा में होना चाहिए. साथ ही, उसे google.rpc.Status.details फ़ील्ड में भेजा जाना चाहिए या क्लाइंट की ओर से स्थानीय भाषा में होना चाहिए.

details[] object

मैसेज की सूची, जिसमें गड़बड़ी की जानकारी होती है. एपीआई के इस्तेमाल के लिए, मैसेज टाइप का एक सामान्य सेट होता है.

एक ऑब्जेक्ट, जिसमें आर्बिट्ररी टाइप के अलग-अलग फ़ील्ड शामिल हों. एक ऐसा अतिरिक्त फ़ील्ड "@type" जिसमें टाइप की पहचान करने वाला यूआरआई हो. उदाहरण: { "id": 1234, "@type": "types.example.com/standard/id" }.

JSON के काेड में दिखाना
{
  "code": integer,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}