شعار زيفيرنت

استكشاف واجهة برمجة تطبيقات OpenAI باستخدام Python – KDnuggets

التاريخ:

استكشاف OpenAI API مع بايثون
الصورة التي تم إنشاؤها باستخدام Ideogram.ai
 

من منا لم يسمع عن OpenAI؟ لقد غيّر مختبر أبحاث الذكاء الاصطناعي العالم بفضل منتجه الشهير ChatGPT.

لقد غيّر مشهد تنفيذ الذكاء الاصطناعي حرفيًا، وتسارع العديد من الشركات الآن لتصبح الشيء الكبير التالي.

على الرغم من المنافسة الشديدة، لا تزال OpenAI هي الشركة المفضلة لأي احتياجات أعمال للذكاء الاصطناعي التوليدي لأنها تمتلك أحد أفضل النماذج والدعم المستمر. توفر الشركة العديد من نماذج الذكاء الاصطناعي التوليدي الحديثة مع إمكانيات مهام متنوعة: إنشاء الصور وتحويل النص إلى كلام وغير ذلك الكثير. 

جميع النماذج التي تقدمها 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. سوف نستخدم نموذج 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 مفيدًا لحالات استخدام إنشاء النص ويمكنه أيضًا استدعاء واجهة برمجة التطبيقات لأغراض إنشاء الصور. 

باستخدام نموذج 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 مع بايثون
تم إنشاء الصورة باستخدام 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 ميغابايت.

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 هي شركة رائدة تقدم نماذج يمكنها فهم إدخال الصور. يُسمى هذا النموذج بنموذج الرؤية، ويسمى أحيانًا GPT-4V. النموذج قادر على الإجابة على الأسئلة في ضوء الصورة التي قدمناها.

دعونا نجرب واجهة برمجة تطبيقات نموذج الرؤية. في هذا المثال، سأستخدم صورة البيانو البيضاء التي أنشأناها من نموذج 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']

 

تحتوي هذه الصورة على بيانو كبير موضوع على شاطئ هادئ. البيانو باللون الأبيض، مما يشير إلى اللمسة النهائية التي غالبًا ما ترتبط بالأناقة. تقع الآلة على حافة الشاطئ مباشرة، حيث تداعب الأمواج اللطيفة الرمال بخفة، مما يخلق رغوة تلامس قاعدة البيانو والمقعد المطابق. توحي المناطق المحيطة بالشاطئ بشعور من الهدوء والعزلة مع سماء زرقاء صافية وسحب رقيقة في المسافة وبحر هادئ يمتد إلى الأفق. تنتشر حول البيانو على الرمال العديد من الأصداف البحرية ذات الأحجام والأشكال المختلفة، مما يسلط الضوء على الجمال الطبيعي والجو الهادئ للمكان. إن تجاور آلة موسيقية كلاسيكية في بيئة شاطئية طبيعية يخلق تكوينًا سرياليًا وشعريًا بصريًا.

يمكنك تعديل القيم النصية في القاموس أعلاه لتتوافق مع متطلبات نموذج الرؤية الخاص بك.

توفر 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 الخاصة به والمواصفات التي تحتاج إلى معرفتها قبل استخدامها.
 
 

كورنليوس يودا ويجايا هو مساعد مدير علوم البيانات وكاتب البيانات. أثناء عمله بدوام كامل في Allianz Indonesia، فهو يحب مشاركة نصائح Python والبيانات عبر وسائل التواصل الاجتماعي ووسائط الكتابة. يكتب كورنيليوس عن مجموعة متنوعة من موضوعات الذكاء الاصطناعي والتعلم الآلي.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة