Using files

জেমিনি এপিআই প্রম্পট ইনপুট থেকে আলাদাভাবে মিডিয়া ফাইল আপলোড করা সমর্থন করে, যার ফলে আপনার মিডিয়া একাধিক অনুরোধ এবং একাধিক প্রম্পটে পুনরায় ব্যবহার করা যায়। আরও বিস্তারিত জানতে, ‘প্রম্পটিং উইথ মিডিয়া’ গাইডটি দেখুন।

পদ্ধতি: মিডিয়া আপলোড

একটি File তৈরি করে।

এন্ডপয়েন্ট

  • মিডিয়া আপলোড অনুরোধের জন্য আপলোড ইউআরআই:
  • পোস্ট https: / /generativelanguage.googleapis.com /upload /v1beta /files
  • মেটাডেটা ইউআরআই, শুধুমাত্র মেটাডেটা-সংক্রান্ত অনুরোধের জন্য:
  • পোস্ট https: / /generativelanguage.googleapis.com /v1beta /files

    অনুরোধকারী শরীর

    অনুরোধের মূল অংশে নিম্নলিখিত কাঠামোসহ ডেটা থাকে:

    ক্ষেত্র
    file object ( File )

    ঐচ্ছিক। যে ফাইলটি তৈরি করা হবে তার মেটাডেটা।

    উদাহরণ অনুরোধ

    ছবি

    পাইথন

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "Cajun_instruments.jpg")
    print(f"{myfile=}")
    
    result = client.models.generate_content(
        model="gemini-2.0-flash",
        contents=[
            myfile,
            "\n\n",
            "Can you tell me about the instruments in this photo?",
        ],
    )
    print(f"{result.text=}")

    নোড.জেএস

    // 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, "Cajun_instruments.jpg"),
      config: { mimeType: "image/jpeg" },
    });
    console.log("Uploaded file:", myfile);
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "\n\n",
        "Can you tell me about the instruments in this photo?",
      ]),
    });
    console.log("result.text=", result.text);

    যান

    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(), "Cajun_instruments.jpg"), 
    	&genai.UploadFileConfig{
    		MIMEType : "image/jpeg",
    	},
    )
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Printf("myfile=%+v\n", myfile)
    
    parts := []*genai.Part{
    	genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
    	genai.NewPartFromText("\n\n"),
    	genai.NewPartFromText("Can you tell me about the instruments in this photo?"),
    }
    
    contents := []*genai.Content{
    	genai.NewContentFromParts(parts, genai.RoleUser),
    }
    
    response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
    if err != nil {
    	log.Fatal(err)
    }
    text := response.Text()
    fmt.Printf("result.text=%s\n", text)

    শেল

    MIME_TYPE=$(file -b --mime-type "${IMG_PATH_2}")
    NUM_BYTES=$(wc -c < "${IMG_PATH_2}")
    DISPLAY_NAME=TEXT
    
    tmp_header_file=upload-header.tmp
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${IMG_PATH_2}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Can you tell me about the instruments in this photo?"},
              {"file_data":
                {"mime_type": "image/jpeg", 
                "file_uri": '$file_uri'}
            }]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json

    অডিও

    পাইথন

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "sample.mp3")
    print(f"{myfile=}")
    
    result = client.models.generate_content(
        model="gemini-2.0-flash", contents=[myfile, "Describe this audio clip"]
    )
    print(f"{result.text=}")

    নোড.জেএস

    // 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, "sample.mp3"),
      config: { mimeType: "audio/mpeg" },
    });
    console.log("Uploaded file:", myfile);
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "Describe this audio clip",
      ]),
    });
    console.log("result.text=", result.text);

    যান

    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(), "sample.mp3"), 
    	&genai.UploadFileConfig{
    		MIMEType : "audio/mpeg",
    	},
    )
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Printf("myfile=%+v\n", myfile)
    
    parts := []*genai.Part{
    	genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
    	genai.NewPartFromText("Describe this audio clip"),
    }
    
    contents := []*genai.Content{
    	genai.NewContentFromParts(parts, genai.RoleUser),
    }
    
    response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
    if err != nil {
    	log.Fatal(err)
    }
    text := response.Text()
    fmt.Printf("result.text=%s\n", text)

    শেল

    MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
    NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
    DISPLAY_NAME=AUDIO
    
    tmp_header_file=upload-header.tmp
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Describe this audio clip"},
              {"file_data":{"mime_type": "audio/mp3", "file_uri": '$file_uri'}}]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json

    পাঠ্য

    পাইথন

    from google import genai
    
    client = genai.Client()
    myfile = client.files.upload(file=media / "poem.txt")
    print(f"{myfile=}")
    
    result = client.models.generate_content(
        model="gemini-2.0-flash",
        contents=[myfile, "\n\n", "Can you add a few more lines to this poem?"],
    )
    print(f"{result.text=}")

    নোড.জেএস

    // 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"),
    });
    console.log("Uploaded file:", myfile);
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "\n\n",
        "Can you add a few more lines to this poem?",
      ]),
    });
    console.log("result.text=", result.text);

    যান

    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)
    }
    fmt.Printf("myfile=%+v\n", myfile)
    
    parts := []*genai.Part{
    	genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
    	genai.NewPartFromText("\n\n"),
    	genai.NewPartFromText("Can you add a few more lines to this poem?"),
    }
    
    contents := []*genai.Content{
    	genai.NewContentFromParts(parts, genai.RoleUser),
    }
    
    response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
    if err != nil {
    	log.Fatal(err)
    }
    text := response.Text()
    fmt.Printf("result.text=%s\n", text)

    শেল

    MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}")
    NUM_BYTES=$(wc -c < "${TEXT_PATH}")
    DISPLAY_NAME=TEXT
    
    tmp_header_file=upload-header.tmp
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${TEXT_PATH}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Can you add a few more lines to this poem?"},
              {"file_data":{"mime_type": "text/plain", "file_uri": '$file_uri'}}]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json
    
    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
    
    curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GEMINI_API_KEY
    

    ভিডিও

    পাইথন

    from google import genai
    import time
    
    client = genai.Client()
    # Video clip (CC BY 3.0) from https://peach.blender.org/download/
    myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
    print(f"{myfile=}")
    
    # Poll until the video file is completely processed (state becomes ACTIVE).
    while not myfile.state or myfile.state.name != "ACTIVE":
        print("Processing video...")
        print("File state:", myfile.state)
        time.sleep(5)
        myfile = client.files.get(name=myfile.name)
    
    result = client.models.generate_content(
        model="gemini-2.0-flash", contents=[myfile, "Describe this video clip"]
    )
    print(f"{result.text=}")

    নোড.জেএস

    // Make sure to include the following import:
    // import {GoogleGenAI} from '@google/genai';
    const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
    let myfile = await ai.files.upload({
      file: path.join(media, "Big_Buck_Bunny.mp4"),
      config: { mimeType: "video/mp4" },
    });
    console.log("Uploaded video file:", myfile);
    
    // Poll until the video file is completely processed (state becomes ACTIVE).
    while (!myfile.state || myfile.state.toString() !== "ACTIVE") {
      console.log("Processing video...");
      console.log("File state: ", myfile.state);
      await sleep(5000);
      myfile = await ai.files.get({ name: myfile.name });
    }
    
    const result = await ai.models.generateContent({
      model: "gemini-2.0-flash",
      contents: createUserContent([
        createPartFromUri(myfile.uri, myfile.mimeType),
        "Describe this video clip",
      ]),
    });
    console.log("result.text=", result.text);

    যান

    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(), "Big_Buck_Bunny.mp4"), 
    	&genai.UploadFileConfig{
    		MIMEType : "video/mp4",
    	},
    )
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Printf("myfile=%+v\n", myfile)
    
    // Poll until the video file is completely processed (state becomes ACTIVE).
    for myfile.State == genai.FileStateUnspecified || myfile.State != genai.FileStateActive {
    	fmt.Println("Processing video...")
    	fmt.Println("File state:", myfile.State)
    	time.Sleep(5 * time.Second)
    
    	myfile, err = client.Files.Get(ctx, myfile.Name, nil)
    	if err != nil {
    		log.Fatal(err)
    	}
    }
    
    parts := []*genai.Part{
    	genai.NewPartFromURI(myfile.URI, myfile.MIMEType),
    	genai.NewPartFromText("Describe this video clip"),
    }
    
    contents := []*genai.Content{
    	genai.NewContentFromParts(parts, genai.RoleUser),
    }
    
    response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
    if err != nil {
    	log.Fatal(err)
    }
    text := response.Text()
    fmt.Printf("result.text=%s\n", text)

    শেল

    MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
    NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
    DISPLAY_NAME=VIDEO_PATH
    
    # Initial resumable request defining metadata.
    # The upload url is in the response headers dump them to a file.
    curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
      -D upload-header.tmp \
      -H "X-Goog-Upload-Protocol: resumable" \
      -H "X-Goog-Upload-Command: start" \
      -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
      -H "Content-Type: application/json" \
      -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null
    
    upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
    rm "${tmp_header_file}"
    
    # Upload the actual bytes.
    curl "${upload_url}" \
      -H "Content-Length: ${NUM_BYTES}" \
      -H "X-Goog-Upload-Offset: 0" \
      -H "X-Goog-Upload-Command: upload, finalize" \
      --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json
    
    file_uri=$(jq ".file.uri" file_info.json)
    echo file_uri=$file_uri
    
    state=$(jq ".file.state" file_info.json)
    echo state=$state
    
    # Ensure the state of the video is 'ACTIVE'
    while [[ "($state)" = *"PROCESSING"* ]];
    do
      echo "Processing video..."
      sleep 5
      # Get the file of interest to check state
      curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
      state=$(jq ".file.state" file_info.json)
    done
    
    # Now generate content using that file
    curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GEMINI_API_KEY" \
        -H 'Content-Type: application/json' \
        -X POST \
        -d '{
          "contents": [{
            "parts":[
              {"text": "Describe this video clip"},
              {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
            }]
           }' 2> /dev/null > response.json
    
    cat response.json
    echo
    
    jq ".candidates[].content.parts[].text" response.json

    পিডিএফ

    পাইথন

    from google import genai
    
    client = genai.Client()
    sample_pdf = client.files.upload(file=media / "test.pdf")
    response = client.models.generate_content(
        model="gemini-2.0-flash",
        contents=["Give me a summary of this pdf file.", sample_pdf],
    )
    print(response.text)

    যান

    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)
    }
    samplePdf, err := client.Files.UploadFromPath(
    	ctx,
    	filepath.Join(getMedia(), "test.pdf"),
    	&genai.UploadFileConfig{
    		MIMEType: "application/pdf",
    	},
    )
    if err != nil {
    	log.Fatal(err)
    }
    
    parts := []*genai.Part{
    	genai.NewPartFromText("Give me a summary of this pdf file."),
    	genai.NewPartFromURI(samplePdf.URI, samplePdf.MIMEType),
    }
    
    contents := []*genai.Content{
    	genai.NewContentFromParts(parts, genai.RoleUser),
    }
    
    response, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash", contents, nil)
    if err != nil {
    	log.Fatal(err)
    }
    text := response.Text()
    fmt.Println(text)

    প্রতিক্রিয়া সংস্থা

    media.upload এর প্রতিক্রিয়া।

    সফল হলে, প্রতিক্রিয়া অংশে নিম্নলিখিত কাঠামোসহ ডেটা থাকে:

    ক্ষেত্র
    file object ( File )

    তৈরি করা ফাইলের মেটাডেটা।

    JSON উপস্থাপনা
    {
      "file": {
        object (File)
      }
    }

    পদ্ধতি: files.get

    প্রদত্ত File মেটাডেটা সংগ্রহ করে।

    এন্ডপয়েন্ট

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

    পথের পরামিতি

    name string

    আবশ্যক। যে 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 এর একটি ইনস্ট্যান্স থাকে।

    পদ্ধতি: ফাইল.তালিকা

    অনুরোধকারী প্রকল্পের মালিকানাধীন File মেটাডেটা তালিকাভুক্ত করে।

    এন্ডপয়েন্ট

    https: / /generativelanguage.googleapis.com /v1beta /files পান

    কোয়েরি প্যারামিটার

    pageSize integer

    ঐচ্ছিক। প্রতি পৃষ্ঠায় ফেরত দেওয়া File সর্বোচ্চ সংখ্যা। নির্দিষ্ট না করা হলে, ডিফল্ট মান ১০ হবে। সর্বোচ্চ pageSize হলো ১০০।

    pageToken string

    ঐচ্ছিক। পূর্ববর্তী 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 তালিকা।

    nextPageToken string

    এমন একটি টোকেন যা পরবর্তী files.list কলে pageToken হিসেবে পাঠানো যেতে পারে।

    JSON উপস্থাপনা
    {
      "files": [
        {
          object (File)
        }
      ],
      "nextPageToken": string
    }

    পদ্ধতি: files.delete

    File মুছে দেয়।

    এন্ডপয়েন্ট

    https: / /generativelanguage.googleapis.com /v1beta /{name=files /*} মুছে ফেলুন

    পথের পরামিতি

    name string

    আবশ্যক। যে 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 অবজেক্ট হয়।

    পদ্ধতি: files.register

    FileService-এর সাথে একটি Google Cloud Storage ফাইল রেজিস্টার করে। ব্যবহারকারীকে Google Cloud Storage URI প্রদান করতে হবে এবং এর বিনিময়ে প্রতিটি URI-এর জন্য একটি File রিসোর্স পাওয়া যাবে। উল্লেখ্য যে, ফাইলগুলো কপি করা হয় না, শুধু File API-এর সাথে রেজিস্টার করা হয়। যদি একটি ফাইল রেজিস্টার করতে ব্যর্থ হয়, তবে পুরো অনুরোধটিই ব্যর্থ হয়ে যায়।

    এন্ডপয়েন্ট

    পোস্ট https: / /generativelanguage.googleapis.com /v1beta /files:register

    অনুরোধকারী শরীর

    অনুরোধের মূল অংশে নিম্নলিখিত কাঠামোসহ ডেটা থাকে:

    ক্ষেত্র
    uris[] string

    নিবন্ধনের জন্য প্রয়োজনীয় গুগল ক্লাউড স্টোরেজ ইউআরআইগুলো আবশ্যক। উদাহরণ: gs://bucket/object

    প্রতিক্রিয়া সংস্থা

    files.register এর প্রতিক্রিয়া।

    সফল হলে, প্রতিক্রিয়া অংশে নিম্নলিখিত কাঠামোসহ ডেটা থাকে:

    ক্ষেত্র
    files[] object ( File )

    GenerateContent কল করার সময় ব্যবহার করার জন্য নিবন্ধিত ফাইলগুলো।

    JSON উপস্থাপনা
    {
      "files": [
        {
          object (File)
        }
      ]
    }

    REST রিসোর্স: ফাইল

    উৎস: ফাইল

    এপিআই-তে একটি ফাইল আপলোড করা হয়েছে। পরবর্তী আইডি: ১৫

    ক্ষেত্র
    name string

    অপরিবর্তনীয়। শনাক্তকারী। File রিসোর্সের নাম। আইডি (নামের শুরুতে "files/" উপসর্গটি বাদে) ৪০টি পর্যন্ত ছোট হাতের অক্ষর, সংখ্যা বা ড্যাশ (-) দিয়ে গঠিত হতে পারে। আইডি ড্যাশ দিয়ে শুরু বা শেষ হতে পারবে না। তৈরির সময় নামটি খালি থাকলে, একটি অনন্য নাম তৈরি করা হবে। উদাহরণ: files/123-456

    displayName string

    ঐচ্ছিক। File জন্য সহজে পাঠযোগ্য প্রদর্শিত নাম। স্পেস সহ প্রদর্শিত নামটি অবশ্যই ৫১২ অক্ষরের বেশি হবে না। উদাহরণ: "Welcome Image"

    mimeType string

    শুধুমাত্র আউটপুট। ফাইলটির MIME টাইপ।

    sizeBytes string ( int64 format)

    শুধুমাত্র আউটপুট। ফাইলের আকার বাইটে।

    createTime string ( Timestamp format)

    শুধুমাত্র আউটপুট। File তৈরি হওয়ার সময়কার টাইমস্ট্যাম্প।

    RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "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-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "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 মেয়াদ শেষ হওয়ার জন্য সময়সূচী নির্ধারণ করা থাকে।

    RFC 3339 ব্যবহার করা হয়, যেখানে তৈরি হওয়া আউটপুট সর্বদা Z-নরম্যালাইজড হবে এবং এতে ০, ৩, ৬ বা ৯টি ভগ্নাংশীয় অঙ্ক ব্যবহৃত হবে। "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 হ্যাশ।

    একটি বেস৬৪-এনকোডেড স্ট্রিং।

    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
    }

    ভিডিওফাইলমেটাডেটা

    একটি ভিডিও File মেটাডেটা।

    ক্ষেত্র
    videoDuration string ( Duration format)

    ভিডিওটির সময়কাল।

    সেকেন্ডে পরিমাপকৃত সময়কাল, যা সর্বোচ্চ নয়টি ভগ্নাংশ অঙ্ক পর্যন্ত হতে পারে এবং শেষে ' s ' থাকে। উদাহরণ: "3.5s"

    JSON উপস্থাপনা
    {
      "videoDuration": string
    }

    রাজ্য

    একটি ফাইলের জীবনচক্রের অবস্থাসমূহ।

    এনামস
    STATE_UNSPECIFIED ডিফল্ট মান। স্টেটটি উল্লেখ না করা হলে এই মানটি ব্যবহৃত হয়।
    PROCESSING ফাইলটি প্রক্রিয়াধীন আছে এবং এখনও অনুমানের জন্য ব্যবহার করা যাবে না।
    ACTIVE ফাইলটি প্রক্রিয়াজাত করা হয়েছে এবং অনুমানের জন্য উপলব্ধ।
    FAILED ফাইলটি প্রক্রিয়াকরণে ব্যর্থ হয়েছে।

    উৎস

    এনামস
    SOURCE_UNSPECIFIED উৎস নির্দিষ্ট করা না থাকলে ব্যবহৃত হয়।
    UPLOADED এটি নির্দেশ করে যে ফাইলটি ব্যবহারকারী দ্বারা আপলোড করা হয়েছে।
    GENERATED এটি নির্দেশ করে যে ফাইলটি গুগল দ্বারা তৈরি করা হয়েছে।
    REGISTERED এটি নির্দেশ করে যে ফাইলটি নিবন্ধিত, অর্থাৎ এটি একটি গুগল ক্লাউড স্টোরেজ ফাইল।

    অবস্থা

    Status টাইপ একটি লজিক্যাল এরর মডেল নির্ধারণ করে যা REST API এবং RPC API সহ বিভিন্ন প্রোগ্রামিং এনভায়রনমেন্টের জন্য উপযুক্ত। এটি gRPC দ্বারা ব্যবহৃত হয়। প্রতিটি Status মেসেজে তিনটি ডেটা থাকে: এরর কোড, এরর মেসেজ এবং এররের বিস্তারিত বিবরণ।

    এই এরর মডেল এবং এটি নিয়ে কীভাবে কাজ করতে হয়, সে সম্পর্কে আরও জানতে আপনি এপিআই ডিজাইন গাইড দেখতে পারেন।

    ক্ষেত্র
    code integer

    স্ট্যাটাস কোডটি google.rpc.Code এর একটি enum ভ্যালু হওয়া উচিত।

    message string

    ডেভেলপারদের জন্য একটি ত্রুটির বার্তা, যা ইংরেজিতে হওয়া উচিত। ব্যবহারকারীদের জন্য যেকোনো ত্রুটির বার্তা স্থানীয়করণ করে 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: ...,
          ...
        }
      ]
    }