Eksploroni aftësitë e përpunimit të dokumenteve me Gemini API

Gemini API mbështet hyrjen PDF, duke përfshirë dokumente të gjata (deri në 3600 faqe). Modelet Gemini përpunojnë PDF-të me vizion origjinal, dhe për këtë arsye janë në gjendje të kuptojnë përmbajtjen e tekstit dhe të imazhit brenda dokumenteve. Me mbështetjen origjinale të vizionit PDF, modelet Gemini janë në gjendje të:

  • Analizoni diagramet, grafikët dhe tabelat brenda dokumenteve.
  • Ekstraktoni informacionin në formate të strukturuara të daljes.
  • Përgjigjuni pyetjeve në lidhje me përmbajtjen vizuale dhe tekstuale në dokumente.
  • Përmblidhni dokumentet.
  • Transkriptoni përmbajtjen e dokumentit (p.sh. në HTML) duke ruajtur paraqitjet dhe formatimin, për përdorim në aplikacionet e rrjedhës së poshtme (si p.sh. në tubacionet RAG).

Ky udhëzues demonstron disa mënyra të mundshme për të përdorur Gemini API me dokumente PDF. E gjithë dalja është vetëm me tekst.

Përpara se të filloni: Vendosni projektin tuaj dhe çelësin API

Përpara se të telefononi Gemini API, duhet të konfiguroni projektin tuaj dhe të konfiguroni çelësin tuaj API.

Kërkesa me PDF

Ky udhëzues demonstron se si të ngarkoni dhe përpunoni PDF-të duke përdorur API-në e skedarit ose duke i përfshirë ato si të dhëna inline.

Detaje teknike

Gemini 1.5 Pro dhe 1.5 Flash mbështesin një maksimum prej 3600 faqe dokumentesh. Faqet e dokumentit duhet të jenë në një nga llojet e mëposhtme MIME të të dhënave tekstuale:

  • 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
  • Markdown - text/md
  • CSV - text/csv
  • XML - text/xml
  • RTF - text/rtf

Çdo faqe dokumenti është e barabartë me 258 argumente.

Ndërsa nuk ka kufizime specifike për numrin e pikselëve në një dokument përveç dritares së kontekstit të modelit, faqet më të mëdha zvogëlohen në një rezolucion maksimal prej 3072x3072 duke ruajtur raportin e tyre origjinal të pamjes, ndërsa faqet më të vogla janë shkallëzuar deri në 768x768 piksele. Nuk ka ulje kostoje për faqet me madhësi më të ulët, përveç gjerësisë së brezit, ose përmirësimit të performancës për faqet me rezolucion më të lartë.

Për rezultate më të mira:

  • Rrotulloni faqet në orientimin e duhur përpara se të ngarkoni.
  • Shmangni faqet e paqarta.
  • Nëse përdorni një faqe të vetme, vendosni kërkesën për tekst pas faqes.

Hyrja PDF

Për ngarkesat PDF nën 20 MB, mund të zgjidhni midis ngarkimit të dokumenteve të koduara base64 ose ngarkimit të drejtpërdrejtë të skedarëve të ruajtur në vend.

Dokumentet e koduara Base64

Ju mund të përpunoni dokumente PDF direkt nga URL-të. Këtu është një copë kodi që tregon se si ta bëni këtë:

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-të e ruajtura në vend

Për PDF-të e ruajtura në vend, mund të përdorni qasjen e mëposhtme:

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 të mëdha

Ju mund të përdorni API-në e skedarit për të ngarkuar një dokument të çdo madhësie. Përdorni gjithmonë API-në e skedarit kur madhësia totale e kërkesës (përfshirë skedarët, kërkesën për tekst, udhëzimet e sistemit, etj.) është më e madhe se 20 MB.

Telefononi media.upload për të ngarkuar një skedar duke përdorur File API. Kodi i mëposhtëm ngarkon një skedar dokumenti dhe më pas përdor skedarin në një thirrje për models.generateContent .

PDF të mëdha nga URL-të (:#large-pdfs-urls)

Përdorni API-në e skedarëve për skedarë të mëdhenj PDF të disponueshëm nga URL-të, duke thjeshtuar procesin e ngarkimit dhe përpunimit të këtyre dokumenteve drejtpërdrejt përmes URL-ve të tyre:

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 të mëdha të ruajtura në nivel lokal (:#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)

Mund të verifikoni se API e ka ruajtur me sukses skedarin e ngarkuar dhe të merrni meta të dhënat e tij duke telefonuar files.get . Vetëm name (dhe sipas zgjerimit, uri ) janë unik.

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 të shumta

Gemini API është në gjendje të përpunojë dokumente të shumta PDF në një kërkesë të vetme, për sa kohë që madhësia e kombinuar e dokumenteve dhe kërkesave të tekstit qëndron brenda dritares së kontekstit të modelit.

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)

Lista e skedarëve

Ju mund të listoni të gjithë skedarët e ngarkuar duke përdorur API-në e skedarit dhe URI-të e tyre duke përdorur files.list .

import google.generativeai as genai

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

Fshi skedarët

Skedarët e ngarkuar duke përdorur API-në e skedarit fshihen automatikisht pas 2 ditësh. Ju gjithashtu mund t'i fshini ato manualisht duke përdorur 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

Ruajtja e kontekstit me skedarë 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)

Listoni cache

Nuk është e mundur të rikuperoni ose shikoni përmbajtjen e ruajtur në memorie, por mund të merrni meta të dhënat e memories ( name , model , display_name , usage_metadata , create_time , update_time dhe expire_time ).

Për të listuar meta të dhënat për të gjitha memoriet e ngarkuara, përdorni CachedContent.list() :

for c in caching.CachedContent.list():
  print(c)

Përditëso një cache

Ju mund të vendosni një ttl të ri ose expire_time për një memorie të fshehtë. Ndryshimi i ndonjë gjëje tjetër në lidhje me cache nuk mbështetet.

Shembulli i mëposhtëm tregon se si të përditësoni ttl të një cache duke përdorur CachedContent.update() .

import datetime

cache.update(ttl=datetime.timedelta(hours=2))

Fshi një cache

Shërbimi i memorizimit ofron një operacion fshirjeje për heqjen manuale të përmbajtjes nga cache. Shembulli i mëposhtëm tregon se si të fshini një cache duke përdorur CachedContent.delete() .

cache.delete()

Çfarë është më pas

Ky udhëzues tregon se si të përdorni generateContent dhe të krijoni rezultate teksti nga dokumentet e përpunuara. Për të mësuar më shumë, shikoni burimet e mëposhtme:

  • Strategjitë e nxitjes së skedarëve : Gemini API mbështet nxitjen me të dhëna teksti, imazhi, audio dhe video, të njohura gjithashtu si nxitje multimodale.
  • Udhëzimet e sistemit : Udhëzimet e sistemit ju lejojnë të drejtoni sjelljen e modelit bazuar në nevojat tuaja specifike dhe rastet e përdorimit.
  • Udhëzime për sigurinë : Ndonjëherë modelet gjeneruese të AI prodhojnë rezultate të papritura, të tilla si rezultate që janë të pasakta, të njëanshme ose fyese. Pas-përpunimi dhe vlerësimi njerëzor janë thelbësore për të kufizuar rrezikun e dëmtimit nga rezultate të tilla.