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

    Opsionale. Emri i shfaqur i dokumentit të krijuar.

    objekti customMetadata[] object ( CustomMetadata )

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

    object ( ChunkingConfig ) chunkingConfig (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" } .

    u 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:
    objekt 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:
    objekti whiteSpaceConfig object ( 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

    Madhësia 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.

    vargu i pageToken string

    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
    objekti files[] object ( 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

    File Skedarin.

    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

    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 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 File .

    string downloadUri

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

    numërimi state enum ( State )

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

    source enum ( Source )

    Burimi i Dosjes.

    objekt 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:
    objekti videoMetadata object ( 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: ...,
          ...
        }
      ]
    }