השתמש במודל DALL·E 2 של OpenAI כדי ליצור תמונות באמצעות Python.

אם אי פעם השתמשת ב-ChatGPT, אז היית עד לאינטואיציה שלו. עם ממשקי ה-API של OpenAI, יצירת קוד, השלמת טקסט, השוואת טקסט, הדרכת מודלים ויצירת תמונות נמצאים כולם בכבודה למפתחים לחקור ולהשתלב באפליקציות.

במדריך זה, תלמד כיצד להשתמש ב-API של OpenAI עם Python כדי ליצור, לערוך ולגוון תמונות באמצעות הנחיות בשפה טבעית.

תחילת העבודה עם OpenAI באמצעות Python

עליך להגדיר כמה דברים לפני שתתחיל במדריך זה. ראשית, ודא שהתקנת את הגרסה האחרונה של Python במחשב שלך. אם אתה משתמש בהפצת לינוקס כמו אובונטו, אולי תרצה גם לראות כיצד להתקין Python על אובונטו.

צור תיקיה חדשה עבור הפרויקט שלך ופתח את שורת הפקודה שלך לספריית הפרויקט שלך.

הבא הוא התקנת חבילת OpenAI. אתה צריך להתקין כרית כדי להמיר תמונות ל-RGBA תוך שימוש בנקודת הקצה של עריכת התמונה. אולי תרצה גם להתקין python-dotenv; תשתמש בזה כדי להסוות מפתחות סודיים.

אנו ממליצים ליצור א סביבה וירטואלית ייעודית של Python לבודד תלות.

הקוד המשמש בפרויקט זה זמין ב-a מאגר GitHub והוא בחינם עבורך לשימוש תחת רישיון MIT.

instagram viewer

כדי להתקין את python-dotenv, כרית, ו openai חבילות, הפעל את הפקודה הבאה בטרמינל:

pip התקנת כרית openai python-dotenv

עכשיו פנה אל OpenAI והיכנס ללוח המחוונים שלך כדי לתפוס את מפתח ה-API שלך:

  1. לאחר שנכנסת, לחץ על סמל הפרופיל שלך בחלק הימני העליון.
  2. לך ל הצג מפתחות API. אם מפתח ה-API שלך אינו גלוי, לחץ צור מפתח סודי חדש ליצור אחד חדש.
  3. העתק את המפתח הסודי שנוצר והדבק אותו במקום בטוח במחשב שלך. אולי תרצה להדביק אותו בקובץ משתנה סביבה בספריית השורש של הפרויקט שלך לצורך אבטחה.

כיצד ליצור ולערוך תמונות עם OpenAI API ב-Python

יצירת התמונות של OpenAI API כוללת נקודות קצה ליצירת תמונות חדשות, יצירת וריאציות תמונה ועריכתן.

בסעיפים הבאים, תחקור את נקודות הקצה הללו כדי ליצור, לערוך, לצבוט ולהוריד תמונות באמצעות הנחיות בשפה טבעית.

יצירת תמונות באמצעות OpenAI API

נקודת הקצה של יצירת תמונה מקבלת שלושה ארגומנטים של מילות מפתח. אלו כוללים מיידי, נ, ו גודל.

ה מיידי מילת מפתח היא מחרוזת טקסט המתארת ​​את התמונה שברצונך ליצור, בעוד נ הוא מספר התמונות שיש ליצור במהלך קריאת API. ה גודל הוא גודל התמונה, ונכון לכתיבת שורות אלה, הוא מקבל רק 256x256, 512x512 ו-1024x1024 פיקסלים, על פי הרשמי OpenAI תיעוד יצירת תמונות.

הקוד הבא יוצר תמונות באמצעות הנחיות בשפה טבעית ומוציא את כתובת האתר שלהן (כתובות תמונה):

יְבוּא openai
יְבוּא OS
יְבוּא בקשות
מ dotenv יְבוּא load_dotenv
מ PIL יְבוּא תמונה
load_dotenv()

מעמדImageGenerator:
def__init__(עצמי) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
עצמי. APIKey = openai.api_key
self.name = אף אחד

defgenerImage(עצמי, הנחיה, ImageCount, ImageSize):
לְנַסוֹת:
עצמי. APIKey
תגובה = openai. Image.create(
הנחיה = הנחיה,
n = ImageCount,
גודל = גודל תמונה,
)
self.image_url = תגובה['נתונים']

self.image_url = [תמונה["כתובת אתר"] ל תמונה ב self.image_url]
print (self.image_url)
לַחֲזוֹר self.image_url
מלבד openai.error. OpenAIError כפי ש ה:
הדפס (e.http_status)
הדפס (שגיאה אלקטרונית)

defdownloadImage(עצמי, שמות)-> אף אחד:
לְנַסוֹת:
self.name = שמות
ל כתובת אתר ב self.image_url:
image = requests.get (כתובת אתר)
ל שֵׁם ב self.name:
עם לִפְתוֹחַ("{}.png".format (שם), "וב") כפי ש ו:
f.write (image.content)
מלבד:
הדפס("חלה שגיאה")
לַחֲזוֹר שם עצמי

# הצג את הכיתה
imageGen = ImageGenerator()

# צור תמונות:
imageGen.generateImage(
הנחיה = "אריה ענק, דוב, קוף ונמר עומדים על מפל מים",
ImageCount = 2,
גודל תמונה = '1024x1024'
)

# הורד את התמונות:
imageGen.downloadImage (שמות=[
"בעלי חיים",
"חיות 2"
])

הקוד לעיל מכיל ImageGenerator כיתה עם ה כתובת אתר של תמונה ו APIKey תכונות. ה generImage השיטה מתאימה את הדרישות של נקודת הקצה של יצירת התמונה. זה מייצר נ כתובות אתרים המשתמשות בהנחיית השפה הטבעית, בהתאם ל ImageCount ערך.

למרות זאת, self.image_url מחלץ את כתובות ה-URL של התמונה שנוצרו מתגובת JSON לרשימה באמצעות לולאת for בהבנת רשימה.

הפלט נראה כך:

סוף - סוף, ה downloadImage השיטה מורידה כל תמונה על ידי בקשת הכתובות שנוצרו. שיטה זו מקבלת נ מספר השמות שברצונך לתת לכל תמונה.

עריכת תמונות באמצעות ה-API של OpenAI

נקודת הקצה לעריכה מאפשרת לך לערוך תמונה קיימת על סמך תבנית מסכה. המסכה היא בפורמט RGBA עם אזור מוער ושקוף וחייבת להיות בגודל זהה לתמונה שברצונך לערוך.

כאשר אתה מספק מסיכה, נקודת הקצה לעריכה מחליפה את האזור המסווה שלה בהנחיה החדשה בתמונה הקיימת כדי ליצור אחת חדשה. הוסף את השיטות הבאות למחלקה הקודמת לעיל:

מעמדImageGenerator:
def__init__(עצמי, ...):
...

defconvertImage(עצמי, שם מסכה):
image = Image.open("{}.png"‎.format (maskName))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png"‎.format (maskName))

לַחֲזוֹר rgba_image


defערוך תמונה(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
תגובה = openai. Image.create_edit(
תמונה = פתוח ("{}.png"‎.format (imageName), "רב"),
מסכה = פתוח ("{}.png"‎.format (maskName), "רב"),
הנחיה = הנחיה,
n = ImageCount,
גודל = גודל תמונה,
)
self.image_url = תגובה['נתונים']
self.image_url = [תמונה["כתובת אתר"] ל תמונה ב self.image_url]

print (self.image_url)
לַחֲזוֹר self.image_url

# ערוך תמונה קיימת:
imageGen.editImage(
imageName = "בעלי חיים",
maskName = "מסכה",
ImageCount = 1,
גודל תמונה = "1024x1024",
הנחיה = "נשר עומד על גדת הנהר ושותה מים עם הר גדול"
)

# הורד את התמונה הערוכה:
imageGen.downloadImage (שמות=[
"חיות חדשות",
])

ה convertImage השיטה ממירה את תמונת המסכה לפורמט RGBA. אתה יכול להשיג זאת באמצעות להמיר שיטה מחבילת הכריות של Python (מיובאת כ-PIL).

לאחר ההמרה, הוא שומר את המסכה החדשה כעקיפה של המסכה הקיימת. לפיכך, המרת תמונה היא המשימה הראשונה בשיטת העריכה (ערוך תמונה) מבצע.

ה תמונה קורא את תמונת היעד מקובץ קיים, בעוד ה- מסכה קורא את תמונת המסכה שהומרה, שחייבת להיות לה אזור שקוף.

ניתן לסמן אזור שקוף במסכה באמצעות תוכנה לעריכת תמונות כמו Gimp או Photoshop.

לדוגמה, התמונה שאנו רוצים לערוך באמצעות ההנחיה בקוד למעלה היא:

כעת, נניח שאתה רוצה להחליף את האנטילופה העומדת על גדת הנהר בעיט, כפי שצוין בהנחיה.

כך נראית המסכה:

מכיוון שמילת המפתח בהנחיה מהקוד שלמעלה אומרת "נשר עומד על גדת הנהר", הנקודה הריקה מתמלאת על ידי נשר, ומחליף את האנטילופה שהייתה שם קודם.

הנה התמונה החדשה במקרה הזה:

אתה יכול לנסות לשחק עם נקודת הקצה של עריכת התמונה באמצעות תמונות אחרות.

יצירת וריאציות תמונה ב-Python באמצעות OpenAI API

נקודת הקצה של הווריאציה מייצרת תמונות חלופיות מתמונה קיימת. הרחב את מחלקת מחולל התמונות עוד יותר על ידי הוספת שיטת וריאציה של תמונה כפי שמוצג להלן:

מעמדImageGenerator:
def__init__(עצמי) -> str:
...

defImageVariations(self, ImageName, VariationCount, ImageSize):
תגובה = openai. Image.create_variation(
תמונה = פתוח ("{}.png".format (ImageName), "רב"),
n = VariationCount,
גודל = גודל תמונה
)

self.image_url = תגובה['נתונים']

self.image_url = [תמונה["כתובת אתר"] ל תמונה ב self.image_url]
print (self.image_url)
לַחֲזוֹר self.image_url

# הצג את הכיתה
imageGen = ImageGenerator()

# צור וריאציות לתמונה קיימת
imageGen.imageVariations(
שם תמונה = "חיות_חדשות",
VariationCount = 2,
גודל תמונה = "1024x1024"
)

# הורד את הווריאציות
imageGen.downloadImage (שמות=[
"וריאציה 1",
"וריאציה 2",
]
)

הקוד לעיל יוצר וריאציות של תמונה.

השתמש ב-OpenAI לטובתך

בעוד שאנשים מסוימים חוששים שבינה מלאכותית עלולה לגנוב את עבודתם, זה עשוי להיות מקלט, אחרי הכל - אם תלמד לשלוט בה ולהשתמש בה. מדריך זה ליצירת תמונה של OpenAI הוא רק אחד מני מקרי שימוש רבים של AI בעולם האמיתי. ממשקי API של OpenAI מספקים מודלים שימושיים שהוכשרו מראש שתוכל לשלב בקלות באפליקציה שלך. אז אתה יכול לקחת את האתגר ולבנות משהו שווה מהמדריך הזה.

למרות שה-API ליצירת תמונות עדיין בגרסת בטא נכון לכתיבת שורות אלו, הוא כבר מאפשר לך ליצור יצירות אמנות דמיוניות. יש לקוות שהוא יקבל עדכונים נוספים כדי לאפשר שינוי קנה מידה ולקבל גדלי תמונה משתנים.