هذا المشروع عبارة عن واجهة REST API بديلة لـ Vertex AI ( PaLM 2، Codey، Gemini ) المتوافقة مع مواصفات OpenAI API.
أمثلة:
الدردشة مع الجوزاء في Chatbot UI | احصل على المساعدة من Gemini في VSCode |
---|---|
هذا المشروع مستوحى من فكرة LocalAI ولكن مع التركيز على جعل Google Cloud Platform Vertex AI PaLM في متناول الجميع.
تم تثبيت خدمة Google Cloud Run التي تترجم استدعاءات OpenAI API إلى Vertex AI (PaLM 2، Codey، Gemini).
خدمات OpenAI API المدعومة:
OpenAI | واجهة برمجة التطبيقات | المدعومة |
---|---|---|
نماذج القائمة | /v1/models | ✅ |
استكمالات الدردشة | /v1/chat/completions | ✅ |
الإكمالات (القديمة) | /v1/completions | |
التضمين | /v1/embeddings |
تم تطوير البرنامج بلغة Python ويعتمد على FastAPI وLangChain.
تم تصميم كل شيء ليكون بسيطًا جدًا، بحيث يمكنك بسهولة ضبط كود المصدر وفقًا لاحتياجاتك الفردية.
تم إعداد دفتر Jupyter Vertex_AI_Chat.ipynb
مع تعليمات خطوة بخطوة. سيساعدك ذلك على نشر الواجهة الخلفية لواجهة برمجة التطبيقات (API) والواجهة الأمامية لـ Chatbot UI كخدمة Google Cloud Run.
متطلبات:
يجب أن يتمتع المستخدم الخاص بك (المستخدم للنشر) بالأذونات المناسبة في المشروع. للحصول على نشر سريع وخالي من المتاعب، يوصى باستخدام دور "المالك".
بالإضافة إلى ذلك، يجب أن يتمتع حساب خدمة الحوسبة الافتراضي ( [PROJECT_NR][email protected]
) بالدور "Role Vertex AI User" ( roles/aiplatform.user
).
المصادقة:
gcloud auth login
تعيين المشروع الافتراضي:
gcloud config set project [PROJECT_ID]
قم بتشغيل البرنامج النصي التالي لإنشاء صورة حاوية ونشر تلك الحاوية كواجهة برمجة تطبيقات عامة (والتي تسمح بالمكالمات غير المصادق عليها) في Google Cloud Run:
bash deploy.sh
ملاحظة: يمكنك تغيير مفتاح OpenAI API المزيف الذي تم إنشاؤه ومنطقة Google Cloud باستخدام متغيرات البيئة:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
تم اختبار البرنامج على GNU/Linux وmacOS مع Python 3.11 و3.12.3 (3.12.4 لا يعمل حاليًا). إذا كنت تريد استخدام البرنامج ضمن نظام التشغيل Windows، فيجب عليك تعيين متغيرات البيئة باستخدام set
بدلاً من export
.
يجب عليك أيضًا إنشاء بيئة افتراضية باستخدام إصدار Python الذي تريد استخدامه، وتنشيطه قبل المتابعة.
أنت بحاجة أيضًا إلى Google Cloud CLI. يتضمن Google Cloud CLI أداة سطر أوامر gcloud
.
بدء بيئة Python الافتراضية وتثبيت المتطلبات:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
المصادقة:
gcloud auth application-default login
تعيين المشروع الافتراضي:
gcloud auth application-default set-quota-project [PROJECT_ID]
تشغيل مع النموذج الافتراضي:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
مثال لنظام التشغيل Windows:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
اركض مع نموذج Gemini gemini-pro
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
التشغيل باستخدام طراز Codey codechat-bison-32k
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " codechat-bison-32k "
export MAX_OUTPUT_TOKENS= " 16000 "
uvicorn vertex:app --reload
سيتم الآن تشغيل التطبيق على جهاز الكمبيوتر المحلي الخاص بك. يمكنك الوصول إليه عن طريق فتح متصفح الويب والانتقال إلى العنوان التالي:
http://localhost:8000/
تتوافق تنسيقات طلب واستجابة HTTP مع OpenAI API.
على سبيل المثال، لإنشاء إكمال محادثة، يمكنك إرسال طلب POST إلى نقطة النهاية /v1/chat/completions
مع التعليمات باعتبارها نص الطلب:
curl --location ' http://[ENDPOINT]/v1/chat/completions '
--header ' Content-Type: application/json '
--header ' Authorization: Bearer [API-KEY] '
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Say this is a test!"
}
]
} '
إجابة:
{
"id" : " cmpl-efccdeb3d2a6cfe144fdde11 " ,
"created" : 1691577522 ,
"object" : " chat.completion " ,
"model" : " gpt-3.5-turbo " ,
"usage" : {
"prompt_tokens" : 0 ,
"completion_tokens" : 0 ,
"total_tokens" : 0
},
"choices" : [
{
"message" : {
"role" : " assistant " ,
"content" : " Sure, this is a test. "
},
"finish_reason" : " stop " ,
"index" : 0
}
]
}
تنزيل التصدير لعميل Bruno API: bruno-export.json
يمكن إجراء تكوين البرنامج باستخدام متغيرات البيئة.
المتغيرات التالية ذات القيم الافتراضية موجودة:
عامل | تقصير | وصف |
---|---|---|
تصحيح | خطأ شنيع | إظهار رسائل تصحيح الأخطاء التي تساعد أثناء التطوير. |
GOOGLE_CLOUD_LOCATION | لنا المركزية1 | منطقة Google Cloud Platform لاستدعاءات واجهة برمجة التطبيقات. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | معرف لمشروعك. إذا لم يتم تحديده، يتم استخدام مشروع المصادقة. |
يستضيف | 0.0.0.0 | ربط المقبس لهذا المضيف. |
MAX_OUTPUT_TOKENS | 512 | يحدد حد الرمز الحد الأقصى لمقدار إخراج النص من موجه واحد. يمكن للمستخدم النهائي تجاوزه كما هو مطلوب في مواصفات OpenAI API. |
MODEL_NAME | دردشة البيسون | أحد نماذج الأساس المتوفرة في Vertex AI. |
OPENAI_API_KEY | سك-[RANDOM_HEX] | مفتاح OpenAI API المزيف الذي تم إنشاؤه ذاتيًا يُستخدم للمصادقة على التطبيق. |
ميناء | 8000 | ربط المقبس بهذا المنفذ. |
درجة حرارة | 0.2 | درجة حرارة أخذ العينات، فهي تتحكم في درجة العشوائية في اختيار الرمز المميز. يمكن للمستخدم النهائي تجاوزه كما هو مطلوب في مواصفات OpenAI API. |
TOP_K | 40 | كيف يختار النموذج الرموز المميزة للإخراج، يتم تحديد الرمز المميز التالي منها. |
TOP_P | 0.8 | يتم اختيار الرموز المميزة من الأكثر احتمالاً إلى الأقل حتى مجموعها. يمكن للمستخدم النهائي تجاوزه كما هو مطلوب في مواصفات OpenAI API. |
إذا كان تطبيقك يستخدم مكتبات العملاء التي توفرها OpenAI، فستحتاج فقط إلى تعديل متغير البيئة OPENAI_API_BASE
لمطابقة عنوان URL لنقطة نهاية Google Cloud Run:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
عند نشر تطبيق Chatbot UI، يجب تعيين متغيرات البيئة التالية:
عامل | قيمة |
---|---|
OPENAI_API_KEY | تم إنشاء مفتاح API أثناء النشر |
OPENAI_API_HOST | عنوان URL لـ Google Cloud Run |
قم بتشغيل البرنامج النصي التالي لإنشاء صورة حاوية من كود مصدر GitHub ونشر تلك الحاوية كموقع ويب عام (والذي يسمح بالمكالمات غير المصادق عليها) في Google Cloud Run:
export OPENAI_API_KEY= " sk-XYZ "
export OPENAI_API_HOST= " https://openai-api-vertex-XYZ.a.run.app "
bash chatbot-ui.sh
قم بضبط إعدادات Chatbox التالية:
جلسة | قيمة |
---|---|
مزود الذكاء الاصطناعي | واجهة برمجة تطبيقات OpenAI |
مفتاح واجهة برمجة تطبيقات OpenAI | تم إنشاء مفتاح API أثناء النشر |
مضيف واجهة برمجة التطبيقات | عنوان URL لـ Google Cloud Run |
يعد امتداد VSCode-OpenAI أداة قوية ومتعددة الاستخدامات مصممة لدمج ميزات OpenAI بسلاسة في محرر التعليمات البرمجية الخاص بك.
لتفعيل الإعداد، لديك خياران:
حدد openai.com
وأدخل عنوان URL الخاص بـ Google Cloud Run باستخدام /v1
أثناء الإعداد.
عند نشر تطبيق Discord Bot، يجب تعيين متغيرات البيئة التالية:
عامل | قيمة |
---|---|
OPENAI_API_KEY | تم إنشاء مفتاح API أثناء النشر |
OPENAI_API_BASE | عنوان URL لـ Google Cloud Run مع /v1 |
عند نشر ChatGPT في تطبيق Slack، يجب تعيين متغيرات البيئة التالية:
عامل | قيمة |
---|---|
OPENAI_API_KEY | تم إنشاء مفتاح API أثناء النشر |
OPENAI_API_BASE | عنوان URL لـ Google Cloud Run مع /v1 |
عند نشر تطبيق ChatGPT Telegram Bot، يجب تعيين متغيرات البيئة التالية:
عامل | قيمة |
---|---|
OPENAI_API_KEY | تم إنشاء مفتاح API أثناء النشر |
OPENAI_API_BASE | عنوان URL لـ Google Cloud Run مع /v1 |
هل لديك التصحيح الذي سيفيد هذا المشروع؟ مذهل! اتبع هذه الخطوات لقبولها.
جميع الملفات الموجودة في هذا المستودع تخضع لترخيص Apache، الإصدار 2.0 ما لم يُذكر خلاف ذلك.