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 有時 模型會產生非預期的輸出內容 任何偏見或令人反感的內容後續處理和人工評估 以降低這類輸出的傷害風險