أتساءل عن النهج الصحيح لاستخدام نقاط نهاية واجهة برمجة التطبيقات (API) الخاصة بالذكاء الاصطناعي الداخلي (مثل LiteLLM) على مثيلات Discourse المستضافة ذاتيًا.
لقد حاولت تمكين جسر Docker (docker bridge)، وعناوين IP الخاصة بالصناديق (container IPs)، ونقاط النهاية المنتهية بـ SSL بشكل صحيح (لنفس عنوان IP العام الذي تستضيف عليه Discourse)، لكن لم ينجح أي شيء. لقد سمحت للعناوين الداخلية، لكنني أواجه خطأ 500 عند الاختبار في واجهة LLM-AI داخل Discourse.
من المرجح أن الأمر يتعلق بإعداداتي الخاصة، وأعلم أنني ربما ارتكبت بعض الأخطاء. لذا، آمل حل هذه المشكلة بمساعدة المجتمع
حالتنا الأساسية هي محاولة استخدام نقاط نهاية Vertex AI (OpenAI) التي لم تعمل بشكل تلقائي على Discourse لأنها غير مدعومة. لكننا نريد أيضًا الطبقة التي يضيفها LiteLLM إلى سير عملنا.
السجلات:
FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination: جميع عناوين IP التي تم حلها غير مسموح بها)
نفذت ذلك عبر الواجهة كما رأيت في منشور سابق مشابه. حاولت أيضًا باستخدام المتغير في ملف app.yml الخاص بي، لكنني ما زلت أحصل على الخطأ.
ما الذي قد يكون خاطئًا إذا كانت بيانات الاعتماد الخاصة بي صحيحة ويمكنني استخدام نقطة نهاية واجهة برمجة التطبيقات على المضيف؟ هل يمكنني إجراء المزيد من عمليات التصحيح؟
حسنًا، لقد اختبرت نقطة النهاية (endpoint) باستخدام SSL داخل Discourse (حاوية التطبيق) وهي تعمل، لكنها لا تعمل من اختبار واجهة Discourse AI.
أستخدم مزود “OpenAI” مع عنوان URL التالي: https://llm.mydomain.tld/v1/chat/completions. بيانات الاعتماد صحيحة:
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:182:in 'DiscourseAi::Completions::Endpoints::Base#perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/open_ai_shared.rb:28:in 'DiscourseAi::Completions::Endpoints::OpenAiShared#perform_completion!'
/var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:214:in 'DiscourseAi::Completions::Llm#generate'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:46:in 'Pitchfork::SoftTimeout::Request#interrupt'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:94:in 'block (2 levels) in Pitchfork::SoftTimeout#create_timeout_thread'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:93:in 'Array#each'
pitchfork-0.18.2/lib/pitchfork/soft_timeout.rb:93:in 'block in Pitchfork::SoftTimeout#create_timeout_thread'
الأمر غريب، وقد حاولت حل هذه المشكلة منذ أسابيع.
لقد جربت ما يلي بالفعل:
التعديل 1:DISCOURSE_ALLOWED_INTERNAL_HOSTS: 172.16.X.X(عنوان IP لحاوية LiteLLM، و 127.0.0.1، والنطاق المضيف لـ LLM الذي تم إنهاء SSL الخاص به، ولا أعتقد أنه مطلوب إضافته هنا)
التعديل 2: وأرى نفس خطأ 500 عند محاولة الدخول لتكوين خادم MCP الخاص بي (تكوين علامة تبويب discourse-ai لخادم MCP).