DuetG AI Connector

توضیحات

DuetG AI Connector به مشتری هوش مصنوعی وردپرس اجازه می‌دهد به هر سرویس هوش مصنوعی که یک API سازگار با OpenAI ارائه می‌کند متصل شود، مانند:

  • Ollama (هوش مصنوعی محلی)
  • LM Studio (هوش مصنوعی محلی)
  • MiniMax
  • Moonshot
  • DeepSeek
  • SiliconFlow
  • و هر ارائه‌دهنده API سازگار با OpenAI دیگر

نیازمندی‌ها

  • PHP 7.4 یا بالاتر
  • وردپرس 7.0 یا بالاتر (از Connectors API داخلی استفاده می‌کند)
  • (اختیاری) افزونه WordPress AI برای یکپارچگی بهتر

خدمات بیرونی

این افزونه به سرویس‌های API هوش مصنوعی شخص ثالث که توسط کاربر پیکربندی شده‌اند
(هر نقطه پایانی API سازگار با OpenAI) متصل می‌شود. این افزونه برای ارائه قابلیت‌های
تولید متن و تولید تصویر مبتنی بر هوش مصنوعی لازم است.

داده‌ها در این مواقع به نقطه پایانی API پیکربندی‌شده ارسال می‌شوند:
* کاربر یک درخواست تولید متن از طریق صفحه Test AI یا
قابلیت‌های هوش مصنوعی وردپرس (متن جایگزین، خلاصه‌سازی، Review Notes و غیره) ارسال می‌کند
* کاربر یک درخواست تولید تصویر ارسال می‌کند

داده‌های ارسال‌شده شامل این موارد است: متن پرامپت کاربر، پیکربندی مدل،
و برای قابلیت‌های بینایی، داده‌های تصویر.

از آن‌جا که این افزونه به نقاط پایانی پیکربندی‌شده توسط کاربر متصل می‌شود، کاربران باید
شرایط خدمات و سیاست حفظ حریم خصوصی ارائه‌دهنده انتخابی خود را بررسی کنند:
* OpenAI: شرایط خدمات،
سیاست حفظ حریم خصوصی
* سایر ارائه‌دهندگان: لطفاً مستندات ارائه‌دهنده خود را بررسی کنید

عکس‌های صفحه

نصب

  1. پوشه duetg-ai-connector را در مسیر /wp-content/plugins/ بارگذاری کنید
  2. افزونه را از طریق فهرست «افزونه‌ها» در وردپرس فعال کنید
  3. کلید API خود را در تنظیمات > Connectors پیکربندی کنید
  4. برای پیکربندی Base URL و مدل خود به تنظیمات > Custom AI بروید
  5. (اختیاری) برای تأیید پیکربندی خود به ابزارها > Test AI بروید

سوالات متداول

چگونه ثبت گزارش اشکال‌زدایی را فعال کنم؟

برای فعال کردن ثبت گزارش اشکال‌زدایی، مورد زیر را به wp-config.php خود اضافه کنید:

define('DUETGAICON_DEBUG', true);

وقتی فعال باشد، اطلاعات اشکال‌زدایی در گزارش اشکال‌زدایی سرور شما نوشته می‌شود (معمولاً wp-content/debug.log). این شامل موارد زیر است:
* جزئیات درخواست/پاسخ برای فراخوانی‌های API هوش مصنوعی
* وضعیت ثبت ارائه‌دهنده
* اطلاعات پردازش‌کننده مدل

توجه: برای جلوگیری از تأثیر بر عملکرد و افزایش حجم فایل گزارش، ثبت گزارش اشکال‌زدایی را در محیط‌های عملیاتی غیرفعال کنید.

آیا این افزونه بدون وردپرس 7.0 کار می‌کند؟

خیر، این افزونه به وردپرس 7.0 یا بالاتر نیاز دارد زیرا از Connectors API داخلی برای مدیریت کلید API استفاده می‌کند.

چرا تعداد پیشنهادها و یادداشت‌ها گاهی با هم مطابقت ندارند؟

هنگام استفاده از Review Notes، ممکن است متوجه شوید که تعداد پیشنهادهای بازگردانده‌شده توسط هوش مصنوعی دقیقاً با تعداد یادداشت‌های نمایش‌داده‌شده در ویرایشگر یکسان نیست.

این رفتار مورد انتظار است و دو دلیل دارد:

  1. پیشنهادهای چنددسته‌ای: بعضی مدل‌های هوش مصنوعی یک پیشنهاد واحد برمی‌گردانند که برای چند دسته بازبینی کاربرد دارد (مثلاً review_type: "seo, accessibility"). افزونه این موارد را به همان شکل حفظ می‌کند، بنابراین ممکن است یک پیشنهاد در چند دسته یادداشت در مشتری هوش مصنوعی وردپرس نمایش داده شود.

  2. قالب پاسخ مدل: مدل هوش مصنوعی تعداد پیشنهادهایی را که برمی‌گرداند کنترل می‌کند و مشتری هوش مصنوعی وردپرس تعیین می‌کند آن‌ها چگونه نمایش داده و دسته‌بندی شوند. افزونه پاسخ مدل را بدون تغییر در تعداد، به‌درستی منتقل می‌کند.

اگر به نتایج سازگارتر نیاز دارید، از مدلی استفاده کنید که JSON ساختاریافته را با پیشنهادهای مجزا برای هر دسته‌بندی به‌طور قابل‌اعتماد برمی‌گرداند.

چگونه Base URL ارائه‌دهنده هوش مصنوعی خود را پیدا کنم؟

  • Ollama (محلی): http://localhost:11434/v1
  • LM Studio (محلی): http://localhost:1234/v1
  • MiniMax: https://api.minimax.io/v1
  • Moonshot: https://api.moonshot.ai/v1
  • DeepSeek: https://api.deepseek.com/v1
  • SiliconFlow: https://api.siliconflow.cn/v1
  • سایر ارائه‌دهندگان: مستندات آن‌ها را بررسی کنید

آیا به کلید API نیاز دارم؟

بعضی ارائه‌دهندگان به کلید API نیاز دارند. برای نصب‌های محلی (مانند Ollama) که به احراز هویت نیاز ندارند، می‌توانید هر رشته ساختگی‌ای (مثلاً “not-required”) را به‌عنوان کلید API وارد کنید.

چرا مدل‌های استدلالی/فکری محلی گاهی با timeout مواجه می‌شوند؟

مدل‌های استدلالی محلی (مانند Gemma 4، QwQ و غیره) که روی Ollama اجرا می‌شوند، پیش از تولید پاسخ نهایی خود زنجیره‌های طولانی «تفکر» ایجاد می‌کنند. این فرایند می‌تواند 30 تا 60 ثانیه یا بیشتر طول بکشد که ممکن است timeout ناشی از حداقل سرعت cURL را فعال کند (به‌طور پیش‌فرض 30 ثانیه).

مدل‌های ابری معمولاً خوب کار می‌کنند – بیشتر ارائه‌دهندگان API ابری (DeepSeek، MiniMax، Moonshot و غیره) بدون مشکل timeout سریع پاسخ می‌دهند. اگر یک مدل ابری مکرراً با timeout مواجه می‌شود، ممکن است زنجیره‌های تفکر غیرمعمولاً طولانی داشته باشد؛ یک مدل دیگر را امتحان کنید.

راه‌حل‌های پیشنهادی برای مدل‌های محلی:

  1. برای قابلیت‌های هوش مصنوعی محلی از مدل‌های غیر استدلالی استفاده کنید. برای Ollama، مدل‌هایی مانند qwen2.5:7b، llama3.2:3b یا phi3 بدون مشکل timeout به‌خوبی کار می‌کنند.

  2. Ollama را طوری پیکربندی کنید که مدل‌ها را بارگذاری‌شده نگه دارد:
    bash
    export OLLAMA_KEEP_ALIVE=-1 # Keep model in memory

اگر از مدل‌های استدلالی استفاده می‌کنید، توجه داشته باشید که قابلیت‌های هوش مصنوعی وردپرس ممکن است کندتر شوند یا با timeout مواجه شوند. رفتار تفکر توسط خود مدل کنترل می‌شود، نه توسط افزونه.

چگونه از یک ارائه‌دهنده هوش مصنوعی محلی (مثل Ollama یا LM Studio) استفاده کنم؟

وردپرس به‌طور پیش‌فرض برای امنیت (محافظت SSRF)، درخواست‌ها به localhost و نشانی‌های IP خصوصی را مسدود می‌کند. اگر از یک ارائه‌دهنده هوش مصنوعی محلی استفاده می‌کنید، می‌توانید این محافظت را با افزودن مورد زیر به wp-config.php خود غیرفعال کنید:

define('DUETGAICON_ALLOW_LOCAL_URLS', true);

هشدار: غیرفعال کردن محافظت SSRF، درخواست‌ها به IPهای خصوصی/محلی را مجاز می‌کند. فقط زمانی این گزینه را فعال کنید که به ارائه‌دهنده هوش مصنوعی محلی خود اعتماد دارید و سرور شما مستقیماً از اینترنت در دسترس نیست.

این تنظیم هنگام استفاده از ارائه‌دهندگان هوش مصنوعی محلی، هم برای مدل‌های متنی و هم برای مدل‌های تصویری اعمال می‌شود.

نکته: هنگامی که DUETGAICON_ALLOW_LOCAL_URLS فعال باشد، ابزار آزمون اتصال شبکه در صفحه Test AI (ابزارها > Test AI) ظاهر می‌شود. می‌توانید از آن برای بررسی این‌که سرور وردپرس شما پیش از اجرای آزمون‌های واقعی قابلیت‌های هوش مصنوعی به ارائه‌دهنده هوش مصنوعی محلی شما دسترسی دارد یا نه، استفاده کنید. این مورد به‌ویژه برای اشکال‌زدایی مشکلات اتصال در نصب‌های محلی Ollama یا LM Studio مفید است.

چگونه از این در کد خود استفاده کنم؟

use WordPress\AiClient\AiClient;

$registry = AiClient::defaultRegistry();

// Text Generation
$model = $registry->getProviderModel('duetgaicon_text', 'gpt-4');
$result = $model->generateTextResult([
    new \WordPress\AiClient\Messages\DTO\UserMessage([
        new \WordPress\AiClient\Messages\DTO\MessagePart('Your prompt here')
    ])
]);
echo $result->toText();

// Image Generation
$model = $registry->getProviderModel('duetgaicon_image', 'dall-e-3');
$result = $model->generateImageResult([
    new \WordPress\AiClient\Messages\DTO\UserMessage([
        new \WordPress\AiClient\Messages\DTO\MessagePart('Your prompt here')
    ])
]);
$files = $result->toImageFiles();

نقد و بررسی‌ها

نقد و بررسی‌ای برای این افزونه یافت نشد.

توسعه دهندگان و همکاران

“DuetG AI Connector” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

مشارکت کنندگان

“DuetG AI Connector” به 2 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمک‌هایشان.

ترجمه “DuetG AI Connector” به زبان شما.

علاقه‌ مند به توسعه هستید؟

کد را مرور کنید، مخزن SVN را بررسی کنید، یا از طریق RSS در گزارش توسعه مشترک شوید.

گزارش تغییرات

0.3.3

  • هشدار PHP 8.x با عنوان “Undefined variable $prompt” در بارگذاری اولیه صفحه Test AI رفع شد
  • هشدار PHP 8.x با عنوان “file_exists() path too long” که هنگام بازگشت b64_json بزرگ‌تر از 4 کیلوبایت از API تصویر ایجاد می‌شد، رفع شد
  • راه‌حل موقت b64_json به مسیر دانلود URLbase64 گسترش یافت (زمانی فعال می‌شود که ارائه‌دهندگان response_format را نادیده بگیرند و یک URL برگردانند)
  • namespace داخلی PHP از WordPress\CustomAiProvider به WordPress\DuetGAIConnector تغییر نام یافت
  • یادداشت‌های docblock مربوط به @package برای مطابقت با namespace جدید به‌روزرسانی شدند

0.3.2

  • مشکل نمایش ندادن لوگو با حذف ثبت دستی connector رفع شد (از registerProvider() استفاده می‌شود)
  • نمایش تولید تصویر اصلاح شد (برای URIهای داده base64 درون‌خطی، esc_url() دور زده شد)
  • تابع isConfigured() برای اعتبارسنجی درست وجود کلید API اصلاح شد
  • همه شناسه‌های ارائه‌دهنده از custom_text/custom_image به duetgaicon_text/duetgaicon_image تغییر نام یافتند
  • ثبت گزارش اشکال‌زدایی برای وضعیت ثبت ارائه‌دهنده افزوده شد
  • نمونه‌کدهای مستندات برای بازتاب پیشوند جدید شناسه ارائه‌دهنده به‌روزرسانی شدند
  • بخش یکپارچگی WordPress AI از readme حذف شد
  • بخش قابلیت‌های مدل از readme حذف شد

0.3.1

  • متد کمکی isLocalUrl() برای تشخیص URLهای localhost/IP خصوصی افزوده شد
  • وقتی URL هوش مصنوعی محلی پیکربندی شده اما DUETGAICON_ALLOW_LOCAL_URLS غیرفعال است، پیام خطای صریح افزوده شد
  • خطای نحوی PHP (وجود ); اضافی در TestPage.php) رفع شد
  • رفع PHPCS: استفاده از wp_kses_post برای خروجی خطا به‌منظور مجاز بودن قالب‌بندی HTML
  • رفع PHPCS: استفاده از sprintf همراه با توضیح مترجمان برای پیام‌های خطای سازگار با i18n
  • دکمه آزمون اتصال شبکه اکنون از استایل اصلی استفاده می‌کند
  • کد تکراری تشخیص URL محلی به Helper::isLocalUrl() بازآرایی شد

0.3.0

  • نام افزونه به DuetG AI Connector تغییر یافت (از Custom AI Provider)
  • قابلیت دسته‌بندی محتوا افزوده شد (پیشنهادهای مبتنی بر هوش مصنوعی برای برچسب‌ها و دسته‌های نوشته)
  • قابلیت تولید توضیحات متا افزوده شد
  • یکپارچگی با WordPress Connector Registry برای سازگاری با وردپرس 7.0+ افزوده شد
  • نرمال‌سازی قالب پاسخ چندارائه‌دهنده‌ای برای MiniMax، Kimi، GLM و Tencent Hunyuan افزوده شد
  • تزریق خودکار کلیدواژه JSON برای مدل‌های DashScope (qwen/glm) افزوده شد
  • استخراج JSON با استفاده از شمارش متعادل آکولادها به‌جای regex غیر greedy بهبود یافت
  • ثبت گزارش اشکال‌زدایی دقیق همراه با پاک‌سازی URL افزوده شد
  • قابلیت آزمون اتصال شبکه به صفحه Test AI برای اشکال‌زدایی اتصال‌های محلی Ollama افزوده شد
  • دامنه DUETGAICON_ALLOW_LOCAL_URLS گسترش یافت تا بر کل افزونه اعمال شود (مدل‌های متنی و تصویری)
  • بخش پرسش‌های متداولی برای توضیح مشکلات timeout در مدل‌های استدلالی محلی افزوده شد
  • نیازمندی‌های نسخه WordPress AI از مستندات حذف شد
  • کد ثبت گزارش اشکال‌زدایی در CustomTextGenerationModel پاک‌سازی شد
  • رفع PHPCS: پاک‌سازی test_url پیش از استفاده در فیلد فرم
  • اکنون وقتی DUETGAICON_ALLOW_LOCAL_URLS غیرفعال باشد، آزمون اتصال شبکه پنهان می‌شود
  • استایل دکمه آزمون اتصال شبکه اصلاح شد (اکنون از استایل اصلی استفاده می‌کند)
  • مستندات آزمون اتصال شبکه به پرسش‌های متداول ارائه‌دهنده هوش مصنوعی محلی افزوده شد

0.2.3

  • خطای OutputNotEscaped برای URL تصویر در TestPage.php رفع شد

0.2.2

  • ترتیب اعلان namespace در Settings.php اصلاح شد (پیش از بررسی ABSPATH منتقل شد)
  • نسخه فایل JS طوری اصلاح شد که به‌جای plugin.php از mtime خود فایل JS استفاده کند
  • برای جلوگیری از تداخل، wrapper تابع function_exists() به custom_ai_debug() افزوده شد
  • توضیح docblock تکراری در ThinkingTagHelper رفع شد
  • اشتباه تایپی در توضیح CustomImageGenerationModel رفع شد (“if not setting” “if not set”)
  • پاک‌سازی URL در گزارش‌های اشکال‌زدایی برای فیلتر کردن پارامترهای حساس افزوده شد
  • regex مربوط به JSON از تطبیق greedy به non-greedy برای دقت بهتر تغییر یافت
  • اشکال سطح dirname در TestPage.php رفع شد (سطح dirname از 3 به 2)
  • اشکال حفظ کلیدها در array_map در ثبت گزارش اشکال‌زدایی رفع شد
  • منطق پاک‌سازی URL برای جلوگیری از تعریف تابع تو‌در‌تو، درون‌خطی شد

0.2.1

  • نسخه مفقود منبع در wp_enqueue_script() رفع شد
  • خروجی escape نشده در صفحه آزمون رفع شد
  • محافظت در برابر دسترسی مستقیم به فایل به Settings.php افزوده شد
  • محافظت SSRF برای URLهای تصویر افزوده شد (به‌طور پیش‌فرض localhost و IPهای خصوصی را مسدود می‌کند)
  • ثابت DUETGAICON_ALLOW_LOCAL_URLS برای فعال‌سازی URLهای تصویر محلی در صورت نیاز افزوده شد
  • برای افزونه WordPress AI به‌روزرسانی شد (برندینگ “Experiments” حذف شد)

0.2.0

  • سازگاری با افزونه WordPress AI (نسخه 0.6.0 و بالاتر) افزوده شد
  • پشتیبانی از تولید متن جایگزین افزوده شد (به مدل VLM نیاز دارد)
  • پشتیبانی از تولید پرامپت تصویر افزوده شد
  • قابلیت Review Notes افزوده شد
  • پشتیبانی از تولید عنوان افزوده شد
  • پشتیبانی از خلاصه‌سازی محتوا افزوده شد
  • پشتیبانی از تولید چکیده افزوده شد
  • پشتیبانی از تفکر/استدلال برای مدل‌هایی مانند DeepSeek، Qwen، MiniMax و Kimi افزوده شد
  • پردازش پاسخ JSON برای سازگاری بهتر بهبود یافت
  • ثبت گزارش اشکال‌زدایی افزوده شد (با WP_DEBUG کنترل می‌شود)

0.1.0

  • انتشار اولیه
  • پشتیبانی از تولید متن
  • پشتیبانی از تولید تصویر