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.
Merrni dhe sigurojeni çelësin tuaj API
Ju duhet një çelës API për të thirrur Gemini API. Nëse nuk e keni tashmë një të tillë, krijoni një çelës në Google AI Studio.
Rekomandohet fuqimisht që të mos kontrolloni një çelës API në sistemin tuaj të kontrollit të versionit.
Ju duhet të ruani çelësin tuaj API në një dyqan sekretesh si Google Cloud Secret Manager .
Ky udhëzues supozon se ju po përdorni çelësin tuaj API si një variabël mjedisi.
Instaloni paketën SDK dhe konfiguroni çelësin tuaj API
Python SDK për API-në Gemini gjendet në paketën google-generativeai
.
Instaloni varësinë duke përdorur pip:
pip install -U google-generativeai
Importoni paketën dhe konfiguroni shërbimin me çelësin tuaj API:
import os import google.generativeai as genai genai.configure(api_key=os.environ['API_KEY'])
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.