瞭解 Gemini API 的文件處理功能

Gemini API 可處理傳入的 PDF 文件,並進行推論。時間 上傳 PDF 檔案後,Gemini API 就能:

  • 說明或回答內容相關問題
  • 提供內容的摘要
  • 從內容推斷

本教學課程示範了使用以下程式碼來提示 Gemini API 的一些方法: 提供的 PDF 文件所有輸出內容皆為純文字。

事前準備:設定專案和 API 金鑰

呼叫 Gemini API 前,請先設定專案並設定 您的 API 金鑰。

技術詳細資料

Gemini 1.5 Pro 和 1.5 Flash 最多可支援 3,600 個文件頁面。文件 網頁類型必須為 application/pdf MIME 類型。

每個文件頁面大約相當於 258 個符記。

雖然文件中的像素數量沒有特定限制 將模型的背景脈絡窗口縮小至最大解析度 大小為 3072x3072,同時保留原始長寬比,而較小的頁面 大小最高為 768x768 像素低於 除了頻寬之外,或者提升網頁品質時 解析度。

為確保最佳成效:

  • 上傳前,請將頁面旋轉至正確的方向。
  • 避免使用模糊不清的網頁。
  • 如果只使用單一網頁,請將文字提示放在網頁後方。

使用 File API 上傳文件

使用 File API 上傳任何大小的文件。( 想要傳送的檔案與系統指示組合較大 大於 20 MB)。

請先透過 Gemini 下載這份白皮書 1.5

!curl -o gemini.pdf https://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf

使用 media.upload 和 輸出 URI,此 URI 在 Gemini API 呼叫中會用做參考:

# Upload the file and print a confirmation
sample_file = genai.upload_file(path="gemini.pdf",
                                display_name="Gemini 1.5 PDF")

print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")

驗證 PDF 檔案上傳及取得中繼資料

您可以驗證 API 是否已成功儲存上傳的檔案,並取得其 透過 SDK 呼叫 files.get 來更新中繼資料僅限 name (及 副檔名為 uri) 重複。只有在符合以下條件時,才使用「display_name」來識別檔案 以及自己的特色

file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")

根據您的用途,您可以將 URI 儲存在結構中,例如 dict 或資料庫。

使用上傳的文件,提示 Gemini API

上傳檔案後,您可以提出參照的 GenerateContent 要求 File API URI選取生成式模型,並以文字提示提供模型 以及上傳的文件:

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-flash")

# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Can you summarize this document as a bulleted list?"])

print(response.text)

上傳一或多個儲存在本機的檔案

或者,您也可以上傳一或多個本機儲存的檔案。

如果您打算傳送的檔案和系統指示組合, 如果超過 20 MB,請使用 File API 上傳這些檔案 。使用者可透過 Gemini API 在本機呼叫較小的檔案:

import PyPDF2

def extract_text_from_pdf(pdf_path):
    with open(pdf_path, 'rb') as pdf_file:
        pdf_reader = PyPDF2.PdfReader(pdf_file)
        extracted_text = ""
        for page in pdf_reader.pages:
            text = page.extract_text()
            if text:
                extracted_text += text
        return extracted_text

sample_file_2 = extract_text_from_pdf('example-1.pdf')
sample_file_3 = extract_text_from_pdf('example-2.pdf')

顯示多份文件的提示

您與 Gemini API 的任何文件和文字組合都可以用於 會套用在模型的背景區間內這個範例提供一則簡短文字 提示和先前上傳的三份文件:

# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-flash")

prompt = "Summarize the differences between the thesis statements for these documents."

response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])

print(response.text)

可列出檔案

您可以使用 File API 列出透過 File API 上傳的所有檔案及其 URI files.list_files():

# List all files
for file in genai.list_files():
    print(f"{file.display_name}, URI: {file.uri}")

刪除檔案

使用 File API 上傳的檔案會在 2 天後自動刪除。個人中心 您也可以使用 files.delete_file() 手動刪除:

# Delete file
genai.delete_file(document_file.name)
print(f'Deleted file {document_file.uri}')

後續步驟

本指南說明 generateContent 和 ,根據處理過的文件生成文字輸出內容如要瞭解詳情 請參閱下列資源:

  • 使用媒體檔案發出提示: Gemini API 支援透過文字、圖片、音訊和影片資料提示使用者 稱為「多模態提示」
  • 系統操作說明:系統 指示能讓您根據具體的 需求和用途
  • 安全指南:生成式 AI 有時 模型會產生非預期的輸出內容 任何偏見或令人反感的內容後續處理和人工評估 以降低這類輸出的傷害風險