জেমিনি API দীর্ঘ নথি (3600 পৃষ্ঠা পর্যন্ত) সহ PDF ইনপুট সমর্থন করে। জেমিনি মডেলগুলি নেটিভ ভিশন সহ পিডিএফগুলি প্রক্রিয়া করে, এবং তাই নথির ভিতরের পাঠ্য এবং চিত্র উভয় বিষয়বস্তু বুঝতে সক্ষম। নেটিভ পিডিএফ ভিশন সমর্থন সহ, মিথুন মডেলগুলি সক্ষম:
- নথির ভিতরে ডায়াগ্রাম, চার্ট এবং টেবিল বিশ্লেষণ করুন।
- কাঠামোগত আউটপুট ফরম্যাটে তথ্য বের করুন।
- নথিতে ভিজ্যুয়াল এবং পাঠ্য বিষয়বস্তু সম্পর্কে প্রশ্নের উত্তর দিন।
- নথিগুলি সংক্ষিপ্ত করুন।
- ডাউনস্ট্রিম অ্যাপ্লিকেশনে (যেমন RAG পাইপলাইনে) ব্যবহারের জন্য বিন্যাস এবং বিন্যাস সংরক্ষণ করে ডকুমেন্ট সামগ্রী (যেমন HTML-এ) প্রতিলিপি করুন।
এই টিউটোরিয়ালটি পিডিএফ ডকুমেন্ট সহ জেমিনি API ব্যবহার করার কিছু সম্ভাব্য উপায় প্রদর্শন করে। সমস্ত আউটপুট শুধুমাত্র পাঠ্য।
আপনি শুরু করার আগে: আপনার প্রকল্প এবং API কী সেট আপ করুন
Gemini API কল করার আগে, আপনাকে আপনার প্রকল্প সেট আপ করতে হবে এবং আপনার API কী কনফিগার করতে হবে।
আপনার API কী পান এবং সুরক্ষিত করুন
Gemini API কল করার জন্য আপনার একটি API কী প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে Google AI স্টুডিওতে একটি কী তৈরি করুন৷
এটি দৃঢ়ভাবে সুপারিশ করা হয় যে আপনি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে একটি API কী চেক করবেন না ৷
Google ক্লাউড সিক্রেট ম্যানেজার- এর মতো গোপন স্টোরে আপনার API কী সংরক্ষণ করা উচিত।
এই টিউটোরিয়ালটি অনুমান করে যে আপনি একটি পরিবেশ পরিবর্তনশীল হিসাবে আপনার API কী অ্যাক্সেস করছেন।
SDK প্যাকেজ ইনস্টল করুন এবং আপনার API কী কনফিগার করুন
Gemini API-এর জন্য Python SDK google-generativeai
প্যাকেজে রয়েছে।
পিপ ব্যবহার করে নির্ভরতা ইনস্টল করুন:
pip install -U google-generativeai
প্যাকেজটি আমদানি করুন এবং আপনার API কী দিয়ে পরিষেবাটি কনফিগার করুন:
import os import google.generativeai as genai genai.configure(api_key=os.environ['API_KEY'])
পিডিএফ সহ অনুরোধ করা হচ্ছে
এই নির্দেশিকা প্রদর্শন করে কিভাবে ফাইল এপিআই ব্যবহার করে পিডিএফ আপলোড এবং প্রক্রিয়া করতে হয় বা ইনলাইন ডেটা হিসাবে অন্তর্ভুক্ত করে।
প্রযুক্তিগত বিবরণ
জেমিনি 1.5 প্রো এবং 1.5 ফ্ল্যাশ সর্বাধিক 3,600 নথি পৃষ্ঠা সমর্থন করে। নথির পৃষ্ঠাগুলি অবশ্যই নিম্নলিখিত টেক্সট ডেটা MIME প্রকারগুলির মধ্যে একটিতে থাকতে হবে:
- পিডিএফ -
application/pdf
- জাভাস্ক্রিপ্ট -
application/x-javascript
,text/javascript
- পাইথন -
application/x-python
,text/x-python
- TXT -
text/plain
- এইচটিএমএল -
text/html
- CSS -
text/css
- মার্কডাউন -
text/md
- CSV -
text/csv
- XML -
text/xml
- RTF -
text/rtf
প্রতিটি নথি পৃষ্ঠা 258 টোকেনের সমতুল্য।
মডেলের প্রসঙ্গ উইন্ডো ছাড়াও একটি নথিতে পিক্সেলের সংখ্যার কোনো নির্দিষ্ট সীমা না থাকলেও, বড় পৃষ্ঠাগুলিকে তাদের আসল আকৃতির অনুপাত সংরক্ষণ করার সময় 3072x3072 এর সর্বোচ্চ রেজোলিউশনে স্কেল করা হয়, যখন ছোট পৃষ্ঠাগুলি 768x768 পিক্সেল পর্যন্ত স্কেল করা হয়। ব্যান্ডউইথ ব্যতীত নিম্ন আকারের পৃষ্ঠাগুলির জন্য কোনও খরচ হ্রাস বা উচ্চ রেজোলিউশনে পৃষ্ঠাগুলির জন্য কার্যক্ষমতার উন্নতি নেই৷
সেরা ফলাফলের জন্য:
- আপলোড করার আগে সঠিক অভিযোজনে পৃষ্ঠাগুলি ঘোরান৷
- ঝাপসা পেজ এড়িয়ে চলুন।
- একটি একক পৃষ্ঠা ব্যবহার করলে, পৃষ্ঠার পরে পাঠ্য প্রম্পট রাখুন।
পিডিএফ ইনপুট
20MB এর কম পিডিএফ পেলোডের জন্য, আপনি বেস64 এনকোডেড নথি আপলোড করা বা স্থানীয়ভাবে সঞ্চিত ফাইলগুলি সরাসরি আপলোড করার মধ্যে বেছে নিতে পারেন।
Base64 এনকোডেড নথি
আপনি সরাসরি URL থেকে PDF নথি প্রক্রিয়া করতে পারেন। এখানে একটি কোড স্নিপেট দেখানো হয়েছে কিভাবে এটি করতে হয়:
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 এর জন্য, আপনি নিম্নলিখিত পদ্ধতি ব্যবহার করতে পারেন:
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)
বড় পিডিএফ
আপনি যে কোনো আকারের একটি নথি আপলোড করতে ফাইল API ব্যবহার করতে পারেন। সর্বদা ফাইল API ব্যবহার করুন যখন মোট অনুরোধের আকার (ফাইল, পাঠ্য প্রম্পট, সিস্টেম নির্দেশাবলী, ইত্যাদি সহ) 20 MB এর থেকে বড় হয়৷
ফাইল API ব্যবহার করে একটি ফাইল আপলোড করতে media.upload
এ কল করুন। নিম্নলিখিত কোডটি একটি নথি ফাইল আপলোড করে এবং তারপরে models.generateContent
এ একটি কলে ফাইলটি ব্যবহার করে।
ইউআরএল থেকে বড় PDF (:#large-pdfs-urls)
ইউআরএল থেকে পাওয়া বৃহৎ পিডিএফ ফাইলের জন্য ফাইল এপিআই ব্যবহার করুন, এই ডকুমেন্টগুলিকে সরাসরি তাদের ইউআরএলগুলির মাধ্যমে আপলোড এবং প্রক্রিয়াকরণের প্রক্রিয়া সহজ করে:
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)
একাধিক পিডিএফ
জেমিনি 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)
ফাইল তালিকা
আপনি ফাইল API ব্যবহার করে আপলোড করা সমস্ত ফাইল এবং files.list
ব্যবহার করে তাদের URI গুলি তালিকাভুক্ত করতে পারেন।
import google.generativeai as genai
print("My files:")
for f in genai.list_files():
print(" ", f.name)
ফাইল মুছুন
ফাইল 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
সেট করতে পারেন। ক্যাশে সম্পর্কে অন্য কিছু পরিবর্তন করা সমর্থিত নয়।
নিম্নলিখিত উদাহরণে দেখানো হয়েছে কিভাবে CachedContent.update()
ব্যবহার করে একটি ক্যাশের ttl
আপডেট করতে হয়।
import datetime
cache.update(ttl=datetime.timedelta(hours=2))
একটি ক্যাশে মুছুন
ক্যাশিং পরিষেবা ক্যাশে থেকে ম্যানুয়ালি বিষয়বস্তু অপসারণের জন্য একটি মুছে ফেলার অপারেশন প্রদান করে। নিম্নলিখিত উদাহরণে দেখানো হয়েছে কিভাবে CachedContent.delete()
ব্যবহার করে একটি ক্যাশে মুছে ফেলা যায়।
cache.delete()
এরপর কি
এই গাইডটি দেখায় কিভাবে generateContent
ব্যবহার করতে হয় এবং প্রক্রিয়াকৃত নথি থেকে টেক্সট আউটপুট তৈরি করতে হয়। আরও জানতে, নিম্নলিখিত সংস্থানগুলি দেখুন:
- ফাইল প্রম্পটিং কৌশল : জেমিনি এপিআই টেক্সট, ইমেজ, অডিও এবং ভিডিও ডেটা সহ প্রম্পটিং সমর্থন করে, যা মাল্টিমডাল প্রম্পটিং নামেও পরিচিত।
- সিস্টেম নির্দেশাবলী : সিস্টেম নির্দেশাবলী আপনাকে আপনার নির্দিষ্ট প্রয়োজন এবং ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে মডেলের আচরণ পরিচালনা করতে দেয়।
- নিরাপত্তা নির্দেশিকা : কখনও কখনও জেনারেটিভ এআই মডেলগুলি অপ্রত্যাশিত আউটপুট তৈরি করে, যেমন আউটপুটগুলি ভুল, পক্ষপাতদুষ্ট বা আপত্তিকর। এই ধরনের আউটপুট থেকে ক্ষতির ঝুঁকি সীমিত করার জন্য পোস্ট-প্রসেসিং এবং মানব মূল্যায়ন অপরিহার্য।