לוגו זפירנט

חקור את OpenAI API עם Python - KDnuggets

תאריך:

חקר את OpenAI API עם Python
תמונה שנוצרה עם Ideogram.ai
 

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

זה ממש שינה את הנוף של יישום AI, וחברות רבות ממהרות כעת להפוך לדבר הגדול הבא.

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

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

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

כדי לעקוב אחר מאמר זה, יש כמה דברים שאתה צריך להכין.

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

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

לבסוף, עליך להתקין את חבילת OpenAI Python בסביבה שלך. אתה יכול לעשות זאת באמצעות הקוד הבא.

pip install openai

 

לאחר מכן, עליך להגדיר את המשתנה OpenAI Key Environment שלך באמצעות הקוד שלהלן.

import os

os.environ['OPENAI_API_KEY'] = 'YOUR API KEY'

 

עם הכל מוגדר, בואו נתחיל לחקור את ה-API של דגמי OpenAI עם Python.

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

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

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}
  ]
)

print(completion.choices[0].message.content)

 

  1. "לשחרר את הכוח של ניתוח חזוי כדי להניע החלטות מונעות נתונים!"
  2. "צולל עמוק לתוך אוקיינוס ​​הנתונים כדי לחשוף תובנות יקרות ערך."
  3. "הפיכת נתונים גולמיים למודיעין שניתן לפעול באמצעות אלגוריתמים מתקדמים."

קריאת ה-API למודל יצירת הטקסט משתמשת בנקודת הקצה של ה-API chat.completions כדי ליצור את תגובת הטקסט מההנחיה שלנו. 

ישנם שני פרמטרים נדרשים ליצירת טקסט: דגם והודעות. 

עבור הדגם, אתה יכול לבדוק את רשימת הדגמים שבהם אתה יכול להשתמש בדף הדגם הקשור. 

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

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

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

completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Generate me 3 jargons that I can use for my Social Media content as a Data Scientist content creator."},
        {"role": "assistant", "content": "Sure, here are three jargons: Data Wrangling is the key, Predictive Analytics is the future, and Feature Engineering help your model."},
        {"role": "user", "content": "Great, can you also provide me with 3 content ideas based on these jargons?"}
    ],
    max_tokens=150,
    temperature=0.7,
    top_p=1,
    frequency_penalty=0
)

print(completion.choices[0].message.content)

 

כמובן! להלן שלושה רעיונות לתוכן המבוססים על הז'רגונים שסופקו:

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

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

באשר לפרמטרים, הנה הסברים פשוטים על כל פרמטר שהשתמשנו בו:

  • max_tokens: פרמטר זה מגדיר את מספר המילים המרבי שהמודל יכול ליצור.
  • טמפרטורה: פרמטר זה שולט בחוסר החיזוי של הפלט של המודל. טמפרטורה גבוהה יותר מביאה לתפוקות מגוונות יותר ומלאות דמיון. הטווח המקובל הוא מ-0 עד אינסוף, אם כי ערכים מעל 2 הם יוצאי דופן.
  • top_p: ידוע גם בשם דגימת גרעין, פרמטר זה עוזר לקבוע את תת-קבוצת התפלגות ההסתברות שממנה שואב המודל את הפלט שלו. לדוגמה, ערך top_p של 0.1 אומר שהמודל מתייחס רק ל-10% העליונים של התפלגות ההסתברות לדגימה. הערכים שלו יכולים לנוע בין 0 ל-1, כאשר ערכים גבוהים יותר מאפשרים גיוון פלט גדול יותר.
  • תדירות_עונש: זה מעניש אסימונים חוזרים ונשנים בפלט של הדגם. ערך העונש יכול לנוע בין -2 ל-2, כאשר ערכים חיוביים מונעים את החזרה על אסימונים, וערכים שליליים עושים את ההיפך, ומעודדים שימוש חוזר במילים. ערך 0 מציין שלא מוחל עונש על חזרה.

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

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  response_format={ "type": "json_object" },
  messages=[
    {"role": "system", "content": "You are a helpful assistant designed to output JSON.."},
    {"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}
  ]
)

print(completion.choices[0].message.content)

 

{
"ז'רגונים": [
"מינוף ניתוח חזוי כדי לפתוח תובנות חשובות",
"התעמקות במורכבות של אלגוריתמים מתקדמים של למידת מכונה",
"רתימת הכוח של ביג דאטה כדי להניע החלטות מונעות נתונים"
]
}

התוצאה היא בפורמט JSON ותומכת בהנחיה שהזנו למודל.

להשלמה תיעוד API ליצירת טקסט, אתה יכול לבדוק אותם בדף הייעודי שלהם.

מודל OpenAI שימושי למקרי שימוש ביצירת טקסט ויכול גם לקרוא ל-API למטרות יצירת תמונות. 

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

from openai import OpenAI
from IPython.display import Image

client = OpenAI()

response = client.images.generate(
  model="dall-e-3",
  prompt="White Piano on the Beach",
  size="1792x1024",
  quality="hd",
  n=1,
)

image_url = response.data[0].url
Image(url=image_url)

 

חקר את OpenAI API עם Python
תמונה שנוצרה עם DALL·E 3
 

לגבי הפרמטרים, להלן ההסברים:

  • מודל: מודל יצירת התמונה לשימוש. נכון לעכשיו, ה-API תומך רק בדגמי DALL·E 3 ו-DALL·E 2. 
  • הפקודה: זהו התיאור הטקסטואלי שעל פיו המודל יפיק תמונה. 
  • גודל: קובע את הרזולוציה של התמונה שנוצרה. ישנן שלוש אפשרויות לדגם DALL·E 3 (1024×1024, 1024×1792 או 1792×1024).
  • איכות: פרמטר זה משפיע על איכות התמונה שנוצרת. אם יש צורך בזמן חישוב, "סטנדרטי" מהיר יותר מ-"hd".
  • n: מציין את מספר התמונות להפקה בהתבסס על ההנחיה. DALL·E 3 יכול ליצור רק תמונה אחת בכל פעם. DALL·E 2 יכול ליצור עד 10 בכל פעם.

אפשר גם ליצור תמונת וריאציה מהתמונה הקיימת, אם כי היא זמינה רק באמצעות מודל DALL·E 2. ה-API מקבל גם תמונות PNG מרובעות מתחת ל-4 MB.

from openai import OpenAI
from IPython.display import Image

client = OpenAI()

response = client.images.create_variation(
  image=open("white_piano_ori.png", "rb"),
  n=2,
  size="1024x1024"
)

image_url = response.data[0].url

Image(url=image_url)

 

ייתכן שהתמונה לא תהיה טובה כמו ה-DALL·E 3 דורות כפי שהיא משתמשת בדגם הישן יותר.

OpenAI היא חברה מובילה המספקת מודלים שיכולים להבין קלט תמונה. דגם זה נקרא דגם Vision, הנקרא לפעמים GPT-4V. המודל מסוגל לענות על שאלות בהתחשב בתמונה שנתנו.

בואו ננסה את ה-API של מודל Vision. בדוגמה זו, הייתי משתמש בתמונת הפסנתר הלבן שאנו יוצרים מדגם DALL·E 3 ואחסן אותה באופן מקומי. כמו כן, הייתי יוצר פונקציה שלוקחת את נתיב התמונה ומחזירה את טקסט תיאור התמונה. אל תשכח לשנות את המשתנה api_key למפתח ה-API שלך.

from openai import OpenAI
import base64
import requests
def provide_image_description(img_path):

    client = OpenAI()

    api_key = 'YOUR-API-KEY'
    # Function to encode the image
    def encode_image(image_path):
      with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')
   
    # Path to your image
    image_path = img_path
   
    # Getting the base64 string
    base64_image = encode_image(image_path)
   
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {api_key}"
    }
   
    payload = {
      "model": "gpt-4-vision-preview",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": """Can you describe this image? """
            },
            {
              "type": "image_url",
              "image_url": {
                "url": f"data:image/jpeg;base64,{base64_image}"
              }
            }
          ]
        }
      ],
      "max_tokens": 300
    }
   
    response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

    return response.json()['choices'][0]['message']['content']

 

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

אתה יכול להתאים את ערכי הטקסט במילון למעלה כך שיתאימו לדרישות מודל ה-Vision שלך.

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

כדי ליצור את האודיו, אתה יכול להשתמש בקוד שלהלן.

from openai import OpenAI
client = OpenAI()

speech_file_path = "speech.mp3"
response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="I love data science and machine learning"
)

response.stream_to_file(speech_file_path)

 

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

נכון לעכשיו, ישנם רק כמה פרמטרים שבהם אתה יכול להשתמש עבור מודל הטקסט לדיבור:

  • מודל: מודל הטקסט לדיבור לשימוש. רק שני דגמים זמינים (tts-1 או tts-1-hd), כאשר tts-1 מייעל את המהירות ו-tts-1-hd לאיכות.
  • קול: סגנון הקול לשימוש שבו כל הקול מותאם לאנגלית. המבחר הוא סגסוגת, הד, אגדה, אוניקס, נובה ושימר.
  • response_format: קובץ פורמט האודיו. נכון לעכשיו, הפורמטים הנתמכים הם mp3, opus, aac, flac, wav ו- pcm.
  • מהירות: מהירות האודיו שנוצרה. אתה יכול לבחור ערכים בין 0.25 ל-4. 
  • קלט: הטקסט ליצירת השמע. נכון לעכשיו, הדגם תומך רק בעד 4096 תווים.

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

בואו ננסה תמלול פשוט מקובץ האודיו שיצרנו בעבר.

from openai import OpenAI
client = OpenAI()

audio_file= open("speech.mp3", "rb")
transcription = client.audio.transcriptions.create(
  model="whisper-1",
  file=audio_file
)

print(transcription.text)

 

אני אוהב מדעי נתונים ולמידת מכונה.

אפשר גם לבצע תרגום מקבצי האודיו לשפה האנגלית. המודל עדיין לא זמין לתרגום לשפה אחרת.

from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
translate = client.audio.translations.create(
  model="whisper-1",
  file=audio_file
)

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

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

ספוט_ימג

המודיעין האחרון

ספוט_ימג