غلاف لـ https://venus.chub.ai لإنشاء حسابات والوصول إلى LLMs المتميزة باستخدام نصوص Python المحلية.
الغرض من هذا البرنامج النصي هو إظهار إمكانيات الهندسة العكسية باستخدام Python. هذا المشروع مخصص للأغراض التعليمية فقط ويندرج تحت ترخيص GPL-3. لمزيد من المعلومات، يمكنك دائمًا الاتصال بي على [email protected]. لأسباب قانونية، يرجى قراءة الورقة القانونية بدقة
هذا الملف التمهيدي مناسب للمبتدئين ويتم تنفيذه خطوة بخطوة. تستغرق العملية ببطء.
يستخدم هذا المشروع البسيط وحدات مثل selenium
requests
وقليلًا من استغلال الثغرات الأمنية والتناقضات في الموقع. لن تساعد إضافة Cloudflare أيضًا - سأضطر فقط إلى استخدام nodriver بدلاً من السيلينيوم
تشغيل git clone https://github.com/Recentaly/Venus-Chub-Wrapper.git
قم بتثبيت التبعيات عن طريق فتح وحدة التحكم في دليل Venus-Chub-Wrapper وتشغيل pip install -r requirements.txt
بالنسبة للسياق، يتم توفير مثال للبرنامج النصي . يقوم هذا المشروع فقط بشحن مقتطفات من التعليمات البرمجية الفردية لتسجيل حساب، وجلب رمز Mars الخاص بك ، وتسجيل الدخول ، وما إلى ذلك. ستحتاج إلى إنشاء main.py الخاص بك ولكن هذا البرنامج النصي سيرشدك خلال هذه العملية. (التحديث: تم شحن الملف main.py عن طريق الخطأ. إنه مجرد مثال 2. سيتم حذفه ولكن لا تتردد في التحقق من سجلات الالتزام إذا كنت جاهلًا إلى هذا الحد)
للبدء، قم بإنشاء main.py في جذر المشروع.
التسجيل يتطلب استيرادين فقط. اعرض أدناه وانسخها إلى main.py الخاص بك. الأول ضروري للحصول على رمز تزوير طلب Cloudflare Cross-Site والثاني هو وظيفة التسجيل نفسها.
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . register import register
(خياري)
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
make_fake_mail
: يُرجع UUIDv4 + "@gmail.com" في النهاية.
make_fake_password
: إرجاع الحرف الكبير I + UUIDv4 + "!" (للوفاء بمعايير كلمة المرور)
make_fake_username
: ما عليك سوى إرجاع سلسلة UUIDv4.
هذا هو الخلل الأمني الأول: عناوين البريد الإلكتروني التي لم يتم التحقق منها، حتى تلك التي تم إنشاؤها بالكامل (على سبيل المثال: [email protected]) مسموح بها وتحصل على أرصدة مجانية من API.
فيما يلي مثال لطريقة تشغيل الكود:
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . register import register
# get csrf token
__csrf_token : str = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_token )
يؤدي هذا إلى تسجيل حساب ناسخ ونسخ الاستجابة من Chub API. فيما يلي مثال لتنسيق register_response
:
{
"git_id" : 73017801 ,
"samwise" : " 2949skqo-901d-4f87-b22b-7c9b03221baf " ,
"username" : " ihatechildren "
}
الشيء الوحيد المهم الذي نحتاجه هو رمز samwise
. يتم استخدامه للمصادقة.
يعد تسجيل الدخول سهلاً نسبيًا ولكن ليس هناك حاجة إليه في الغالب. استيراد الوحدات التالية:
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . login import login
لتسجيل الدخول، تحتاج إلى المعلمات التالية جاهزة:
get_csrf_cookie()
ثم قم باستدعاء وظيفة تسجيل الدخول
login_response = login ( csrf_cookie , email , password )
هذا هو تنسيق الإخراج الناتج كمثال:
{
"git_id" : 73017801 ,
"samwise" : " 2949skqo-901d-4f87-b22b-7c9b03221baf " ,
"subscription" : 0 ,
"username" : " guatemalafan45 "
}
استخدم هذا للحصول على رمز samwise
المهم إذا كان لديك حساب حالي.
الآن نحن بحاجة إلى إعداد دردشة وهمية. لقد قمت بالفعل بإنشاء روبوت لهذا الغرض والذي سيتم استخدامه لبدء الدردشة معه. نحتاج إلى بدء محادثة لأنه لا تتم تهيئة مفتاح API حتى يبدأ المستخدم الدردشة. لن يعمل الرمز إذا تم حذف الروبوت الوهمي الموجود أسفل نقطة النهاية composed_view_3402/reference-endpoint-4dbc6dbef1b4
. ومع ذلك، يمكنك وضع مسار أي روبوت عام هنا. أوصي باستخدام روبوت خفيف حتى لا يحتاج برنامج تشغيل الويب إلى التعامل مع الكثير من حركة مرور الرموز المميزة. سيقوم برنامج تشغيل الويب بعد ذلك بتسجيل الدخول وزيارة الدردشة وجلب مفتاح واجهة برمجة التطبيقات قبل الإغلاق بسرعة.
الواردات:
from assets . scripts . create_chat import create_chat
قم بتشغيل الوظيفة. ويفضل بعد التسجيل. فيما يلي مقتطف من المثال:
from assets . scripts . register import register
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . create_chat import create_chat
__csrf_cookie = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_cookie )
# make new chat
chat_id : int = create_chat ( register_response [ "samwise" ])
تتطلب طريقة create_chat
رمزًا samwise
تحصل عليه من التسجيل أو تسجيل الدخول. ترسل وظيفة create_chat
طلبين - أحدهما لإنشاء مورد الدردشة والآخر لمشاهدة الصفحة.
للدردشة مع Mars أو Mercury LLMs باستخدام حساب ناسخ أو حساب موجود، ما زلنا بحاجة إلى جلب مفتاح API الخاص بنا. ولحسن الحظ، فإن وظيفة get_mars_token
تقوم بذلك نيابةً عنا. يطلق عليه "get_mars_token" ولكن الرمز المميز قابل للاستخدام لجميع الطرز.
أولاً، قم باستيراد الوحدة المطلوبة
from assets . scripts . webdriver . mars_token import get_mars_token
ثم احصل على الرمز المميز الخاص بك عن طريق استدعاء الوظيفة مثل هذا:
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
ستستمر عملية webdriver إذا لم تقم بإغلاقها! هناك وظيفة لذلك أيضًا.
استيراده عبر:
from assets . scripts . webdriver import close_driver
ثم قم باستدعاء الدالة close_driver
. افعل ذلك بعد جلب مفتاح API الخاص بك.
فيما يلي مثال للتعليمات البرمجية الكاملة للحصول على مفتاح واجهة برمجة التطبيقات (API) الخاص بك:
from assets . scripts . webdriver . mars_token import get_mars_token
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . webdriver import close_driver
from assets . scripts . register import register
from assets . scripts . login import login
from assets . scripts . API . Chat import chat
from assets . scripts . API . parse_helper import parse_for_content
from assets . scripts . create_chat import create_chat
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
fake_username : str = make_fake_username ()
fake_email : str = make_fake_mail ()
fake_password : str = make_fake_password ()
# get csrf token
__csrf_token : str = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_token )
# make new chat
chat_id : int = create_chat ( register_response [ "samwise" ])
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
# close the webdriver
close_driver ()
print ( MARS_TOKEN )
الإخراج (ملاحظة: تم ترك تسجيل السيلينيوم عمدًا للغمر. وقد تم تنقيح أجزاء من المعلومات الحساسة باستخدام علامة "x".)
[...]
2024-06-15 23:16:07,554 - root - INFO - Registering with email: [email protected], password: I5ba08d2cc5exxxxxxxxxxxxxxxxxxxxx ! , username: 6b8d861390944f0f9f00d7478993eef5, name: 6b8d861390944f0f9f00d7478993eef5
[...]
CHK-2STMC397I00589C0Q5X6Uxxxxxxxxxxxxxxxxxxxxxxxxxx
الآن بعد أن حصلنا على مفتاح واجهة برمجة التطبيقات (النسخ) الخاص بنا مع 60 طلبًا مجانيًا، يمكننا الدردشة مع LLMs المستضافين.
الواردات هي:
from assets . scripts . API . Chat import chat
(اختياري - موصى به للبث)
from assets . scripts . API . parse_helper import parse_for_content
الوحدة الاختيارية قادرة على استخراج الرمز المميز من قطعة دفق الحدث. من الجيد دائمًا تحليل الكلمات من التدفق الوارد بدلاً من الاضطرار إلى القيام بذلك يدويًا.
فيما يلي مثال لمكالمة الدردشة:
for chunk in chat (
MARS_TOKEN , # you need to get your API key first as well.
[
{
"role" : "system" ,
"content" : "You're a helpful assistant."
},
{
"role" : "user" ,
"content" : "Yo."
}
],
model = "mixtral" , # model choices: mixtral, mistral, mobile, asha, mythomax
max_tokens = 100 , # goes from 0 to 2048 -> 0 for unlimited.
):
print ( parse_for_content ( chunk ), end = '' , flush = True )
الإخراج:
I'm a web developer from the UK. I have recently got into Ruby on Rails and find it to be an excellent framework (which is why i am here!).
I don't really know what else to say but if there is anything in particular you would like to know about me then please just ask.
I look forward to getting to know some of you!
نعم .. إنه يتحدث مجموعة من الهراء. حسنًا، تم ضبط هذه النماذج على RP على أي حال، لذا قم بتجربة مطالبتك. أنا شخصياً لا أستطيع مساعدتك ولكنك تحتاج فقط إلى إدخال النموذج في شخصية مساعد يشبه ChatGPT ونأمل أن يؤدي هذا المهمة.
تأخذ وظيفة chat
المعلمات التالية:
CH_API_KEY : str , # your API key
messages : List [ Dict [ str , str ] ] , # A list of messages in OpenAI format.
model : str , # model choices: mixtral, mistral, mobile, asha, mythomax
max_tokens : int = 250 , # the maximum tokens to generate. Goes up to 2048 (Unconfirmed)
temperature : float = 0.8 , # the randomness of the generation. 0-2
top_p : float = 0.99 , # helps balance between being predictable and being creative by controlling how big a piece of the "word pie" I can choose from. (explained like a child)
frequency_penalty : float = 1 , # ranges from (-2) to (2)
presence_penalty : float = 1 , # ranges from (-2) to (2)
stream : bool = True , # recommended to keep it at True. False seems to be buggy mostly.
stop : List [ str ] = [ 'USER:' , '#' , '[' ] # stopping sequences. If you use this for RP, add your username as an element in the stopping sequences.
إليك تنسيق القطعة إذا لم تقم بتحليله باستخدام الوظيفة المكملة:
data: {"id": "459e62e9-bb18-423f-9403-079cdd9c597a", "object": "chat.completion", "created": "26", "model": "mixtral", "choices": [{"delta": {"content": "<a token will appear here>"}
القطعة الأخيرة:
data: [DONE]
from assets . scripts . webdriver . mars_token import get_mars_token
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . webdriver import close_driver
from assets . scripts . register import register
from assets . scripts . API . Chat import chat
from assets . scripts . API . parse_helper import parse_for_content
from assets . scripts . create_chat import create_chat
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
fake_username : str = make_fake_username ()
fake_email : str = make_fake_mail ()
fake_password : str = make_fake_password ()
# get csrf token
__csrf_token : str = get_csrf_cookie ()
# register
register_response = register ( fake_email , fake_password , fake_username , fake_username , __csrf_token )
# make new chat
chat_id : int = create_chat ( register_response [ "samwise" ])
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
# close the webdriver
close_driver ()
# chat with mars
for chunk in chat (
MARS_TOKEN ,
[
{
"role" : "system" ,
"content" : "You're a helpful assistant."
},
{
"role" : "user" ,
"content" : "Yo. Say hi please."
}
],
model = "mixtral" ,
max_tokens = 100 ,
):
print ( parse_for_content ( chunk ), end = '' , flush = True )