Using files

API-ja Gemini mbështet ngarkimin e skedarëve media veçmas nga hyrja e kërkesës, duke lejuar që media juaj të ripërdoret në kërkesa dhe kërkesa të shumëfishta. Për më shumë detaje, shikoni udhëzuesin "Nxitja me media" .

Metoda: media.upload

Ngarkon të dhënat në një ragStore, i përpunon paraprakisht dhe i bën copëzat përpara se t'i ruajë në një dokument RagStore.

Pika e Fundit

  • URI i ngarkimit, për kërkesat e ngarkimit të medias:
  • posto https: / /generativelanguage.googleapis.com /upload /v1beta /{ragStoreName=ragStores /*}:uploadToRagStore
  • URI i meta të dhënave, për kërkesat vetëm për meta të dhëna:
  • posto https: / /generativelanguage.googleapis.com /v1beta /{ragStoreName=ragStores /*}:uploadToRagStore

    Parametrat e shtegut

    string ragStoreName

    E detyrueshme. E pandryshueshme. Emri i RagStore ku do të ngarkohet skedari. Shembull: ragStores/my-rag-store-123 Merr formën ragStores/{ragstore} .

    Trupi i kërkesës

    Trupi i kërkesës përmban të dhëna me strukturën e mëposhtme:

    Fushat
    string displayName të Shfaqjes

    Opsionale. Emri i shfaqur i dokumentit të krijuar.

    customMetadata[] object ( CustomMetadata )

    Meta të dhëna të personalizuara që do të shoqërohen me të dhënat.

    objekti chunkingConfig object ( ChunkingConfig )

    Opsionale. Konfigurim për t'i treguar shërbimit se si t'i ndajë të dhënat në pjesë të vogla. Nëse nuk jepet, shërbimi do të përdorë parametra të paracaktuar.

    string mimeType

    Opsionale. Lloji MIME i të dhënave. Nëse nuk jepet, do të nxirret nga përmbajtja e ngarkuar.

    Trupi i përgjigjes

    Kjo është një kopje e google.longrunning.Operation. Duhet ta kopjojmë sepse për të bashkëvepruar me scotty, duhet të shtojmë një fushë specifike për scotty që nuk mund të shtohet në proto-n e Operacionit të nivelit të lartë.

    Nëse është i suksesshëm, trupi i përgjigjes përmban të dhëna me strukturën e mëposhtme:

    Fushat
    string name

    Emri i caktuar nga serveri, i cili është unik vetëm brenda të njëjtit shërbim që e kthen fillimisht. Nëse përdorni hartëzimin HTTP të parazgjedhur, name duhet të jetë një emër burimi që mbaron me operations/{unique_id} .

    object metadata

    Meta të dhëna specifike për shërbimin që lidhen me operacionin. Ato zakonisht përmbajnë informacion mbi progresin dhe meta të dhëna të zakonshme, siç është koha e krijimit. Disa shërbime mund të mos ofrojnë meta të dhëna të tilla. Çdo metodë që kthen një operacion afatgjatë duhet të dokumentojë llojin e meta të dhënave, nëse ka.

    Një objekt që përmban fusha të një lloji arbitrar. Një fushë shtesë "@type" përmban një URI që identifikon llojin. Shembull: { "id": 1234, "@type": "types.example.com/standard/id" } .

    done boolean

    Nëse vlera është false , kjo do të thotë që operacioni është ende në vazhdim. Nëse true , operacioni ka përfunduar dhe është i disponueshëm ose error ose response .

    result Union type
    Rezultati i operacionit, i cili mund të jetë ose një error ose një response e vlefshme. Nëse done == false , as error dhe as response nuk caktohen. Nëse done == true , mund të caktohet saktësisht një nga error ose response . Disa shërbime mund të mos e japin rezultatin. result mund të jetë vetëm një nga të mëposhtmet:
    error object ( Status )

    Rezultati i gabimit të operacionit në rast dështimi ose anulimi.

    object response

    Përgjigja normale dhe e suksesshme e operacionit. Nëse metoda origjinale nuk kthen të dhëna mbi suksesin, si p.sh. Delete , përgjigja është google.protobuf.Empty . Nëse metoda origjinale është standarde Get / Create / Update , përgjigja duhet të jetë burimi. Për metodat e tjera, përgjigja duhet të ketë llojin XxxResponse , ku Xxx është emri i metodës origjinale. Për shembull, nëse emri i metodës origjinale është TakeSnapshot() , lloji i përgjigjes së nxjerrë është TakeSnapshotResponse .

    Një objekt që përmban fusha të një lloji arbitrar. Një fushë shtesë "@type" përmban një URI që identifikon llojin. Shembull: { "id": 1234, "@type": "types.example.com/standard/id" } .

    Përfaqësimi JSON
    {
      "name": string,
      "metadata": {
        "@type": string,
        field1: ...,
        ...
      },
      "done": boolean,
    
      // result
      "error": {
        object (Status)
      },
      "response": {
        "@type": string,
        field1: ...,
        ...
      }
      // Union type
    }

    ChunkingConfig

    Parametrat për t'i treguar shërbimit se si ta ndajë skedarin në copa të vogla. I frymëzuar nga google3/cloud/ai/platform/extension/lib/retrieval/config/chunker_config.proto

    Fushat
    Union type config
    Konfigurimi i chunking-ut që do të përdoret config mund të jetë vetëm një nga të mëposhtmet:
    object ( WhiteSpaceConfig ) whiteSpaceConfig (WhiteSpaceConfig)

    Konfigurimi i ndarjes së hapësirës së bardhë.

    Përfaqësimi JSON
    {
    
      // config
      "whiteSpaceConfig": {
        object (WhiteSpaceConfig)
      }
      // Union type
    }

    Konfigurimi i Hapësirës së Bardhë

    Konfigurimi për një algoritëm të ndarjes së hapësirës së bardhë [me hapësirë ​​të bardhë të kufizuar].

    Fushat
    integer maxTokensPerChunk

    Numri maksimal i tokenëve për copë. Tokenët përcaktohen si fjalë për këtë algoritëm të copëzimit. Shënim: ne po i përcaktojmë tokenët si fjalë të ndara nga hapësira boshe në krahasim me rezultatin e një tokenizuesi. Dritarja e kontekstit të modelit më të fundit të ngulitjes Gemini që nga 17-04-2025 është aktualisht 8192 tokena. Ne supozojmë se fjala mesatare është 5 karaktere. Prandaj, ne e vendosim kufirin e sipërm në 2**9, që është 512 fjalë, ose 2560 tokena, duke supozuar në rastin më të keq një karakter për token. Ky është një vlerësim konservativ që synon të parandalojë tejmbushjen e dritares së kontekstit.

    integer maxOverlapTokens

    Numri maksimal i tokenëve që mbivendosen midis dy copëzave ngjitur.

    Përfaqësimi JSON
    {
      "maxTokensPerChunk": integer,
      "maxOverlapTokens": integer
    }

    Metoda: files.get

    Merr meta të dhënat për File e dhënë.

    Pika e Fundit

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

    Parametrat e shtegut

    string name

    E detyrueshme. Emri i File që do të merret. Shembull: files/abc-123 Merr formën files/{file} .

    Trupi i kërkesës

    Trupi i kërkesës duhet të jetë bosh.

    Shembull kërkese

    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);

    Shko

    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)

    Guaskë

    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

    Trupi i përgjigjes

    Nëse është e suksesshme, trupi i përgjigjes përmban një instancë të File .

    Metoda: files.list

    Liston metadatat për File në pronësi të projektit kërkues.

    Pika e Fundit

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

    Parametrat e pyetjes

    pageSize integer

    Opsionale. Numri maksimal i File për t'u kthyer për faqe. Nëse nuk specifikohet, vlera parazgjedhur është 10. Madhësia maksimale pageSize është 100.

    string pageToken it

    Opsionale. Një shenjë faqeje nga një thirrje e mëparshme files.list .

    Trupi i kërkesës

    Trupi i kërkesës duhet të jetë bosh.

    Shembull kërkese

    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();
    }

    Shko

    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)
    }

    Guaskë

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

    Trupi i përgjigjes

    Përgjigje për files.list .

    Nëse është i suksesshëm, trupi i përgjigjes përmban të dhëna me strukturën e mëposhtme:

    Fushat
    object ( File ) files[] (File)

    Lista e File s.

    string nextPageToken

    Një token që mund të dërgohet si pageToken në një thirrje pasuese files.list .

    Përfaqësimi JSON
    {
      "files": [
        {
          object (File)
        }
      ],
      "nextPageToken": string
    }

    Metoda: files.delete

    Fshin File .

    Pika e Fundit

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

    Parametrat e shtegut

    string name

    E detyrueshme. Emri i File që do të fshihet. Shembull: files/abc-123 Merr formën files/{file} .

    Trupi i kërkesës

    Trupi i kërkesës duhet të jetë bosh.

    Shembull kërkese

    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.

    Shko

    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")

    Guaskë

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

    Trupi i përgjigjes

    Nëse është i suksesshëm, trupi i përgjigjes është një objekt JSON bosh.

    Burimi REST: skedarë

    Burimi: Skedar

    Një skedar i ngarkuar në API. ID-ja tjetër: 15

    Fushat
    string name

    I pandryshueshëm. Identifikues. Emri i burimit File . ID-ja (emri duke përjashtuar parashtesën "files/") mund të përmbajë deri në 40 karaktere që janë shkronja të vogla alfanumerike ose viza (-). ID-ja nuk mund të fillojë ose të mbarojë me vizë. Nëse emri është bosh gjatë krijimit, do të gjenerohet një emër unik. Shembull: files/123-456

    string displayName të Shfaqjes

    Opsionale. Emri i shfaqur i lexueshëm nga njeriu për File . Emri i shfaqur nuk duhet të jetë më shumë se 512 karaktere i gjatë, duke përfshirë hapësirat. Shembull: "Imazhi i Mirëseardhjes"

    string mimeType

    Vetëm rezultat. Lloji MIME i skedarit.

    vargu sizeBytes string ( int64 format)

    Vetëm rezultati. Madhësia e skedarit në bajt.

    createTime string ( Timestamp format)

    Vetëm rezultati. Vula kohore e kohës kur u krijua File .

    Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

    vargu updateTime string ( Timestamp format)

    Vetëm rezultati. Vula kohore e përditësimit të fundit të File .

    Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

    Vargu i kohës së expirationTime string ( Timestamp format)

    Vetëm rezultati. Vula kohore se kur do të fshihet File . Caktohet vetëm nëse File është planifikuar të skadojë.

    Përdor RFC 3339, ku rezultati i gjeneruar do të jetë gjithmonë i normalizuar sipas Z-së dhe do të përdorë 0, 3, 6 ose 9 shifra thyesore. Pranohen edhe zhvendosje të tjera përveç "Z". Shembuj: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" ose "2014-10-02T15:01:23+05:30" .

    sha256Hash string ( bytes format)

    Vetëm dalje. Hash SHA-256 i bajteve të ngarkuara.

    Një varg i koduar me base64.

    string uri

    Vetëm rezultati. URI-ja e File .

    string downloadUri

    Vetëm rezultati. URI-ja e shkarkimit të File .

    numërimi i state enum ( State )

    Vetëm rezultati. Gjendja e përpunimit të skedarit.

    source enum ( Source )

    Burimi i Dosjes.

    error object ( Status )

    Vetëm rezultat. Statusi i gabimit nëse përpunimi i skedarit dështoi.

    Union type metadata
    Meta të dhënat për Skedarin. metadata mund të jenë vetëm një nga të mëposhtmet:
    object ( VideoFileMetadata ) videoMetadata (VideoFileMetadata)

    Vetëm rezultate. Meta të dhëna për një video.

    Përfaqësimi 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
    }

    Meta të dhëna të skedarit video

    Meta të dhëna për një File video.

    Fushat
    vargu i videoDuration string ( Duration format)

    Kohëzgjatja e videos.

    Një kohëzgjatje në sekonda me deri në nëntë shifra thyesore, që mbaron me ' s '. Shembull: "3.5s" .

    Përfaqësimi JSON
    {
      "videoDuration": string
    }

    Shteti

    Gjendjet për ciklin jetësor të një Skedari.

    Numërime
    STATE_UNSPECIFIED Vlera e parazgjedhur. Kjo vlerë përdoret nëse gjendja lihet jashtë.
    PROCESSING Skedari po përpunohet dhe nuk mund të përdoret ende për përfundime.
    ACTIVE Skedari është përpunuar dhe është i disponueshëm për nxjerrje përfundimesh.
    FAILED Skedari dështoi në përpunim.

    Burimi

    Numërime
    SOURCE_UNSPECIFIED Përdoret nëse burimi nuk specifikohet.
    UPLOADED Tregon që skedari është ngarkuar nga përdoruesi.
    GENERATED Tregon se skedari është gjeneruar nga Google.
    REGISTERED Tregon se skedari është i regjistruar, dmth. një skedar i Google Cloud Storage.

    Statusi

    Lloji i Status përcakton një model gabimi logjik që është i përshtatshëm për mjedise të ndryshme programimi, duke përfshirë API-të REST dhe API-të RPC. Përdoret nga gRPC . Çdo mesazh Status përmban tre pjesë të të dhënave: kodin e gabimit, mesazhin e gabimit dhe detajet e gabimit.

    Mund të mësoni më shumë rreth këtij modeli gabimi dhe si të punoni me të në Udhëzuesin e Dizajnit të API-t .

    Fushat
    code integer

    Kodi i statusit, i cili duhet të jetë një vlerë enumrimi e google.rpc.Code .

    string message

    Një mesazh gabimi që vjen nga zhvilluesi, i cili duhet të jetë në anglisht. Çdo mesazh gabimi që vjen nga përdoruesi duhet të lokalizohet dhe të dërgohet në fushën google.rpc.Status.details ose të lokalizohet nga klienti.

    details[] object

    Një listë mesazhesh që përmbajnë detajet e gabimit. Ekziston një grup i zakonshëm llojesh mesazhesh që API-të mund të përdorin.

    Një objekt që përmban fusha të një lloji arbitrar. Një fushë shtesë "@type" përmban një URI që identifikon llojin. Shembull: { "id": 1234, "@type": "types.example.com/standard/id" } .

    Përfaqësimi JSON
    {
      "code": integer,
      "message": string,
      "details": [
        {
          "@type": string,
          field1: ...,
          ...
        }
      ]
    }