Gemini API, डिफ़ॉल्ट रूप से जवाबों को बिना स्ट्रक्चर वाले टेक्स्ट के तौर पर दिखाता है. हालांकि, कुछ इस्तेमाल के उदाहरणों के लिए, JSON जैसे स्ट्रक्चर्ड टेक्स्ट की ज़रूरत होती है. उदाहरण के लिए, हो सकता है कि आप जवाब का इस्तेमाल, डाउनस्ट्रीम के उन अन्य टास्क के लिए कर रहे हों जिनके लिए डेटा स्कीमा की ज़रूरत होती है.
यह पक्का करने के लिए कि मॉडल का जनरेट किया गया आउटपुट हमेशा किसी खास स्कीमा के मुताबिक हो, रिस्पॉन्स स्कीमा तय किया जा सकता है. यह मॉडल के रिस्पॉन्स के लिए ब्लूप्रिंट की तरह काम करता है. इसके बाद, पोस्ट-प्रोसेसिंग के कम चरण के साथ, मॉडल के आउटपुट से सीधे डेटा निकाला जा सकता है.
यहां कुछ उदाहरण दिए गए हैं:
पक्का करें कि मॉडल का रिस्पॉन्स, मान्य JSON फ़ॉर्मैट में हो और आपके दिए गए स्कीमा के मुताबिक हो.
उदाहरण के लिए, यह मॉडल रेसिपी के लिए स्ट्रक्चर्ड एंट्री जनरेट कर सकता है. इनमें रेसिपी का नाम, सामग्री की सूची, और बनाने का तरीका हमेशा शामिल होता है. इसके बाद, इस जानकारी को अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में आसानी से पार्स और दिखाया जा सकता है.यह तय करना कि किसी मॉडल को, कैटगरी तय करने के टास्क के दौरान किस तरह के जवाब देने चाहिए.
उदाहरण के लिए, मॉडल को टेक्स्ट पर एनोटेट करने के लिए, मॉडल के जनरेट किए गए लेबल के बजाय, लेबल के किसी खास सेट का इस्तेमाल किया जा सकता है. जैसे,positive
औरnegative
जैसे एनम के खास सेट. इन लेबल मेंgood
,positive
,negative
याbad
जैसी वैल्यू हो सकती हैं.
इस गाइड में, generateContent
को कॉल करते समय responseSchema
का इस्तेमाल करके, JSON आउटपुट जनरेट करने का तरीका बताया गया है. यह सिर्फ़ टेक्स्ट इनपुट पर फ़ोकस करता है. हालांकि, Gemini, मल्टीमोडल अनुरोधों के लिए भी स्ट्रक्चर्ड जवाब दे सकता है. इन अनुरोधों में, इमेज, वीडियो, और ऑडियो को इनपुट के तौर पर शामिल किया जाता है.
इस पेज पर सबसे नीचे, और उदाहरण दिए गए हैं. जैसे, आउटपुट के तौर पर, एनम वैल्यू जनरेट करने का तरीका. स्ट्रक्चर्ड आउटपुट जनरेट करने के अन्य उदाहरण देखने के लिए, Google Cloud दस्तावेज़ में उदाहरण के तौर पर दिए गए स्कीमा और मॉडल रिस्पॉन्स की सूची देखें.
Gemini API के साथ काम करने के अन्य विकल्प
वैकल्पिक तौर पर, Gemini API के किसी अन्य वर्शन "Google AI" के साथ एक्सपेरिमेंट करें
Google AI Studio और Google AI क्लाइंट SDK टूल का इस्तेमाल करके, सीमाओं के अंदर और जहां उपलब्ध हो वहां बिना किसी शुल्क के ऐक्सेस पाएं. इन SDK टूल का इस्तेमाल, मोबाइल और वेब ऐप्लिकेशन में सिर्फ़ प्रोटोटाइप बनाने के लिए किया जाना चाहिए.Gemini API के काम करने के तरीके के बारे में जानने के बाद, हमारे Vertex AI in Firebase SDK टूल पर माइग्रेट करें. इन SDK टूल के दस्तावेज़ यहां दिए गए हैं. इनमें मोबाइल और वेब ऐप्लिकेशन के लिए कई ज़रूरी सुविधाएं हैं. जैसे, Firebase App Check का इस्तेमाल करके एपीआई को गलत इस्तेमाल से बचाना और अनुरोधों में बड़ी मीडिया फ़ाइलों के लिए सहायता.
Vertex AI Gemini API सर्वर-साइड को कॉल करें (जैसे, Python, Node.js या Go के साथ)
Gemini API के लिए, सर्वर-साइड Vertex AI SDK टूल, Firebase Genkit या Firebase Extensions का इस्तेमाल करें.
शुरू करने से पहले
अगर आपने अब तक ऐसा नहीं किया है, तो Vertex AI in Firebase SDK टूल के लिए शुरुआती गाइड को पूरा करें. पक्का करें कि आपने ये सभी काम कर लिए हैं:
नया या मौजूदा Firebase प्रोजेक्ट सेट अप करें. इसमें, ब्लेज़ कीमत वाले प्लान का इस्तेमाल करना और ज़रूरी एपीआई चालू करना शामिल है.
अपने ऐप्लिकेशन को Firebase से कनेक्ट करें. इसमें, अपने ऐप्लिकेशन को रजिस्टर करना और अपने ऐप्लिकेशन में Firebase कॉन्फ़िगरेशन जोड़ना शामिल है.
SDK टूल जोड़ें और अपने ऐप्लिकेशन में Vertex AI सेवा और जनरेटिव मॉडल को शुरू करें.
अपने ऐप्लिकेशन को Firebase से कनेक्ट करने, SDK टूल जोड़ने, और Vertex AI सेवा और जनरेटिव मॉडल को शुरू करने के बाद, Gemini API को कॉल किया जा सकता है.
पहला चरण: जवाब का स्कीमा तय करना
मॉडल के आउटपुट के स्ट्रक्चर, फ़ील्ड के नाम, और हर फ़ील्ड के लिए उम्मीद के मुताबिक डेटा टाइप की जानकारी देने के लिए, रिस्पॉन्स स्कीमा तय करें.
जब कोई मॉडल जवाब जनरेट करता है, तो वह आपके प्रॉम्प्ट में मौजूद फ़ील्ड के नाम और कॉन्टेक्स्ट का इस्तेमाल करता है. हमारा सुझाव है कि आप अपने मकसद को साफ़ तौर पर बताने के लिए, साफ़ तौर पर दिखने वाले स्ट्रक्चर, साफ़ तौर पर दिखने वाले फ़ील्ड के नाम, और ज़रूरत के हिसाब से जानकारी का इस्तेमाल करें.
रिस्पॉन्स स्कीमा के लिए ध्यान देने वाली बातें
रिस्पॉन्स स्कीमा लिखते समय इन बातों का ध्यान रखें:
रिस्पॉन्स स्कीमा का साइज़, इनपुट टोकन की सीमा में गिना जाता है.
रिस्पॉन्स स्कीमा की सुविधा, इन रिस्पॉन्स MIME टाइप के साथ काम करती है:
application/json
: रिस्पॉन्स स्कीमा में बताए गए तरीके के हिसाब से JSON आउटपुट करना (स्ट्रक्चर्ड आउटपुट की ज़रूरी शर्तों के लिए मददगार)text/x.enum
: रिस्पॉन्स स्कीमा में बताई गई वैल्यू के तौर पर, एक enum वैल्यू दिखाएं (वर्गीकरण के टास्क के लिए मददगार)
रिस्पॉन्स स्कीमा की सुविधा, इन स्कीमा फ़ील्ड के साथ काम करती है:
enum
items
maxItems
nullable
properties
required
अगर किसी ऐसे फ़ील्ड का इस्तेमाल किया जाता है जो काम नहीं करता, तो मॉडल आपके अनुरोध को मैनेज कर सकता है. हालांकि, वह उस फ़ील्ड को अनदेखा कर देता है. ध्यान दें कि ऊपर दी गई सूची, OpenAPI 3.0 स्कीमा ऑब्जेक्ट का सबसेट है. Vertex AI स्कीमा का रेफ़रंस देखें.
डिफ़ॉल्ट रूप से, Vertex AI in Firebase SDKs के लिए, सभी फ़ील्ड को तब तक ज़रूरी माना जाता है, जब तक कि आपने उन्हें
optionalProperties
ऐरे में 'ज़रूरी नहीं है' के तौर पर नहीं बताया है. इन वैकल्पिक फ़ील्ड के लिए, मॉडल इन फ़ील्ड को अपने-आप भर सकता है या इन्हें छोड़ सकता है.ध्यान दें कि यह Vertex AI Gemini API के लिए डिफ़ॉल्ट व्यवहार से उलट है.
दूसरा चरण: JSON जनरेट करने के लिए, रिस्पॉन्स स्कीमा के साथ प्रॉम्प्ट भेजना
नीचे दिए गए उदाहरण में, स्ट्रक्चर्ड JSON आउटपुट जनरेट करने का तरीका बताया गया है.
स्ट्रक्चर्ड आउटपुट जनरेट करने के लिए, मॉडल को शुरू करने के दौरान आपको सही responseMimeType
(इस उदाहरण में, application/json
) के साथ-साथ वह responseSchema
भी बताना होगा जिसका इस्तेमाल मॉडल को करना है.
responseSchema
का इस्तेमाल, Gemini के सभी मॉडल पर किया जा सकता है. हालांकि, Gemini 1.0 मॉडल पर ऐसा नहीं किया जा सकता.
import FirebaseVertexAI
// Provide a JSON schema object using a standard format.
// Later, pass this schema object into `responseSchema` in the generation config.
let jsonSchema = Schema.object(
properties: [
"characters": Schema.array(
items: .object(
properties: [
"name": .string(),
"age": .integer(),
"species": .string(),
"accessory": .enumeration(values: ["hat", "belt", "shoes"]),
],
optionalProperties: ["accessory"]
)
),
]
)
// Initialize the Vertex AI service and the generative model.
let model = VertexAI.vertexAI().generativeModel(
modelName: "gemini-2.0-flash",
// In the generation config, set the `responseMimeType` to `application/json`
// and pass the JSON schema object into `responseSchema`.
generationConfig: GenerationConfig(
responseMIMEType: "application/json",
responseSchema: jsonSchema
)
)
let prompt = "For use in a children's card game, generate 10 animal-based characters."
let response = try await model.generateContent(prompt)
print(response.text ?? "No text in response.")
अपने इस्तेमाल के उदाहरण और ऐप्लिकेशन के हिसाब से सही मॉडल और जगह चुनने का तरीका जानें.
कुछ और उदाहरण
स्ट्रक्चर्ड आउटपुट का इस्तेमाल और उसे जनरेट करने के तरीके के बारे में ज़्यादा उदाहरण देखने के लिए, Google Cloud दस्तावेज़ में उदाहरण के तौर पर दिए गए स्कीमा और मॉडल रिस्पॉन्स की सूची देखें.
आउटपुट के तौर पर, एनम की वैल्यू जनरेट करना
यहां दिए गए उदाहरण में, किसी कैटगरी में बांटने के टास्क के लिए, रिस्पॉन्स स्कीमा का इस्तेमाल करने का तरीका बताया गया है. मॉडल से, किसी फ़िल्म की जानकारी के आधार पर, उसकी शैली की पहचान करने के लिए कहा जाता है. आउटपुट, एक प्लैन-टेक्स्ट वाली वैल्यू होती है. मॉडल, दी गई सूची में मौजूद वैल्यू में से कोई वैल्यू चुनता है.
स्ट्रक्चर्ड क्लासिफ़िकेशन का यह टास्क पूरा करने के लिए, आपको मॉडल को शुरू करने के दौरान सही responseMimeType
(इस उदाहरण में, text/x.enum
) के साथ-साथ वह responseSchema
भी बताना होगा जिसका इस्तेमाल मॉडल को करना है.
import FirebaseVertexAI
// Provide an enum schema object using a standard format.
// Later, pass this schema object into `responseSchema` in the generation config.
let enumSchema = Schema.enumeration(values: ["drama", "comedy", "documentary"])
// Initialize the Vertex AI service and the generative model.
let model = VertexAI.vertexAI().generativeModel(
modelName: "gemini-2.0-flash",
// In the generation config, set the `responseMimeType` to `text/x.enum`
// and pass the enum schema object into `responseSchema`.
generationConfig: GenerationConfig(
responseMIMEType: "text/x.enum",
responseSchema: enumSchema
)
)
let prompt = """
The film aims to educate and inform viewers about real-life subjects, events, or people.
It offers a factual record of a particular topic by combining interviews, historical footage,
and narration. The primary purpose of a film is to present information and provide insights
into various aspects of reality.
"""
let response = try await model.generateContent(prompt)
print(response.text ?? "No text in response.")
अपने इस्तेमाल के उदाहरण और ऐप्लिकेशन के हिसाब से सही मॉडल और जगह चुनने का तरीका जानें.
कॉन्टेंट जनरेशन को कंट्रोल करने के अन्य विकल्प
- प्रॉम्प्ट डिज़ाइन के बारे में ज़्यादा जानें, ताकि आप अपनी ज़रूरतों के हिसाब से आउटपुट जनरेट करने के लिए, मॉडल पर असर डाल सकें.
- मॉडल के जवाब जनरेट करने के तरीके को कंट्रोल करने के लिए, मॉडल पैरामीटर को कॉन्फ़िगर करें. Gemini मॉडल के लिए, इन पैरामीटर में ज़्यादा से ज़्यादा आउटपुट टोकन, तापमान, टॉपK, और टॉपP शामिल हैं. Imagen मॉडल के लिए, इनमें आसपेक्ट रेशियो, व्यक्ति जनरेशन, वॉटरमार्किंग वगैरह शामिल हैं.
- सुरक्षा सेटिंग का इस्तेमाल करके, ऐसे जवाबों की संभावना को कम करें जिन्हें नुकसान पहुंचाने वाला माना जा सकता है. इनमें नफ़रत फैलाने वाली भाषा और साफ़ तौर पर सेक्शुअल ऐक्ट दिखाने वाला कॉन्टेंट शामिल है.
- मॉडल के व्यवहार को कंट्रोल करने के लिए, सिस्टम के निर्देश सेट करें. यह सुविधा, "प्रीऐब्सटेंस" की तरह है. इसे मॉडल को असली उपयोगकर्ता से मिलने वाले निर्देशों के ज़रिए इस्तेमाल करने से पहले जोड़ा जाता है.
Vertex AI in Firebase के इस्तेमाल के अपने अनुभव के बारे में सुझाव/राय देना या शिकायत करना