1. معرفی مدل دیداری GPT-4

مدل دیداری GPT-4 (GPT-4V) یک مدل هوش مصنوعی چند حالتی است که توسط OpenAI معرفی شده است و توانایی‌های درک تصویری بر اساس GPT-4 را یکپارچه کرده است. بر خلاف مدل‌های سنتی پردازش متن، GPT-4V قادر است محتواهای تصویری را دریافت و تحلیل کرده و توضیحاتی ارائه دهد، به سوالات پاسخ دهد و در تعاملاتی مرتبط با تصاویر شرکت کند.

کاربردهای مثال:

  • شناسایی و دسته‌بندی محصول: پلتفرم‌های تجارت الکترونیک می‌توانند از GPT-4V برای شناسایی و ارائه توضیحات برای تصاویر محصول استفاده کنند تا بهبود در سیستم‌های جستجو و پیشنهادها کمک کند.
  • کمک به تصمیم‌گیری‌های پزشکی: هر چند GPT-4V برای تشخیص مستقیم تصاویر حرفه‌ای پزشکی مناسب نیست، اما می‌تواند به نیروهای پزشکی در درک اولیه تصویر کمک کند و در سازماندهی داده‌ها.
  • آموزش و پژوهش: در تدریس و پژوهش علمی، GPT-4V می‌تواند برای تحلیل نمودارها، نتایج آزمایش‌ها و تفسیر خودکار داده‌های تصویر علمی استفاده شود.
  • نظارت و تجزیه و تحلیل ترافیک: با تجزیه و تحلیل تصاویر نظارت بر ترافیک، GPT-4V می‌تواند در گزارش‌دهی و شناسایی حوادث به صورت زمان واقعی به سیستم‌های مدیریت ترافیک کمک کند.

2. مثال ساده

در زیر یک مثال ساده استفاده از درخواست CURL برای نشان دادن چگونگی استفاده از مدل دیداری GPT-4 برای تحلیل تصاویر وجود دارد:

پارامترهای درخواست API:

  • model: ورژن مدل مورد استفاده، در این مورد "gpt-4-vision-preview" مشخص می‌شود.
  • messages: شامل تعریف نقش و محتوا است، که محتوا می‌تواند شامل متن و لینک‌های تصویر باشد.
  • max_tokens: حداکثر محدودیت طول برای تولید متن را مشخص می‌کند.

مثال درخواست CURL:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "این تصویر چه چیزی دارد؟"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "لینک تصویر شما"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

درخواست فوق، ما یک تصویر را به مدل دیداری GPT-4 ارسال کرده و یک سوال ساده پرسیدیم: "این تصویر چه چیزی دارد؟" مدل تصویر را تجزیه کرده و براساس محتوای تصویر پاسخ خواهد داد.

3. بارگذاری تصاویر با استفاده از رمزگذاری Base64

در برخی موارد، ممکن است نیاز باشد تصویر محلی را به مدل دیداری GPT-4 بارگذاری کنیم. در این حالت، ما می‌توانیم داده‌های تصویر را با استفاده از رمزگذاری base64 به درخواست API اضافه کنیم.

مثال کد Python:

import base64
import requests

api_key = "YOUR_OPENAI_API_KEY"

def encode_image(image_path):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode('utf-8')

image_path = "مسیر_تصویر_شما.jpg"

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": "تصویر این چه چیزی است؟"
        },
        {
          "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)

print(response.json())

در کد بالا، ابتدا یک فایل تصویر محلی را به رشته‌ی رمزگذاری شده base64 تبدیل می‌کنیم و سپس این رشته را به عنوان بخشی از درخواست به API ارسال می‌کنیم. پاسخ مدل شامل توضیحات محتوای تصویر است.

4. مدیریت ورودی‌های چندتصویری

گاهی اوقات لازم است تا بتوانیم چندین تصویر را به صورت همزمان تحلیل کنیم. مدل دیداری GPT-4 پشتیبانی از دریافت ورودی‌های چندتصویری به صورت همزمان دارد و اجازه می‌دهد تا کاربران بتوانند در مورد این تصاویر سوالاتی بپرسند یا تفاوت‌های آن‌ها را مقایسه کنند.

نمونه ورودی چندتصویری:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "تفاوت این تصاویر چیه؟"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "آدرس اولین تصویر",
            }
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "آدرس دومین تصویر",
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

در این درخواست، ما دو تصویر را به API ارسال می‌کنیم. مدل هر تصویر را به طور جداگانه تحلیل کرده و بر اساس سوالات مطرح شده، توضیحات و مقایسه‌ها ارائه می‌دهد. این رویکرد برای تجزیه و تحلیل کلی یک مجموعه از تصاویر ایده‌آل است.

5. تنظیم سطح جزئیات تحلیل تصویر

هنگام استفاده از مدل دیداری GPT-4 برای تجزیه و تحلیل تصاویر، می‌توانید سطح جزئیات را بر اساس نیازهای خود تنظیم کنید. با تنظیم پارامتر detail، می‌توانید یکی از گزینه‌های کم، زیاد یا خودکار را انتخاب کنید. در ادامه توضیح مفصلی از هر گزینه و نحوه تنظیم آن آورده شده است:

  • کم: انتخاب سطح کم جزئیات، مدل "با کیفیت بالا" تصویر را غیرفعال می‌کند. این مدل یک نسخه با کم‌رزولوشن از تصویر با ابعاد ۵۱۲ پیکسل در ۵۱۲ پیکسل دریافت می‌کند و از بودجه‌ای معادل ۶۵ توکن برای نمایش تصویر استفاده می‌کند. این گزینه برای مواردی که نیازی به جزئیات بالا ندارند مناسب است و به دست آوردن زمان پاسخ سریعتر و مصرف کمتر توکن ورودی کمک می‌کند.

  • زیاد: سطح جزئیات بالا به مدل اجازه می‌دهد ابتدا تصویر با کیفیت پایین را ببیند و سپس نسخه جزئیات دار و دقیق‌تری را بر اساس اندازه تصویر ورودی، در یک شبکه ۵۱۲ پیکسلی ایجاد کند. هر بخش جزئیات دار با بودجه دو برابری معادل ۱۲۹ توکن نمایش داده می‌شود (یعنی هر بخش پیش‌فرض ۶۵ توکن دارد).

  • خودکار: سطح جزئیات خودکار تعیین می‌کند که بر اساس اندازه تصویر ورودی، از سطح کم یا زیاد استفاده شود.

مثال کد زیر نشان می‌دهد چگونه سطح جزئیات را تنظیم کنیم:

import base64
import requests

api_key = "کلید_API_OPENAI"

مسیر_تصویر = "مسیر_تا_تصویر_شما.jpg"

تصویر_base64 = base64.b64encode(open(مسیر_تصویر, "rb").خواندن()).decode('utf-8')

سرآیند‌ها = {
  "Content-Type": "application/json",
  "Authorization": f"Bearer {api_key}"
}

داده = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "چه چیزی در این تصویر است؟"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{تصویر_base64}",
            "detail": "زیاد"  # تنظیم به سطح جزئیات زیاد
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

پاسخ = requests.post("https://api.openai.com/v1/chat/completions", headers=سرآیند‌ها, json=داده)

print(پاسخ.json())

6. درک محدودیت‌های مدل و مدیریت تصاویر

6.1. محدودیت‌های مدل

با وجود قابلیت‌های قدرتمند مدل دیداری GPT-4، این مدل بدون محدودیت نیست و درک این محدودیت‌ها برای استفاده از آن برای درک تصاویر حیاتی است. در ادامه یک بررسی اجمالی از برخی از محدودیت‌های شناخته شده آورده شده است:

  • تصاویر پزشکی: این مدل برای تفسیر تصاویر پزشکی حرفه‌ای مانند اسکن CT مناسب نیست و نباید برای مشاوره پزشکی استفاده شود.

  • متن‌های غیرانگلیسی: مدل ممکن است هنگام پردازش تصاویر حاوی متن‌های الفبای غیرلاتین مانند ژاپنی یا کره‌ای، به خوبی عمل نکند.

  • مکان‌یابی فضایی: عملکرد مدل در وظایفی که نیازمند ارتباطات دقیق مکانی دقیق مانند شناسایی موقعیت قطعه‌ها در صفحه شطرنج است، بهینه نیست.

  • جزئیات تصویر: مدل ممکن است دچار مشکل در درک نمودارها یا متن‌هایی با نوع و رنگ‌های مختلف (برخی خطوط ساده، خطوط تیره) در یک تصویر شود.

  • چرخش تصویر: ممکن است مدل متن‌ها و تصاویر گویا یا معکوس شده را اشتباه تفسیر کند.

6.2 مدیریت تصاویر در نشست‌ها

از آنجا که API تکمیل‌کننده چت، وضعیت نگه‌دار ندارد، شما باید پیام‌ها (شامل تصاویر) رد و بدل شده به مدل را خودتان مدیریت کنید. در صورتی که می‌خواهید از همان تصویر چندین بار استفاده کنید، باید با هر درخواست API، داده‌های تصویر را مجدداً ارسال کنید.

additional_payload = {
  "model": "gpt-4-vision-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "بر اساس این تصویر، چه پیشنهاداتی دارید؟"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

new_response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=additional_payload)

print(new_response.json())

7. محاسبه هزینه

هر تصویر با استفاده از گزینه detail: low، 85 توکن ثابت مصرف می‌‌کند. برای تصاویر با گزینه detail: high، تصویر ابتدا به طور متناسب مقیاس داده می‌شود تا به اندازه 2048px × 2048px مناسب شود، و سپس کوتاه‌ترین طرف تصویر به 768px تضمین می‌شود. سپس تصویر به چندین مربع 512px تقسیم شده و هر مربع 170 توکن مصرف می‌کند، و 85 توکن اضافه به جمع کل نهایی می‌شود.

به عنوان مثال، اگر یک تصویر ابعاد 1024px × 1024px داشته باشد و گزینه detail: high انتخاب شود، هزینه توکن به این صورت خواهد بود:

  • ابتدا، از آنجا که 1024 کمتر از 2048 است، تنظیم اندازه اولیه نیازی ندارد.
  • سپس، با کوتاه‌ترین طرف 1024، تصویر به ابعاد 768 × 768 تغییر اندازه می‌یابد.
  • 4 مربع 512px برای نمایش تصویر به ارث می‌برد، بنابراین هزینه توکن نهایی 170 * 4 + 85 = 765 خواهد بود.

برای درک دقیق‌تر روش محاسبه هزینه، لطفاً به مستندات مدل GPT-4 Vision مراجعه کنید.

8. سوالات متداول

در زیر، برخی از سوالات متداول و پاسخ‌های آنها که کاربران ممکن است در استفاده از مدل GPT-4 Vision مواجه شوند، آمده است:

س: آیا می‌توانم قابلیت‌های تصویری gpt-4 را تنظیم دقیق‌تر کنم؟

پ: در حال حاضر، ما پشتیبانی از تنظیم دقیق قابلیت‌های تصویری gpt-4 را ارائه نمی‌دهیم.

س: آیا می‌توانم از gpt-4 برای تولید تصاویر استفاده کنم؟

پ: خیر، شما می‌توانید از dall-e-3 برای تولید تصاویر و از gpt-4-vision-preview برای درک تصاویر استفاده کنید.

س: چه انواع بارگذاری فایل‌ها پشتیبانی می‌شود؟

پ: در حال حاضر، ما از فایل‌های PNG (.png)، JPEG (.jpeg و .jpg)، WEBP (.webp) و فایل‌های غیر متحرک GIF (.gif) پشتیبانی می‌کنیم.