Gemini API รองรับอินพุต PDF รวมถึงเอกสารที่มีความยาว (สูงสุด 3, 600 หน้า) โมเดล Gemini จะประมวลผล PDF ด้วยระบบการมองเห็นแบบเนทีฟ จึงเข้าใจทั้งเนื้อหาข้อความและรูปภาพในเอกสาร เมื่อรองรับการมองเห็น PDF โดยตรง โมเดล Gemini จะทําสิ่งต่อไปนี้ได้
- วิเคราะห์แผนภาพ แผนภูมิ และตารางในเอกสาร
- ดึงข้อมูลในรูปแบบเอาต์พุตที่มีโครงสร้าง
- ตอบคําถามเกี่ยวกับเนื้อหาที่เป็นภาพและข้อความในเอกสาร
- สรุปเอกสาร
- ถอดเสียงเนื้อหาเอกสาร (เช่น เป็น HTML) โดยคงเลย์เอาต์และการจัดรูปแบบไว้เพื่อใช้ในแอปพลิเคชันดาวน์สตรีม (เช่น ในไปป์ไลน์ RAG)
บทแนะนำนี้จะสาธิตวิธีใช้ Gemini API กับเอกสาร PDF เอาต์พุตทั้งหมดเป็นแบบข้อความเท่านั้น
ก่อนเริ่มต้น: ตั้งค่าโปรเจ็กต์และคีย์ API
คุณต้องตั้งค่าโปรเจ็กต์และกำหนดค่าคีย์ API ก่อนเรียกใช้ Gemini API
พรอมต์ด้วย PDF
คู่มือนี้แสดงวิธีอัปโหลดและประมวลผลไฟล์ PDF โดยใช้ File API หรือโดยการรวมไฟล์เป็นข้อมูลในบรรทัด
รายละเอียดทางเทคนิค
Gemini 1.5 Pro และ 1.5 Flash รองรับเอกสารได้สูงสุด 3,600 หน้า หน้าเอกสารต้องอยู่ในรูปแบบ MIME ของข้อมูลข้อความประเภทใดประเภทหนึ่งต่อไปนี้
- PDF -
application/pdf
- JavaScript -
application/x-javascript
,text/javascript
- Python -
application/x-python
,text/x-python
- TXT -
text/plain
- HTML -
text/html
- CSS -
text/css
- มาร์กดาวน์ -
text/md
- CSV -
text/csv
- XML -
text/xml
- RTF -
text/rtf
แต่ละหน้าเอกสารจะเท่ากับโทเค็น 258 รายการ
แม้ว่าจะไม่มีขีดจำกัดที่เจาะจงสำหรับจำนวนพิกเซลในเอกสารนอกเหนือจากกรอบบริบทของโมเดล แต่ระบบจะปรับขนาดหน้าเว็บขนาดใหญ่ให้ความละเอียดสูงสุด 3072x3072 พิกเซลโดยคงอัตราส่วนภาพเดิมไว้ ส่วนหน้าเว็บขนาดเล็กจะปรับขนาดให้ใหญ่ขึ้นเป็น 768x768 พิกเซล หน้าเว็บที่มีความละเอียดต่ำจะไม่มีค่าใช้จ่ายลดลง นอกเหนือจากแบนด์วิดท์ หรือประสิทธิภาพที่ดีขึ้นสำหรับหน้าเว็บที่มีความละเอียดสูง
เพื่อผลลัพธ์ที่ดีที่สุด ให้ทำดังนี้
- หมุนหน้าเว็บให้อยู่ในแนวที่ถูกต้องก่อนอัปโหลด
- หลีกเลี่ยงหน้าเว็บที่เบลอ
- หากใช้หน้าเดียว ให้วางพรอมต์ข้อความไว้หลังหน้านั้น
อินพุต PDF
สำหรับเพย์โหลด PDF น้อยกว่า 20 MB คุณสามารถเลือกระหว่างการอัปโหลดเอกสารที่เข้ารหัส Base64 หรือการอัปโหลดไฟล์ที่เก็บไว้ในเครื่องโดยตรง
เอกสารที่เข้ารหัส Base64
คุณประมวลผลเอกสาร PDF ได้โดยตรงจาก URL ต่อไปนี้คือตัวอย่างโค้ดที่แสดงวิธีดำเนินการ
import httpx
import base64
model = genai.GenerativeModel("gemini-1.5-flash")
doc_url = "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf" # Replace with the actual URL of your PDF
# Retrieve and encode the PDF
doc_data = base64.standard_b64encode(httpx.get(doc_url).content).decode("utf-8")
prompt = "Summarize this document"
response = model.generate_content([{'mime_type':'application/pdf', 'data': doc_data}, prompt])
print(response.text)
ไฟล์ PDF ที่เก็บไว้ในเครื่อง
สำหรับ PDF ที่เก็บไว้ในเครื่อง ให้ใช้แนวทางต่อไปนี้
import base64
model = genai.GenerativeModel("gemini-1.5-flash")
doc_path = "/path/to/file.pdf" # Replace with the actual path to your local PDF
# Read and encode the local file
with open(doc_path, "rb") as doc_file:
doc_data = base64.standard_b64encode(doc_file.read()).decode("utf-8")
prompt = "Summarize this document"
response = model.generate_content([{'mime_type': 'application/pdf', 'data': doc_data}, prompt])
print(response.text)
PDF ขนาดใหญ่
คุณสามารถใช้ File API เพื่ออัปโหลดเอกสารได้ทุกขนาด ใช้ File API เสมอเมื่อคำขอทั้งหมด (รวมถึงไฟล์ ข้อความแจ้ง ระบบ วิธีการ ฯลฯ) มีขนาดใหญ่กว่า 20 MB
โทรหา media.upload
เพื่ออัปโหลดไฟล์โดยใช้ File API โค้ดต่อไปนี้จะอัปโหลดไฟล์เอกสาร จากนั้นใช้ไฟล์ในการเรียกใช้ models.generateContent
PDF ขนาดใหญ่จาก URL (:#large-pdfs-urls)
ใช้ File API สำหรับไฟล์ PDF ขนาดใหญ่ที่พร้อมใช้งานจาก URL ซึ่งจะลดความซับซ้อนของกระบวนการอัปโหลดและประมวลผลเอกสารเหล่านี้โดยตรงผ่าน URL
import io
import httpx
model = genai.GenerativeModel("gemini-1.5-flash")
long_context_pdf_path = "https://www.nasa.gov/wp-content/uploads/static/history/alsj/a17/A17_FlightPlan.pdf" # Replace with the actual URL of your large PDF
# Retrieve and upload the PDF using the File API
doc_data = io.BytesIO(httpx.get(long_context_pdf_path).content)
sample_doc = genai.upload_file(data=doc_data, mime_type='application/pdf')
prompt = "Summarize this document"
response = model.generate_content([sample_doc, prompt])
print(response.text)
PDF ขนาดใหญ่ที่จัดเก็บไว้ในเครื่อง (:#large-pdfs-local)
import google.generativeai as genai
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)
คุณสามารถตรวจสอบว่า API จัดเก็บไฟล์ที่อัปโหลดไว้เรียบร้อยแล้วและรับข้อมูลเมตาของไฟล์ดังกล่าวได้โดยเรียกใช้ files.get
มีเพียง name
(และ uri
) เท่านั้นที่ไม่ซ้ำกัน
import google.generativeai as genai
myfile = genai.upload_file(media / "poem.txt")
file_name = myfile.name
print(file_name) # "files/*"
myfile = genai.get_file(file_name)
print(myfile)
PDF หลายไฟล์
Gemini API สามารถประมวลผลเอกสาร PDF หลายรายการในคำขอเดียว ตราบใดที่ขนาดรวมของเอกสารและพรอมต์ข้อความอยู่ภายในหน้าต่างบริบทของโมเดล
import io
import httpx
model = genai.GenerativeModel("gemini-1.5-flash")
doc_url_1 = "https://arxiv.org/pdf/2312.11805" # Replace with the URL to your first PDF
doc_url_2 = "https://arxiv.org/pdf/2403.05530" # Replace with the URL to your second PDF
# Retrieve and upload both PDFs using the File API
doc_data_1 = io.BytesIO(httpx.get(doc_url_1).content)
doc_data_2 = io.BytesIO(httpx.get(doc_url_2).content)
sample_pdf_1 = genai.upload_file(data=doc_data_1, mime_type='application/pdf')
sample_pdf_2 = genai.upload_file(data=doc_data_2, mime_type='application/pdf')
prompt = "What is the difference between each of the main benchmarks between these two papers? Output these in a table."
response = model.generate_content([sample_pdf_1, sample_pdf_2, prompt])
print(response.text)
แสดงรายการไฟล์
คุณสามารถแสดงรายการไฟล์ทั้งหมดที่อัปโหลดโดยใช้ File API และ URI ของไฟล์ได้โดยใช้ files.list
import google.generativeai as genai
print("My files:")
for f in genai.list_files():
print(" ", f.name)
ลบไฟล์
ระบบจะลบไฟล์ที่อัปโหลดโดยใช้ File API โดยอัตโนมัติหลังจากผ่านไป 2 วัน นอกจากนี้ คุณยังลบด้วยตนเองได้โดยใช้ files.delete
import google.generativeai as genai
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
การแคชบริบทด้วย PDF
import os
from google.generativeai import caching
import io
import httpx
# Define the path to the PDF document (or use a URL)
long_context_pdf_path = "https://www.nasa.gov/wp-content/uploads/static/history/alsj/a17/A17_FlightPlan.pdf" # Replace with the URL of your large PDF
doc_data = io.BytesIO(httpx.get(long_context_pdf_path).content)
# Upload the PDF document using the File API
document = genai.upload_file(data=doc_data, mime_type='application/pdf')
# Specify the model name and system instruction for caching
model_name = "gemini-1.5-flash-002" # Ensure this matches the model you intend to use
system_instruction = "You are an expert analyzing transcripts."
# Create a cached content object
cache = caching.CachedContent.create(
model=model_name,
system_instruction=system_instruction,
contents=[document], # The document(s) and other content you wish to cache
)
# Display the cache details
print(cache)
# Initialize a generative model from the cached content
model = genai.GenerativeModel.from_cached_content(cache)
# Generate content using the cached prompt and document
response = model.generate_content("Please summarize this transcript")
# (Optional) Print usage metadata for insights into the API call
print(response.usage_metadata)
# Print the generated text
print(response.text)
แสดงรายการแคช
คุณไม่สามารถเรียกดูหรือดูเนื้อหาที่แคชไว้ได้ แต่สามารถเรียกข้อมูลเมตาที่แคชไว้ (name
, model
, display_name
, usage_metadata
,
create_time
, update_time
และ expire_time
)
หากต้องการแสดงรายการข้อมูลเมตาของแคชที่อัปโหลดทั้งหมด ให้ใช้ CachedContent.list()
for c in caching.CachedContent.list():
print(c)
อัปเดตแคช
คุณสามารถตั้งค่า ttl
หรือ expire_time
ใหม่สำหรับแคชได้ ไม่รองรับการเปลี่ยนแปลงอื่นๆ เกี่ยวกับแคช
ตัวอย่างต่อไปนี้แสดงวิธีอัปเดต ttl
ของแคชโดยใช้ CachedContent.update()
import datetime
cache.update(ttl=datetime.timedelta(hours=2))
ลบแคช
บริการแคชมีการดำเนินการลบสําหรับนําเนื้อหาออกจากแคชด้วยตนเอง ตัวอย่างต่อไปนี้แสดงวิธีลบแคชโดยใช้ CachedContent.delete()
cache.delete()
ขั้นตอนถัดไป
คู่มือนี้แสดงวิธีใช้ generateContent
และวิธีสร้างเอาต์พุตข้อความจากเอกสารที่ประมวลผลแล้ว ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้
- กลยุทธ์การแจ้งไฟล์: Gemini API รองรับการแจ้งด้วยข้อมูลข้อความ รูปภาพ เสียง และวิดีโอ หรือที่เรียกว่าการแจ้งแบบหลายสื่อ
- คำสั่งของระบบ: คำสั่งของระบบช่วยให้คุณควบคุมลักษณะการทํางานของโมเดลตามความต้องการและกรณีการใช้งานที่เฉพาะเจาะจง
- คำแนะนำด้านความปลอดภัย: บางครั้งโมเดล Generative AI จะสร้างเอาต์พุตที่ไม่คาดคิด เช่น เอาต์พุตที่ไม่ถูกต้อง มีอคติ หรือไม่เหมาะสม ขั้นตอนหลังการประมวลผลและการประเมินจากเจ้าหน้าที่เป็นสิ่งจําเป็นในการจำกัดความเสี่ยงของอันตรายจากเอาต์พุตดังกล่าว