فتح مستقبل الذكاء الاصطناعي مع GPT-4o: مقدمة شاملة للقدرات متعددة الوسائط
مع استمرار تطور التكنولوجيا، يوفر تقاطع الذكاء الاصطناعي وتطوير الويب إمكانيات تحويلية متزايدة. أحد أكثر التطورات الواعدة في هذا المجال هو GPT-4o، نموذج متقدم يدمج وسائط متعددة مثل النص والصوت والفيديو لتوليد مخرجات متعددة الوسائط. سيرشدك هذا الدليل عبر الميزات الرئيسية والقدرات والتطبيقات المحتملة لـ GPT-4o، محضراً إياك لتسخير هذه التكنولوجيا في مشاريعك الخاصة.
الخلفية
قبل ظهور GPT-4o، كانت نماذج الذكاء الاصطناعي مثل ChatGPT تعمل في وضع أحادي الوسيط، باستخدام نماذج منفصلة للنص والرؤية والصوت. ومع ذلك، يدمج GPT-4o كل هذه القدرات في نموذج موحد واحد، يعالج المدخلات بشكل متماسك عبر تنسيقات النص والمرئية والسمعية. هذا التكامل السلس يعزز القدرة على فهم وتوليد المحتوى متعدد الوسائط، ممهداً الطريق لتطبيقات أكثر ديناميكية وتفاعلية.
قدرات API الحالية
حالياً، يدعم GPT-4o API مدخلات النص والصورة مع مخرجات نصية، مشابهاً لـ GPT-4 Turbo. ومع ذلك، من المهم ملاحظة أنه من المتوقع إدخال وسائط إضافية، بما في ذلك الصوت، قريباً.
البداية
تثبيت OpenAI SDK لـ Python
لبدء استخدام قدرات GPT-4o، تحتاج أولاً إلى تثبيت OpenAI SDK لـ Python:
%pip install --upgrade openai --quietتكوين عميل OpenAI
قم بإعداد عميل OpenAI بإنشاء واستخدام مفتاح API. إذا لم يكن لديك مفتاح API، اتبع هذه الخطوات للحصول على واحد:
- أنشئ مشروعاً جديداً
- ولّد مفتاح API في مشروعك
- قم بإعداد مفتاح API كمتغير بيئي
بمجرد حصولك على مفتاح API، قم بتكوين عميل OpenAI:
from openai import OpenAI
import os
# تعيين مفتاح API واسم النموذج
MODEL="gpt-4o"
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY", ""))إرسال طلب اختبار
لنبدأ بمدخل نصي بسيط:
completion = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "system",
"content": "أنت مساعد مفيد. ساعدني في واجب الرياضيات!"
},
{
"role": "user",
"content": "مرحباً! هل يمكنك حل 2+2؟"
}
]
)
print("المساعد: " + completion.choices[0].message.content)المخرجات:
المساعد: بالطبع! 2 + 2 = 4. إذا كان لديك أي أسئلة أخرى، لا تتردد في السؤال!
معالجة الصور
يمكن لـ GPT-4o معالجة الصور واتخاذ إجراءات ذكية بناءً على محتوى الصورة. إليك كيفية توفير الصور بتنسيقين: Base64 المشفر و URL.
معالجة صور Base64
أولاً، معاينة الصورة ثم تشفيرها:
from IPython.display import Image, display, Audio, Markdown
import base64
IMAGE_PATH = "data/triangle.png"
# معاينة الصورة للسياق
display(Image(IMAGE_PATH))
# فتح ملف الصورة وتشفيرها كسلسلة base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image = encode_image(IMAGE_PATH)
response = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "system",
"content": "أنت مساعد مفيد يرد بـ Markdown. ساعدني في واجب الرياضيات!"
},
{
"role": "user",
"content": [
{"type": "text", "text": "ما هي مساحة المثلث؟"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}}
]
}
],
temperature=0.0
)
print(response.choices[0].message.content)معالجة صور URL
يمكنك أيضاً إرسال صورة باستخدام URL:
response = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "system",
"content": "أنت مساعد مفيد يرد بـ Markdown. ساعدني في واجب الرياضيات!"
},
{
"role": "user",
"content": [
{"type": "text", "text": "ما هي مساحة المثلث؟"},
{"type": "image_url", "image_url":
{
"url":
"https://example.com/triangle.png"
}
}
]
}
],
temperature=0.0
)
print(response.choices[0].message.content)معالجة الفيديو
بينما لا يدعم API الحالي مدخلات الفيديو مباشرة، يمكنك أخذ عينات من إطارات الفيديو وتقديمها كصور. إليك كيفية معالجة فيديو واستخدام البيانات المرئية والصوتية:
إعداد معالجة الفيديو
أولاً، قم بتثبيت الحزم اللازمة:
%pip install opencv-python --quiet
%pip install moviepy --quietمعالجة الفيديو إلى إطارات وصوت
import cv2
from moviepy.editor import VideoFileClip
import time
import base64
VIDEO_PATH = "data/keynote_recap.mp4"
def process_video(video_path, seconds_per_frame=2):
base64Frames = []
base_video_path, _ = os.path.splitext(video_path)
video = cv2.VideoCapture(video_path)
total_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
fps = video.get(cv2.CAP_PROP_FPS)
frames_to_skip = int(fps * seconds_per_frame)
curr_frame = 0
while curr_frame < total_frames - 1:
video.set(cv2.CAP_PROP_POS_FRAMES, curr_frame)
success, frame = video.read()
if not success:
break
_, buffer = cv2.imencode(".jpg", frame)
base64Frames.append(base64.b64encode(buffer).decode("utf-8"))
curr_frame += frames_to_skip
video.release()
audio_path = f"{base_video_path}.mp3"
clip = VideoFileClip(video_path)
clip.audio.write_audiofile(audio_path, bitrate="32k")
clip.audio.close()
clip.close()
print(f"تم استخراج {len(base64Frames)} إطار")
print(f"تم استخراج الصوت إلى {audio_path}")
return base64Frames, audio_path
base64Frames, audio_path = process_video(VIDEO_PATH, seconds_per_frame=1)توليد ملخصات بالبيانات المرئية والصوتية
ولّد ملخصاً شاملاً باستخدام الإطارات ونسخ الصوت:
# نسخ الصوت
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=open(audio_path, "rb"),
)
# توليد ملخص باستخدام البيانات المرئية والصوتية
response = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "system",
"content": """أنت تولد ملخص فيديو.
أنشئ ملخصاً للفيديو المقدم ونسخته. أجب بـ Markdown"""
},
{
"role": "user",
"content": [
"هذه هي إطارات الفيديو.",
*map(lambda x: {"type": "image_url",
"image_url":
{"url": f'data:image/jpg;base64,{x}', "detail": "low"}},
base64Frames),
{"type": "text", "text": f"نسخ الصوت هو: {transcription.text}"}
]
}
],
temperature=0,
)
print(response.choices[0].message.content)الخلاصة
دمج وسائط المدخلات المتعددة (النص والصورة وقريباً الصوت) يعزز بشكل كبير أداء النموذج في مجموعة متنوعة من المهام. هذا النهج متعدد الوسائط يسمح بفهم وتفاعل شامل، يعكس عن كثب كيفية إدراك البشر للمعلومات ومعالجتها.
حالياً، يدعم GPT-4o في API مدخلات النص والصورة، مع توقع إضافة قدرات الصوت قريباً. دمج هذه القدرات المتقدمة في مشاريع تطوير الويب الخاصة بك يمكن أن يفتح أبعاداً جديدة من التفاعلات والوظائف التي يقودها الذكاء الاصطناعي.
المراجع
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.