Last chance! 50% off DataCamp Premium
Sale ends in
कुछ हफ्ते पहले, ChatGPT अपने नए इमेज जनरेशन मॉडल के साथ वायरल हो गया। यह मॉडल अब तक का सबसे बेहतर है जो मैंने देखा है। इसकी छवियों को संपादित करने की क्षमता इसे अलग बनाती है। यह बेहद सटीक है और कल्पना को हकीकत में बदलना बेहद आसान बना देता है। अन्य मॉडल भी यह कर सकते हैं, लेकिन उतनी सटीकता के साथ नहीं।
उनके इंटरफ़ेस में छवियाँ बनाना आसान है, क्योंकि हमें केवल एक टेक्स्ट प्रॉम्प्ट देना होता है। हालांकि, एक प्रोग्रामर के रूप में, मैं उत्सुक था कि यह API में आए ताकि मैं इसे प्रोग्रामेटिक तरीके से इस्तेमाल कर सकूँ। वह दिन आखिर आ गया, और मैं यह ब्लॉग लिख रहा हूँ ताकि आपको Python के साथ इसका उपयोग करना सिखा सकूँ।
यदि आप केवल चैट इंटरफ़ेस में इसका उपयोग करना सीखने में रुचि रखते हैं, तो मैंने पहले यह GPT-4o इमेज जनरेशन गाइड लिखा था, जिसमें आठ व्यावहारिक उदाहरण हैं। आप हमारा अपडेटेड लेख भी देख सकते हैं, जिसमें नए ChatGPT Images को GPT-Image-1.5 मॉडल के साथ कवर किया गया है।
नया GPT इमेज मॉडल संरक्षित है, यानी इसे उपयोग करने के लिए अतिरिक्त सत्यापन की आवश्यकता होती है। इस खंड में, हम API सेटअप करना बताएँगे। यदि आपके पास पहले से API कुंजी है, तो आप पहला चरण छोड़ सकते हैं।
पहला कदम API कुंजी जनरेट करना है। हम उनके प्लेटफ़ॉर्म में लॉग इन करके और API keys पेज पर जाकर एक कुंजी बना सकते हैं। फिर, हम "Create new secret key" बटन पर क्लिक करते हैं।
कुंजी बन जाने के बाद, .env नाम की फ़ाइल बनाएँ और उसे निम्न प्रारूप में कॉपी करें:
OPENAI_API_KEY=<paste_your_api_key_here>
अन्य OpenAI मॉडलों से एक बड़ा अंतर यह है कि GPT इमेज API का उपयोग करने के लिए हमें अपनी organization का सत्यापन कराना होता है। इसका कारण यह है कि GPT-Image-1 वास्तविक और विस्तृत छवियाँ बना सकता है, जो संभावित दुरुपयोग की चिंताएँ उठाता है, जैसे डीपफेक या अनुचित सामग्री बनाना। संगठन सत्यापित करके, OpenAI उपयोग पर बेहतर निगरानी रख सकता है और अपनी सुरक्षा नीतियों को लागू कर सकता है।
आप बिना कंपनी के भी अपनी organization सत्यापित कर सकते हैं। हालाँकि, ध्यान दें कि इस प्रक्रिया में आपके सरकारी पहचान-पत्र की जानकारी देना और चेहरे का सत्यापन पूरा करना शामिल है।
सत्यापन करने के लिए, OpenAI API प्लेटफ़ॉर्म के general टैब पर जाएँ और "Verifications" अनुभाग के अंतर्गत बटन पर क्लिक करें।
यह प्रक्रिया एक थर्ड पार्टी द्वारा कराई जाती है और इसमें शामिल है:
पूरी प्रक्रिया में कुछ ही मिनट लगते हैं, और फिर इसे प्रोसेस होने में लगभग 15 मिनट लगते हैं।
इस ट्यूटोरियल के लिए, हम निम्न Python पैकेज स्थापित करेंगे:
openai: आधिकारिक OpenAI पैकेज, जो हमें उनकी API से इंटरैक्ट करने देता है।dotenv: एक Python पैकेज, जो ऊपर बनाई गई .env फ़ाइल से API कुंजी को सुरक्षित रूप से लोड करना आसान बनाता है।हम इन्हें इस कमांड से स्थापित कर सकते हैं:
pip install openai dotenv
देखते हैं कि हम gpt-image-1 के साथ एक छवि कैसे बना सकते हैं। उसी फ़ोल्डर में जहाँ .env फ़ाइल है, एक नया Python फ़ाइल बनाएँ, उदाहरण के लिए generate_image.py।
फिर, आवश्यक पैकेज आयात करें:
# Import the packages
from openai import OpenAI
from dotenv import load_dotenv
import os
import base64
import time
ध्यान दें कि os और base64 बिल्ट-इन Python पैकेज हैं और इन्हें इंस्टॉल करने की आवश्यकता नहीं है।
अगला, हम API कुंजी लोड करते हैं और OpenAI क्लाइंट इनिशियलाइज़ करते हैं:
# Load the API key
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
# Initialize the OpenAI client
client = OpenAI(api_key=api_key)
उसके बाद, हम input() बिल्ट-इन फ़ंक्शन का उपयोग करके उपयोगकर्ता से एक टेक्स्ट प्रॉम्प्ट लेते हैं और API को इमेज जनरेशन के लिए अनुरोध भेजते हैं:
# Ask the user to input a prompt in the terminal
print("What do you want to generate?")
prompt = input("> ")
print("Generating image...")
# Send the prompt to the API
img = client.images.generate(
model="gpt-image-1",
prompt=prompt,
background="auto",
n=1,
quality="high",
size="1024x1024",
output_format="png",
moderation="auto",
)
अंत में, हम जनरेट की गई छवि को फ़ाइल में सहेजते हैं:
# Save the image into a file
image_bytes = base64.b64decode(img.data[0].b64_json)
with open(f"output_{int(time.time())}.png", "wb") as f:
f.write(image_bytes)
पूरा स्क्रिप्ट यहाँ मिल सकता है। इस स्क्रिप्ट को चलाने के लिए, यह कमांड उपयोग करें:
python generate_image.py
आउटपुट सहित एक उदाहरण:

इस खंड में, हम gpt-image-1 मॉडल के सबसे प्रासंगिक पैरामीटर्स बताते हैं:
prompt: वह पाठ्य निर्देश जो बताता है कि मॉडल को कैसी छवि बनानी है।background: छवि की पृष्ठभूमि का प्रकार। यह "transparent", "opaque", या "auto" में से एक होना चाहिए। डिफ़ॉल्ट मान "auto" है, जिसमें मॉडल सामग्री के आधार पर उपयुक्त पृष्ठभूमि चुनता है। ध्यान दें कि JPEG छवियाँ पारदर्शी पृष्ठभूमि का समर्थन नहीं करतीं।n: जनरेट की जाने वाली छवियों की संख्या। 1 से 10 के बीच एक संख्या होनी चाहिए।quality: जनरेट की गई छवि की गुणवत्ता। "high", "medium", या "low" में से एक होनी चाहिए, डिफ़ॉल्ट "high" है।size: पिक्सेल में छवि का आकार। यह "1024x1024" (वर्ग), "1536x1024" (लैंडस्केप), "1024x1536" (पोर्ट्रेट) में से एक होना चाहिए।output_format: इमेज फ़ॉर्मेट। यह "png", "jpeg", या "webp" में से एक होना चाहिए। डिफ़ॉल्ट "png" है।moderation: कंटेंट मॉडरेशन का स्तर। या तो "low" (कम प्रतिबंधात्मक फ़िल्टर) या डिफ़ॉल्ट "auto" होना चाहिए।हमने gpt-image-1 मॉडल के लिए सबसे महत्वपूर्ण पैरामीटर्स कवर कर लिए हैं। अधिक विवरण और पैरामीटर्स की पूरी सूची के लिए आधिकारिक API दस्तावेज़ देखें।
यहाँ एक साइड-बाय-साइड तुलना है जिसमें एक ही प्रॉम्प्ट से अलग-अलग quality पर जनरेट की गई छवियाँ हैं:

हम देखते हैं कि पहली बिल्ली (सबसे कम quality के साथ) की आँखों के आसपास कुछ आर्टिफैक्ट्स हैं, और quality बढ़ने पर छवि काफी अधिक वास्तविक दिखने लगती है।
यहाँ कार्टून-शैली के आउटपुट के साथ एक और उदाहरण है:

इस मामले में भी, हम देखते हैं कि quality जितनी अधिक होती है, छवि उतनी ही निखरी हुई लगती है। हालाँकि, मेरी राय में, यह उन सामग्रियों के लिए कम प्रासंगिक है जिन्हें वास्तविक दिखना नहीं है।
याद रखें कि quality जितनी अधिक होगी, लागत और computation समय भी उतना ही बढ़ेगा, इसलिए उपयोग-प्रकरण के अनुसार एक अच्छा संतुलन खोजना बेहतर है। मैं सुझाव दूँगा कि प्रत्येक उपयोग-प्रकरण के लिए स्वीकार्य परिणाम देने वाले न्यूनतम मान को देखने हेतु पैरामीटर्स को low से high तक आज़माएँ।
अपने प्रयोगों में, मैंने पाया कि मॉडल ने अधिकांशतः इस पैरामीटर को अनदेखा किया। यहाँ साइड-बाय-साइड उदाहरण हैं जहाँ मैंने background पैरामीटर और प्रॉम्प्ट में transparency के निर्देशों को बदला:

पहले उदाहरण में, transparency पैरामीटर को अनदेखा कर दिया गया। दूसरे में, मैंने प्रॉम्प्ट में transparency के निर्देश जोड़े, और यह थोड़ा बेहतर काम किया। अंतिम में, मैंने opaque background माँगा, लेकिन प्रॉम्प्ट में स्टिकर चाहने की बात कही और पारदर्शी background मिल गया।
मैं फिर भी सुझाव दूँगा कि आप अपनी चाहत के अनुसार पैरामीटर सेट करें, लेकिन इसे मज़बूत करने के लिए प्रॉम्प्ट में भी इच्छित परिणाम स्पष्ट लिखें।
जैसा कि मैंने प्रस्तावना में कहा, GPT-Image-1 का सबसे रोमांचक हिस्सा इसकी छवियाँ संपादित करने की क्षमता है। आइए सीखते हैं कि इसे किसी छवि को एडिट करने के लिए कैसे कहें और फिर कुछ उपयोग-प्रकरणों का पता लगाएँ।
छवियाँ एडिट करने के लिए, अधिकांश कोड पुन: उपयोग किया जा सकता है। बस इतना बदलता है कि client.images.generate() के बजाय हम client.images.edit() फ़ंक्शन का उपयोग करते हैं।
यहाँ एक उदाहरण है:
img = client.images.edit(
model="gpt-image-1",
image=[
open("my-image.jpg", "rb"),
],
prompt=prompt,
n=1,
quality="high",
size="1024x1536",
)
यहाँ नया पैरामीटर image है। यह एडिट में उपयोग की जाने वाली इनपुट छवियों की सूची है। इस मामले में, हम केवल एक छवि my-image.jpg दे रहे हैं जो स्क्रिप्ट के उसी फ़ोल्डर में है।
यहाँ GPT Image 1 का उपयोग करके मेरी एक फ़ोटो एडिट करने का उदाहरण है:

ध्यान दें कि क्योंकि मूल छवि का पोर्ट्रेट अनुपात है, मैंने पोर्ट्रेट आकार 1024x1536 का उपयोग किया। हालाँकि, यह मूल छवि के समान अनुपात नहीं है। एडिटिंग मोड में भी, मॉडल केवल ऊपर बताए गए तीन आकारों में ही आउटपुट दे सकता है।
पूरा एडिटिंग स्क्रिप्ट यहाँ उपलब्ध है।
एडिटिंग मोड एक mask पैरामीटर देता है, जिसका उपयोग हम उन क्षेत्रों को निर्दिष्ट करने के लिए कर सकते हैं जहाँ छवि को एडिट करना है। मास्क अधिकतम 4 MB का PNG होना चाहिए और छवि के समान आकार का होना चाहिए। 100% पारदर्शिता वाले क्षेत्र वे क्षेत्र हैं जिन्हें GPT Image 1 एडिट कर सकता है।
हम मास्क उसी तरह प्रदान करते हैं जैसे इमेज, बस इस मामले में यह सूची नहीं है:
img = client.images.edit(
model="gpt-image-1",
image=[
open(sys.argv[1], "rb"),
],
# We provide the mask like this
mask=open("mask.png", "rb"),
prompt=prompt,
n=1,
quality="high",
size="1536x1024",
)
हालाँकि, जब मैंने इसके साथ प्रयोग किया, तो यह बहुत अच्छा काम नहीं किया, और ऑनलाइन भी ऐसे कई उदाहरण दिखे जहाँ लोगों को इसी तरह की समस्याएँ आईं।
यहाँ एक उदाहरण है:

मैंने इसे विशिष्ट स्थानों पर तत्व जोड़ने के लिए भी आज़माया, और यह लगातार काम नहीं किया। ठीक वैसे ही जैसे इमेज जनरेशन के लिए background पैरामीटर का उपयोग करना, मुझे लगा कि जो मैं चाहता हूँ उसे प्रॉम्प्ट में वर्णित करना सबसे अच्छा काम करता है।
मॉडल एक साथ कई छवियों को प्रोसेस और संयोजित कर सकता है। नीचे दिए गए उदाहरण में, हम तीन अलग-अलग ड्रिंक्स की छवियों को मिलाकर एक मार्केटिंग पोस्टर बनाते हैं:

हम image पैरामीटर में इन तीनों छवियों को एक सूची के रूप में इस प्रकार देते हैं:
prompt = """
Create a vibrant and eye-catching marketing poster to
promote the cold drinks offerings at our coffee shop.
"""
img = client.images.edit(
model="gpt-image-1",
# We can provide multiple images at once
image=[
open("latte.png", "rb"),
open("americano.png", "rb"),
open("icetea.png", "rb"),
],
prompt=prompt,
size="1536x1024",
)
परिणाम यह रहा:

छवियाँ जनरेट करने का शुल्क इन आधारों पर लगता है:

कभी-कभी इन लागतों का अंदाज़ा लगाना कठिन होता है क्योंकि हमें नहीं पता कि किसी छवि में कितने टोकन होते हैं।
क्योंकि आउटपुट छवियों के आयाम ज्ञात हैं, हमें पता है कि प्रत्येक के लिए कितने टोकन आवश्यक हैं, इसलिए हम आउटपुट इमेज टोकन की कीमत (जो सबसे महँगा हिस्सा है) के सटीक मान दे सकते हैं:

यह मूल्य निर्धारण छवि की quality और size पर निर्भर करता है। अधिक विवरण के लिए GPT Image 1 प्राइसिंग पेज देखें।
जब हम कोई छवि बनाते हैं, तो API उपयोग किए गए टोकन की संख्या लौटाती है, इसलिए ऊपर दी गई जानकारी के साथ मिलाकर हम ठीक-ठीक लागत जान सकते हैं।
हम परिणाम के usage फ़ील्ड को प्रिंट करके उपयोग किए गए टोकन की मात्रा दिखा सकते हैं:
img = client.images.generate(
model="gpt-image-1",
prompt=prompt,
background="transparent",
n=1,
quality="medium",
size="1024x1024",
moderation="auto",
output_format="png",
)
# Add this to see the usage
print("Prompt tokens:", img.usage.input_tokens_details.text_tokens)
print("Input images tokens:", img.usage.input_tokens_details.image_tokens)
print("Output image tokens:", img.usage.output_tokens)
आउटपुट:
Prompt tokens: 8
Input images tokens: 0
Output image tokens: 272
API की कुछ कमियों के बावजूद, जैसे मास्किंग और transparency का पर्याप्त भरोसेमंद न होना, मॉडल प्रॉम्प्ट में दी गई निर्देशों को उच्च सटीकता से निष्पादित कर सकता है।
मुझे लगता है कि यह मॉडल इसके इर्द-गिर्द बहुत-सी संभावनाएँ खोलता है। इस ट्यूटोरियल में, हमने इसका उपयोग कैसे करना है, इसकी बुनियाद सीखी। यहाँ कुछ विचार हैं जिन्हें आप यहाँ सीखी बातों पर आगे बढ़ाने के लिए तलाश सकते हैं:
इन पाठ्यक्रमों के साथ AI सीखें!
कोर्स
लर्निंग पाथ
कोर्स