Using files

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

روش: media.upload

یک File ایجاد می کند.

نقطه پایانی

  • URI آپلود، برای درخواست های آپلود رسانه:
  • پست https://generativelanguage.googleapis.com/upload/v1beta/files
  • URI فراداده، برای درخواست‌های فقط فراداده:
  • پست https://generativelanguage.googleapis.com/v1beta/files

    درخواست بدن

    بدنه درخواست حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    اختیاری. فراداده برای ایجاد فایل

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

    تصویر

    پایتون

    myfile = genai.upload_file(media / "Cajun_instruments.jpg")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you tell me about the instruments in this photo?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this image.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "Cajun_instruments.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you tell me about the instruments in this photo?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    صوتی

    پایتون

    myfile = genai.upload_file(media / "sample.mp3")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this audio clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/samplesmall.mp3`,
      {
        mimeType: "audio/mp3",
        displayName: "Audio sample",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Audio processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this audio clip.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "sample.mp3"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this audio clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    متن

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you add a few more lines to this poem?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
      mimeType: "text/plain",
      displayName: "Apollo 11",
    });
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Transcribe the first few sentences of this document.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    // Set MIME type explicitly for text files - the service may have difficulty
    // distingushing between different MIME types of text files automatically.
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "poem.txt"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you add a few more lines to this poem?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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=$GOOGLE_API_KEY
    

    ویدئو

    پایتون

    import time
    
    # Video clip (CC BY 3.0) from https://peach.blender.org/download/
    myfile = genai.upload_file(media / "Big_Buck_Bunny.mp4")
    print(f"{myfile=}")
    
    # Videos need to be processed before you can use them.
    while myfile.state.name == "PROCESSING":
        print("processing video...")
        time.sleep(5)
        myfile = genai.get_file(myfile.name)
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this video clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/Big_Buck_Bunny.mp4`,
      {
        mimeType: "video/mp4",
        displayName: "Big Buck Bunny",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Video processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this video.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "earth.mp4"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    // Videos need to be processed before you can use them.
    for file.State == genai.FileStateProcessing {
    	log.Printf("processing %s", file.Name)
    	time.Sleep(5 * time.Second)
    	var err error
    	if file, err = client.GetFile(ctx, file.Name); err != nil {
    		log.Fatal(err)
    	}
    }
    if file.State != genai.FileStateActive {
    	log.Fatalf("uploaded file has state %s, not active", file.State)
    }
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this video clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    PDF

    پایتون

    model = genai.GenerativeModel("gemini-1.5-flash")
    sample_pdf = genai.upload_file(media / "test.pdf")
    response = model.generate_content(["Give me a summary of this pdf file.", sample_pdf])
    print(response.text)

    بدن پاسخگو

    پاسخ برای media.upload .

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    متادیتا برای فایل ایجاد شده

    نمایندگی JSON
    {
      "file": {
        object (File)
      }
    }

    روش: files.get

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

    نقطه پایانی

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

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

    string name

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

    درخواست بدن

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

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

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    file_name = myfile.name
    print(file_name)  # "files/*"
    
    myfile = genai.get_file(file_name)
    print(myfile)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResponse = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Get the previously uploaded file's metadata.
    const getResponse = await fileManager.getFile(uploadResponse.file.name);
    
    // View the response.
    console.log(
      `Retrieved file ${getResponse.displayName} as ${getResponse.uri}`,
    );

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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 را دریافت کنید

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

    pageSize integer

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

    string pageToken

    اختیاری. نشانه صفحه از تماس قبلی files.list .

    درخواست بدن

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

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

    پایتون

    print("My files:")
    for f in genai.list_files():
        print("  ", f.name)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const listFilesResponse = await fileManager.listFiles();
    
    // View the response.
    for (const file of listFilesResponse.files) {
      console.log(`name: ${file.name} | display name: ${file.displayName}`);
    }

    برو

    iter := client.ListFiles(ctx)
    for {
    	ifile, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(ifile.Name)
    }

    پوسته

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

    بدن پاسخگو

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

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

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

    لیست File s.

    string nextPageToken

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

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

    روش: files.delete

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

    نقطه پایانی

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

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

    string name

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

    درخواست بدن

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

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

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    
    myfile.delete()
    
    try:
        # Error.
        model = genai.GenerativeModel("gemini-1.5-flash")
        result = model.generate_content([myfile, "Describe this file."])
    except google.api_core.exceptions.PermissionDenied:
        pass

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Delete the file.
    await fileManager.deleteFile(uploadResult.file.name);
    
    console.log(`Deleted ${uploadResult.file.displayName}`);

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

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

    بدن پاسخگو

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

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

    منبع: فایل

    فایلی که در API آپلود شده است.

    فیلدها
    string name

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

    string displayName

    اختیاری. نام نمایشی قابل خواندن توسط انسان برای File . نام نمایشی نباید بیش از 512 کاراکتر به همراه فاصله باشد. مثال: "تصویر خوش آمدگویی"

    string mimeType

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

    رشته sizeBytes string ( int64 format)

    فقط خروجی حجم فایل بر حسب بایت

    رشته createTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته updateTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته expirationTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته sha256Hash string ( bytes format)

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

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

    string uri

    فقط خروجی uri of the File .

    state enum ( State )

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

    موضوع error object ( Status )

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

    metadata میدان اتحادیه فراداده برای فایل metadata تنها می تواند یکی از موارد زیر باشد:
    شئ videoMetadata object ( VideoMetadata )

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

    نمایندگی JSON
    {
      "name": string,
      "displayName": string,
      "mimeType": string,
      "sizeBytes": string,
      "createTime": string,
      "updateTime": string,
      "expirationTime": string,
      "sha256Hash": string,
      "uri": string,
      "state": enum (State),
      "error": {
        object (Status)
      },
    
      // Union field metadata can be only one of the following:
      "videoMetadata": {
        object (VideoMetadata)
      }
      // End of list of possible types for union field metadata.
    }

    داده های ویدیویی

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

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

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

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

    نمایندگی JSON
    {
      "videoDuration": string
    }

    ایالت

    وضعیت برای چرخه حیات یک فایل.

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

    وضعیت

    نوع 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: ...,
          ...
        }
      ]
    }
    ،

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

    روش: media.upload

    یک File ایجاد می کند.

    نقطه پایانی

  • URI آپلود، برای درخواست های آپلود رسانه:
  • پست https://generativelanguage.googleapis.com/upload/v1beta/files
  • URI فراداده، برای درخواست‌های فقط فراداده:
  • پست https://generativelanguage.googleapis.com/v1beta/files

    درخواست بدن

    بدنه درخواست حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    اختیاری. فراداده برای ایجاد فایل

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

    تصویر

    پایتون

    myfile = genai.upload_file(media / "Cajun_instruments.jpg")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you tell me about the instruments in this photo?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this image.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "Cajun_instruments.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you tell me about the instruments in this photo?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    صوتی

    پایتون

    myfile = genai.upload_file(media / "sample.mp3")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this audio clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/samplesmall.mp3`,
      {
        mimeType: "audio/mp3",
        displayName: "Audio sample",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Audio processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this audio clip.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "sample.mp3"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this audio clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    متن

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you add a few more lines to this poem?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
      mimeType: "text/plain",
      displayName: "Apollo 11",
    });
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Transcribe the first few sentences of this document.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    // Set MIME type explicitly for text files - the service may have difficulty
    // distingushing between different MIME types of text files automatically.
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "poem.txt"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you add a few more lines to this poem?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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=$GOOGLE_API_KEY
    

    ویدئو

    پایتون

    import time
    
    # Video clip (CC BY 3.0) from https://peach.blender.org/download/
    myfile = genai.upload_file(media / "Big_Buck_Bunny.mp4")
    print(f"{myfile=}")
    
    # Videos need to be processed before you can use them.
    while myfile.state.name == "PROCESSING":
        print("processing video...")
        time.sleep(5)
        myfile = genai.get_file(myfile.name)
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this video clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/Big_Buck_Bunny.mp4`,
      {
        mimeType: "video/mp4",
        displayName: "Big Buck Bunny",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Video processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this video.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "earth.mp4"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    // Videos need to be processed before you can use them.
    for file.State == genai.FileStateProcessing {
    	log.Printf("processing %s", file.Name)
    	time.Sleep(5 * time.Second)
    	var err error
    	if file, err = client.GetFile(ctx, file.Name); err != nil {
    		log.Fatal(err)
    	}
    }
    if file.State != genai.FileStateActive {
    	log.Fatalf("uploaded file has state %s, not active", file.State)
    }
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this video clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    PDF

    پایتون

    model = genai.GenerativeModel("gemini-1.5-flash")
    sample_pdf = genai.upload_file(media / "test.pdf")
    response = model.generate_content(["Give me a summary of this pdf file.", sample_pdf])
    print(response.text)

    بدن پاسخگو

    پاسخ برای media.upload .

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    متادیتا برای فایل ایجاد شده

    نمایندگی JSON
    {
      "file": {
        object (File)
      }
    }

    روش: files.get

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

    نقطه پایانی

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

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

    string name

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

    درخواست بدن

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

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

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    file_name = myfile.name
    print(file_name)  # "files/*"
    
    myfile = genai.get_file(file_name)
    print(myfile)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResponse = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Get the previously uploaded file's metadata.
    const getResponse = await fileManager.getFile(uploadResponse.file.name);
    
    // View the response.
    console.log(
      `Retrieved file ${getResponse.displayName} as ${getResponse.uri}`,
    );

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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 را دریافت کنید

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

    pageSize integer

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

    string pageToken

    اختیاری. نشانه صفحه از تماس قبلی files.list .

    درخواست بدن

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

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

    پایتون

    print("My files:")
    for f in genai.list_files():
        print("  ", f.name)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const listFilesResponse = await fileManager.listFiles();
    
    // View the response.
    for (const file of listFilesResponse.files) {
      console.log(`name: ${file.name} | display name: ${file.displayName}`);
    }

    برو

    iter := client.ListFiles(ctx)
    for {
    	ifile, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(ifile.Name)
    }

    پوسته

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

    بدن پاسخگو

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

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

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

    لیست File s.

    string nextPageToken

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

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

    روش: files.delete

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

    نقطه پایانی

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

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

    string name

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

    درخواست بدن

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

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

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    
    myfile.delete()
    
    try:
        # Error.
        model = genai.GenerativeModel("gemini-1.5-flash")
        result = model.generate_content([myfile, "Describe this file."])
    except google.api_core.exceptions.PermissionDenied:
        pass

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Delete the file.
    await fileManager.deleteFile(uploadResult.file.name);
    
    console.log(`Deleted ${uploadResult.file.displayName}`);

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

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

    بدن پاسخگو

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

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

    منبع: فایل

    فایلی که در API آپلود شده است.

    فیلدها
    string name

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

    string displayName

    اختیاری. نام نمایشی قابل خواندن توسط انسان برای File . نام نمایشی نباید بیش از 512 کاراکتر به همراه فاصله باشد. مثال: "تصویر خوش آمدگویی"

    string mimeType

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

    رشته sizeBytes string ( int64 format)

    فقط خروجی حجم فایل بر حسب بایت

    رشته createTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته updateTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته expirationTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته sha256Hash string ( bytes format)

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

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

    string uri

    فقط خروجی uri of the File .

    state enum ( State )

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

    موضوع error object ( Status )

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

    metadata میدان اتحادیه فراداده برای فایل metadata تنها می تواند یکی از موارد زیر باشد:
    شئ videoMetadata object ( VideoMetadata )

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

    نمایندگی JSON
    {
      "name": string,
      "displayName": string,
      "mimeType": string,
      "sizeBytes": string,
      "createTime": string,
      "updateTime": string,
      "expirationTime": string,
      "sha256Hash": string,
      "uri": string,
      "state": enum (State),
      "error": {
        object (Status)
      },
    
      // Union field metadata can be only one of the following:
      "videoMetadata": {
        object (VideoMetadata)
      }
      // End of list of possible types for union field metadata.
    }

    داده های ویدیویی

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

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

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

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

    نمایندگی JSON
    {
      "videoDuration": string
    }

    ایالت

    وضعیت برای چرخه حیات یک فایل.

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

    وضعیت

    نوع 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: ...,
          ...
        }
      ]
    }
    ،

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

    روش: media.upload

    یک File ایجاد می کند.

    نقطه پایانی

  • URI آپلود، برای درخواست های آپلود رسانه:
  • پست https://generativelanguage.googleapis.com/upload/v1beta/files
  • URI فراداده، برای درخواست‌های فقط فراداده:
  • پست https://generativelanguage.googleapis.com/v1beta/files

    درخواست بدن

    بدنه درخواست حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    اختیاری. فراداده برای ایجاد فایل

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

    تصویر

    پایتون

    myfile = genai.upload_file(media / "Cajun_instruments.jpg")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you tell me about the instruments in this photo?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this image.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "Cajun_instruments.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you tell me about the instruments in this photo?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    صوتی

    پایتون

    myfile = genai.upload_file(media / "sample.mp3")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this audio clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/samplesmall.mp3`,
      {
        mimeType: "audio/mp3",
        displayName: "Audio sample",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Audio processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this audio clip.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "sample.mp3"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this audio clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    متن

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    print(f"{myfile=}")
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content(
        [myfile, "\n\n", "Can you add a few more lines to this poem?"]
    )
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(`${mediaPath}/a11.txt`, {
      mimeType: "text/plain",
      displayName: "Apollo 11",
    });
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Transcribe the first few sentences of this document.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    // Set MIME type explicitly for text files - the service may have difficulty
    // distingushing between different MIME types of text files automatically.
    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "poem.txt"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Can you add a few more lines to this poem?"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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=$GOOGLE_API_KEY
    

    ویدئو

    پایتون

    import time
    
    # Video clip (CC BY 3.0) from https://peach.blender.org/download/
    myfile = genai.upload_file(media / "Big_Buck_Bunny.mp4")
    print(f"{myfile=}")
    
    # Videos need to be processed before you can use them.
    while myfile.state.name == "PROCESSING":
        print("processing video...")
        time.sleep(5)
        myfile = genai.get_file(myfile.name)
    
    model = genai.GenerativeModel("gemini-1.5-flash")
    result = model.generate_content([myfile, "Describe this video clip"])
    print(f"{result.text=}")

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager, FileState } from "@google/generative-ai/server";
    // import { GoogleGenerativeAI } from "@google/generative-ai";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/Big_Buck_Bunny.mp4`,
      {
        mimeType: "video/mp4",
        displayName: "Big Buck Bunny",
      },
    );
    
    let file = await fileManager.getFile(uploadResult.file.name);
    while (file.state === FileState.PROCESSING) {
      process.stdout.write(".");
      // Sleep for 10 seconds
      await new Promise((resolve) => setTimeout(resolve, 10_000));
      // Fetch the file from the API again
      file = await fileManager.getFile(uploadResult.file.name);
    }
    
    if (file.state === FileState.FAILED) {
      throw new Error("Video processing failed.");
    }
    
    // View the response.
    console.log(
      `Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
    );
    
    const genAI = new GoogleGenerativeAI(process.env.API_KEY);
    const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
    const result = await model.generateContent([
      "Tell me about this video.",
      {
        fileData: {
          fileUri: uploadResult.file.uri,
          mimeType: uploadResult.file.mimeType,
        },
      },
    ]);
    console.log(result.response.text());

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "earth.mp4"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    // Videos need to be processed before you can use them.
    for file.State == genai.FileStateProcessing {
    	log.Printf("processing %s", file.Name)
    	time.Sleep(5 * time.Second)
    	var err error
    	if file, err = client.GetFile(ctx, file.Name); err != nil {
    		log.Fatal(err)
    	}
    }
    if file.State != genai.FileStateActive {
    	log.Fatalf("uploaded file has state %s, not active", file.State)
    }
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this video clip"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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=${GOOGLE_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=$GOOGLE_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

    PDF

    پایتون

    model = genai.GenerativeModel("gemini-1.5-flash")
    sample_pdf = genai.upload_file(media / "test.pdf")
    response = model.generate_content(["Give me a summary of this pdf file.", sample_pdf])
    print(response.text)

    بدن پاسخگو

    پاسخ برای media.upload .

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

    فیلدها
    شی file object ( File )

    متادیتا برای فایل ایجاد شده

    نمایندگی JSON
    {
      "file": {
        object (File)
      }
    }

    روش: files.get

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

    نقطه پایانی

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

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

    string name

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

    درخواست بدن

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

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

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    file_name = myfile.name
    print(file_name)  # "files/*"
    
    myfile = genai.get_file(file_name)
    print(myfile)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResponse = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Get the previously uploaded file's metadata.
    const getResponse = await fileManager.getFile(uploadResponse.file.name);
    
    // View the response.
    console.log(
      `Retrieved file ${getResponse.displayName} as ${getResponse.uri}`,
    );

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

    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 را دریافت کنید

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

    pageSize integer

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

    string pageToken

    اختیاری. نشانه صفحه از تماس قبلی files.list .

    درخواست بدن

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

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

    پایتون

    print("My files:")
    for f in genai.list_files():
        print("  ", f.name)

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const listFilesResponse = await fileManager.listFiles();
    
    // View the response.
    for (const file of listFilesResponse.files) {
      console.log(`name: ${file.name} | display name: ${file.displayName}`);
    }

    برو

    iter := client.ListFiles(ctx)
    for {
    	ifile, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(ifile.Name)
    }

    پوسته

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

    بدن پاسخگو

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

    در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

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

    لیست File s.

    string nextPageToken

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

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

    روش: files.delete

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

    نقطه پایانی

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

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

    string name

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

    درخواست بدن

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

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

    پایتون

    myfile = genai.upload_file(media / "poem.txt")
    
    myfile.delete()
    
    try:
        # Error.
        model = genai.GenerativeModel("gemini-1.5-flash")
        result = model.generate_content([myfile, "Describe this file."])
    except google.api_core.exceptions.PermissionDenied:
        pass

    Node.js

    // Make sure to include these imports:
    // import { GoogleAIFileManager } from "@google/generative-ai/server";
    const fileManager = new GoogleAIFileManager(process.env.API_KEY);
    
    const uploadResult = await fileManager.uploadFile(
      `${mediaPath}/jetpack.jpg`,
      {
        mimeType: "image/jpeg",
        displayName: "Jetpack drawing",
      },
    );
    
    // Delete the file.
    await fileManager.deleteFile(uploadResult.file.name);
    
    console.log(`Deleted ${uploadResult.file.displayName}`);

    برو

    file, err := client.UploadFileFromPath(ctx, filepath.Join(testDataDir, "personWorkingOnComputer.jpg"), nil)
    if err != nil {
    	log.Fatal(err)
    }
    defer client.DeleteFile(ctx, file.Name)
    
    gotFile, err := client.GetFile(ctx, file.Name)
    if err != nil {
    	log.Fatal(err)
    }
    fmt.Println("Got file:", gotFile.Name)
    
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx,
    	genai.FileData{URI: file.URI},
    	genai.Text("Describe this image"))
    if err != nil {
    	log.Fatal(err)
    }
    
    printResponse(resp)

    پوسته

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

    بدن پاسخگو

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

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

    منبع: فایل

    فایلی که در API آپلود شده است.

    فیلدها
    string name

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

    string displayName

    اختیاری. نام نمایشی قابل خواندن توسط انسان برای File . نام نمایشی نباید بیش از 512 کاراکتر به همراه فاصله باشد. مثال: "تصویر خوش آمدگویی"

    string mimeType

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

    رشته sizeBytes string ( int64 format)

    فقط خروجی حجم فایل بر حسب بایت

    رشته createTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته updateTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته expirationTime string ( Timestamp format)

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

    مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

    رشته sha256Hash string ( bytes format)

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

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

    string uri

    فقط خروجی uri of the File .

    state enum ( State )

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

    موضوع error object ( Status )

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

    metadata میدان اتحادیه فراداده برای فایل metadata تنها می تواند یکی از موارد زیر باشد:
    شئ videoMetadata object ( VideoMetadata )

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

    نمایندگی JSON
    {
      "name": string,
      "displayName": string,
      "mimeType": string,
      "sizeBytes": string,
      "createTime": string,
      "updateTime": string,
      "expirationTime": string,
      "sha256Hash": string,
      "uri": string,
      "state": enum (State),
      "error": {
        object (Status)
      },
    
      // Union field metadata can be only one of the following:
      "videoMetadata": {
        object (VideoMetadata)
      }
      // End of list of possible types for union field metadata.
    }

    داده های ویدیویی

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

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

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

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

    نمایندگی JSON
    {
      "videoDuration": string
    }

    ایالت

    وضعیت برای چرخه حیات یک فایل.

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

    وضعیت

    نوع 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: ...,
          ...
        }
      ]
    }