মিথুন ডিফল্টরূপে অসংগঠিত পাঠ্য তৈরি করে, তবে কিছু অ্যাপ্লিকেশনের জন্য কাঠামোগত পাঠ্য প্রয়োজন। এই ব্যবহারের ক্ষেত্রে, আপনি জেমিনিকে JSON এর সাথে প্রতিক্রিয়া জানাতে বাধ্য করতে পারেন, স্বয়ংক্রিয় প্রক্রিয়াকরণের জন্য উপযুক্ত একটি স্ট্রাকচার্ড ডেটা ফর্ম্যাট। আপনি একটি enum-এ উল্লিখিত বিকল্পগুলির একটির সাথে প্রতিক্রিয়া জানাতে মডেলটিকে সীমাবদ্ধ করতে পারেন।
মডেল থেকে কাঠামোগত আউটপুট প্রয়োজন হতে পারে এমন কয়েকটি ব্যবহারের ক্ষেত্রে এখানে রয়েছে:
- সংবাদপত্রের নিবন্ধগুলি থেকে কোম্পানির তথ্য টেনে কোম্পানিগুলির একটি ডাটাবেস তৈরি করুন।
- জীবনবৃত্তান্ত থেকে প্রমিত তথ্য টেনে আনুন।
- রেসিপি থেকে উপাদানগুলি বের করুন এবং প্রতিটি উপাদানের জন্য একটি মুদির ওয়েবসাইটের লিঙ্ক প্রদর্শন করুন।
আপনার প্রম্পটে, আপনি জেমিনিকে JSON-ফরম্যাট করা আউটপুট তৈরি করতে বলতে পারেন, কিন্তু মনে রাখবেন যে মডেলটি JSON তৈরির নিশ্চয়তা দেয় না এবং JSON ছাড়া কিছুই নয়। আরও নির্ধারক প্রতিক্রিয়ার জন্য, আপনি একটি responseSchema
ফিল্ডে একটি নির্দিষ্ট JSON স্কিমা পাস করতে পারেন যাতে মিথুন সবসময় একটি প্রত্যাশিত কাঠামোর সাথে প্রতিক্রিয়া জানায়।
আপনার পছন্দের SDK-এর মাধ্যমে বা সরাসরি REST API ব্যবহার করে generateContent
পদ্ধতি ব্যবহার করে কীভাবে JSON তৈরি করবেন এই নির্দেশিকা আপনাকে দেখায়। উদাহরণগুলি কেবলমাত্র পাঠ্য ইনপুট দেখায়, যদিও জেমিনি ছবি , ভিডিও এবং অডিও অন্তর্ভুক্ত মাল্টিমোডাল অনুরোধগুলিতে JSON প্রতিক্রিয়াও তৈরি করতে পারে।
আপনি শুরু করার আগে: আপনার প্রকল্প এবং 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'])
JSON তৈরি করুন
যখন মডেলটিকে JSON আউটপুট করার জন্য কনফিগার করা হয়, তখন এটি JSON- ফরম্যাটেড আউটপুট সহ যেকোনো প্রম্পটে সাড়া দেয়।
আপনি একটি স্কিমা সরবরাহ করে JSON প্রতিক্রিয়ার গঠন নিয়ন্ত্রণ করতে পারেন। মডেলটিতে স্কিমা সরবরাহ করার দুটি উপায় রয়েছে:
- প্রম্পটে পাঠ্য হিসাবে
- একটি কাঠামোগত স্কিমা হিসাবে মডেল কনফিগারেশনের মাধ্যমে সরবরাহ করা হয়
উভয় পদ্ধতিই Gemini 1.5 Flash এবং Gemini 1.5 Pro উভয় ক্ষেত্রেই কাজ করে।
প্রম্পটে পাঠ্য হিসাবে একটি স্কিমা সরবরাহ করুন
নিম্নলিখিত উদাহরণটি মডেলটিকে একটি নির্দিষ্ট JSON ফর্ম্যাটে কুকি রেসিপিগুলি ফেরত দেওয়ার জন্য অনুরোধ করে৷
যেহেতু মডেলটি প্রম্পটে টেক্সট থেকে ফরম্যাট স্পেসিফিকেশন পায়, তাই আপনি স্পেসিফিকেশনটি কীভাবে উপস্থাপন করেন তাতে আপনার কিছুটা নমনীয়তা থাকতে পারে। একটি JSON স্কিমা প্রতিনিধিত্ব করার জন্য যেকোনো যুক্তিসঙ্গত বিন্যাস কাজ করতে পারে।
model = genai.GenerativeModel("gemini-1.5-pro-latest")
prompt = """List a few popular cookie recipes in JSON format.
Use this JSON schema:
Recipe = {'recipe_name': str, 'ingredients': list[str]}
Return: list[Recipe]"""
result = model.generate_content(prompt)
print(result)
আউটপুট এই মত দেখতে পারে:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
মডেল কনফিগারেশনের মাধ্যমে একটি স্কিমা সরবরাহ করুন
নিম্নলিখিত উদাহরণ নিম্নলিখিত কাজ করে:
- JSON এর সাথে প্রতিক্রিয়া জানাতে একটি স্কিমার মাধ্যমে কনফিগার করা একটি মডেলকে তাৎক্ষণিক করে।
- মডেলকে কুকি রেসিপি ফেরত দিতে অনুরোধ করে।
import typing_extensions as typing
class Recipe(typing.TypedDict):
recipe_name: str
ingredients: list[str]
model = genai.GenerativeModel("gemini-1.5-pro-latest")
result = model.generate_content(
"List a few popular cookie recipes.",
generation_config=genai.GenerationConfig(
response_mime_type="application/json", response_schema=list[Recipe]
),
)
print(result)
আউটপুট এই মত দেখতে পারে:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
স্কিমা সংজ্ঞা সিনট্যাক্স
আপনার মডেল কনফিগারেশনের response_schema
বৈশিষ্ট্যে JSON প্রতিক্রিয়ার জন্য স্কিমা নির্দিষ্ট করুন। response_schema
এর মান অবশ্যই একটি হতে হবে:
- পাইথন
typing
মডিউল মডিউলে সংজ্ঞায়িত একটি টাইপ ইঙ্গিত টীকা। -
genai.protos.Schema
এর একটি উদাহরণ।
একটি টাইপ ইঙ্গিত টীকা সহ একটি স্কিমা সংজ্ঞায়িত করুন
একটি স্কিমা সংজ্ঞায়িত করার সবচেয়ে সহজ উপায় হল একটি টাইপ ইঙ্গিত টীকা। এটি পূর্ববর্তী উদাহরণে ব্যবহৃত পদ্ধতি:
generation_config={"response_mime_type": "application/json",
"response_schema": list[Recipe]}
Gemini API Python ক্লায়েন্ট লাইব্রেরি typing
টীকাগুলির নিম্নলিখিত উপসেটের সাথে সংজ্ঞায়িত স্কিমাগুলিকে সমর্থন করে (যেখানে AllowedType
যেকোন অনুমোদিত ধরনের টীকা):
-
int
-
float
-
bool
-
str
(বা enum) -
list[AllowedType]
- ডিক ধরনের জন্য:
-
dict[str, AllowedType]
। এই টীকাটি সমস্ত dict মানকে একই ধরণের বলে ঘোষণা করে, কিন্তু কী কী অন্তর্ভুক্ত করা উচিত তা নির্দিষ্ট করে না। -
typing.TypedDict
এর ব্যবহারকারী-সংজ্ঞায়িত সাবক্লাস। TypedDict। এই পদ্ধতির সাহায্যে আপনি মূল নামগুলি নির্দিষ্ট করতে এবং প্রতিটি কীগুলির সাথে যুক্ত মানগুলির জন্য বিভিন্ন প্রকার সংজ্ঞায়িত করতে পারেন৷ - ব্যবহারকারী-সংজ্ঞায়িত ডেটা ক্লাস ।
TypedDict
সাবক্লাসের মতো, এই পদ্ধতির সাহায্যে আপনি মূল নামগুলি নির্দিষ্ট করতে এবং প্রতিটি কীগুলির সাথে যুক্ত মানগুলির জন্য বিভিন্ন প্রকার সংজ্ঞায়িত করতে পারেন।
-
genai.protos.Schema
প্রোটোকল বাফার দিয়ে একটি স্কিমা সংজ্ঞায়িত করুন
Gemini API genai.protos.Schema
প্রোটোকল বাফার সংজ্ঞা কিছু অতিরিক্ত স্কিমা বৈশিষ্ট্য সমর্থন করে যা টাইপ ইঙ্গিতগুলির জন্য সমর্থিত নয়, যার মধ্যে রয়েছে:
- স্ট্রিং জন্য Enums
- সাংখ্যিক প্রকারের জন্য বিন্যাস নির্দিষ্ট করা (উদাহরণস্বরূপ, পূর্ণসংখ্যার জন্য
int32
বাint64
) - কোন ক্ষেত্র প্রয়োজন তা উল্লেখ করা।
আপনার যদি এই বৈশিষ্ট্যগুলির প্রয়োজন হয়, ফাংশন কলিং-এ চিত্রিত পদ্ধতিগুলির একটি ব্যবহার করে একটি genai.protos.Schema
চালু করুন : নিম্ন স্তরের অ্যাক্সেস ।
আউটপুট সীমাবদ্ধ করতে একটি enum ব্যবহার করুন
কিছু ক্ষেত্রে আপনি মডেলটিকে বিকল্পগুলির তালিকা থেকে একটি একক বিকল্প বেছে নিতে চাইতে পারেন। এই আচরণটি বাস্তবায়ন করতে, আপনি আপনার স্কিমাতে একটি enum পাস করতে পারেন। আপনি একটি enum বিকল্প ব্যবহার করতে পারেন যেখানে আপনি response_schema
একটি str
ব্যবহার করতে পারেন, কারণ একটি enum আসলে স্ট্রিংগুলির একটি তালিকা। একটি JSON স্কিমার মতো, একটি enum আপনাকে আপনার অ্যাপ্লিকেশনের প্রয়োজনীয়তা পূরণের জন্য মডেল আউটপুট সীমাবদ্ধ করতে দেয়।
উদাহরণস্বরূপ, অনুমান করুন যে আপনি বাদ্যযন্ত্রের চিত্রগুলিকে পাঁচটি বিভাগের মধ্যে একটিতে শ্রেণীবদ্ধ করার জন্য একটি অ্যাপ্লিকেশন তৈরি করছেন: "Percussion"
, "String"
, "Woodwind"
, "Brass"
বা " Keyboard
"৷ আপনি এই কাজটিতে সাহায্য করার জন্য একটি enum তৈরি করতে পারেন।
এই বিভাগে কোড উদাহরণগুলি চালানোর আগে, Google Generative AI লাইব্রেরি আমদানি করতে ভুলবেন না:
import google.generativeai as genai
নিম্নলিখিত উদাহরণে, আপনি response_schema
হিসাবে enum ক্লাস Choice
পাস করেন এবং মডেলটিকে সবচেয়ে উপযুক্ত enum বিকল্পটি বেছে নেওয়া উচিত।
import enum
class Choice(enum.Enum):
PERCUSSION = "Percussion"
STRING = "String"
WOODWIND = "Woodwind"
BRASS = "Brass"
KEYBOARD = "Keyboard"
model = genai.GenerativeModel("gemini-1.5-pro-latest")
organ = genai.upload_file(media / "organ.jpg")
result = model.generate_content(
["What kind of instrument is this:", organ],
generation_config=genai.GenerationConfig(
response_mime_type="text/x.enum", response_schema=Choice
),
)
print(result) # Keyboard
পাইথন SDK API-এর জন্য টাইপ ঘোষণা অনুবাদ করবে। কিন্তু API আসলে OpenAPI 3.0 স্কিমার একটি উপসেট গ্রহণ করে ( স্কিমা )। আপনি JSON হিসাবে স্কিমা পাস করতে পারেন:
model = genai.GenerativeModel("gemini-1.5-pro-latest")
organ = genai.upload_file(media / "organ.jpg")
result = model.generate_content(
["What kind of instrument is this:", organ],
generation_config=genai.GenerationConfig(
response_mime_type="text/x.enum",
response_schema={
"type": "STRING",
"enum": ["Percussion", "String", "Woodwind", "Brass", "Keyboard"],
},
),
)
print(result) # Keyboard
মৌলিক মাল্টিপল চয়েস সমস্যার বাইরে, আপনি JSON বা ফাংশন কলিংয়ের জন্য স্কিমার যে কোনো জায়গায় একটি enum ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি মডেলটিকে রেসিপি শিরোনামের একটি তালিকার জন্য জিজ্ঞাসা করতে পারেন এবং প্রতিটি শিরোনামকে একটি জনপ্রিয়তা গ্রেড দিতে একটি Grade
এনাম ব্যবহার করতে পারেন:
import enum
from typing_extensions import TypedDict
class Grade(enum.Enum):
A_PLUS = "a+"
A = "a"
B = "b"
C = "c"
D = "d"
F = "f"
class Recipe(TypedDict):
recipe_name: str
grade: Grade
model = genai.GenerativeModel("gemini-1.5-pro-latest")
result = model.generate_content(
"List about 10 cookie recipes, grade them based on popularity",
generation_config=genai.GenerationConfig(
response_mime_type="application/json", response_schema=list[Recipe]
),
)
print(result) # [{"grade": "a+", "recipe_name": "Chocolate Chip Cookies"}, ...]
enums দিয়ে শুরু করতে, enum quickstart Colab ব্যবহার করে দেখুন।