Pembungkus untuk https://venus.chub.ai untuk membuat akun dan mengakses LLM premium menggunakan skrip Python lokal.
Tujuan dari skrip ini adalah untuk mendemonstrasikan kemampuan rekayasa balik dengan Python. Proyek ini murni untuk tujuan pendidikan dan berada di bawah Lisensi GPL-3. Untuk informasi lebih lanjut, Anda selalu dapat menghubungi saya di bawah [email protected]. Untuk alasan hukum, harap baca secara menyeluruh lembar hukum
README ini ramah bagi pemula dan selangkah demi selangkah. Dibutuhkan proses yang lambat.
Proyek sederhana ini menggunakan modul seperti selenium
, requests
, dan sedikit mengeksploitasi kerentanan dan inkonsistensi keamanan situs. Menambahkan Cloudflare juga tidak akan membantu - Saya hanya perlu menggunakan nodriver, bukan Selenium
Jalankan git clone https://github.com/Recentaly/Venus-Chub-Wrapper.git
Instal dependensi dengan membuka konsol di direktori Venus-Chub-Wrapper dan menjalankan pip install -r requirements.txt
Untuk konteksnya, contoh skrip disediakan. Proyek ini hanya mengirimkan cuplikan kode individual untuk mendaftarkan akun, mengambil Token Mars Anda , masuk , dan sebagainya. Anda harus membuat main.py sendiri, tetapi skrip ini akan memandu Anda dalam prosesnya. (Pembaruan: main.py tidak sengaja dikirimkan. Ini hanya contoh 2. Ini akan dihapus tetapi jangan ragu untuk memeriksa log komit jika Anda tidak mengerti)
Untuk memulai, buat main.py di root proyek.
Pendaftaran hanya memerlukan 2 impor. Lihat di bawah dan salin ini ke main.py Anda. Yang pertama diperlukan untuk mendapatkan token pemalsuan permintaan Cloudflare Cross-Site dan yang kedua adalah fungsi pendaftaran itu sendiri.
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . register import register
(Opsional)
from assets . scripts import make_fake_mail , make_fake_password , make_fake_username
make_fake_mail
: Mengembalikan UUIDv4 + "@gmail.com" di bagian akhir.
make_fake_password
: Mengembalikan huruf kapital I + UUIDv4 + "!" (untuk memenuhi kriteria kata sandi)
make_fake_username
: Cukup mengembalikan string UUIDv4.
Ini adalah kelemahan keamanan pertama: Alamat email yang belum terverifikasi, bahkan yang sepenuhnya dibuat-buat (misalnya: [email protected]) diizinkan dan mendapatkan kredit API gratis.
Berikut ini contoh cara menjalankan kode:
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 )
Ini mendaftarkan akun burner dan menyalin respons dari Chub API. Berikut contoh format register_response
:
{
"git_id" : 73017801 ,
"samwise" : " 2949skqo-901d-4f87-b22b-7c9b03221baf " ,
"username" : " ihatechildren "
}
Satu-satunya objek penting yang kita perlukan adalah token samwise
. Ini digunakan untuk otentikasi.
Masuk relatif mudah tetapi sebagian besar tidak diperlukan. Impor modul berikut:
from assets . scripts . webdriver . csrf_cookie import get_csrf_cookie
from assets . scripts . login import login
Untuk masuk, Anda perlu menyiapkan parameter berikut:
get_csrf_cookie()
Kemudian, panggil fungsi login
login_response = login ( csrf_cookie , email , password )
Ini adalah format output yang dihasilkan sebagai contoh:
{
"git_id" : 73017801 ,
"samwise" : " 2949skqo-901d-4f87-b22b-7c9b03221baf " ,
"subscription" : 0 ,
"username" : " guatemalafan45 "
}
Gunakan ini untuk mendapatkan token samwise
yang penting jika Anda sudah memiliki akun.
Sekarang kita perlu menyiapkan obrolan tiruan. Saya sudah membuat bot untuk ini yang akan digunakan untuk memulai obrolan. Kita perlu memulai obrolan karena kunci API tidak diinisialisasi hingga pengguna memulai obrolan. Kode tidak akan berfungsi jika bot tiruan saya di titik akhir composed_view_3402/reference-endpoint-4dbc6dbef1b4
dihapus. Namun, Anda dapat memasukkan rute bot publik apa pun di sini. Saya merekomendasikan bot ringan sehingga webdriver tidak perlu menangani banyak lalu lintas token. Webdriver kemudian akan masuk, mengunjungi obrolan dan mengambil kunci API sebelum menutupnya dengan cepat.
Impor:
from assets . scripts . create_chat import create_chat
Jalankan fungsinya. Sebaiknya setelah mendaftar. Berikut contoh cuplikannya:
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" ])
Metode create_chat
memerlukan token samwise
yang Anda dapatkan dari mendaftar atau masuk. Fungsi create_chat
mengirimkan dua permintaan - Satu untuk membuat sumber obrolan dan satu lagi untuk tampilan halaman.
Untuk mengobrol dengan LLM Mars atau Merkurius dengan akun burner atau akun yang sudah ada, kami masih perlu mengambil kunci API kami. Untungnya, fungsi get_mars_token
melakukan ini untuk kita. Ini disebut "get_mars_token" tetapi tokennya dapat digunakan untuk semua model.
Pertama, impor modul yang dibutuhkan
from assets . scripts . webdriver . mars_token import get_mars_token
Lalu, dapatkan token Anda dengan memanggil fungsi seperti ini:
# get mars token for chat
MARS_TOKEN : str = get_mars_token ( fake_email , fake_password , chat_id )
Proses webdriver akan tetap berjalan jika Anda tidak mematikannya! Ada fungsi untuk itu juga.
Impor melalui:
from assets . scripts . webdriver import close_driver
Dan kemudian panggil fungsinya close_driver
. Lakukan ini SETELAH mengambil kunci API Anda.
Berikut ini contoh kode lengkap untuk mendapatkan kunci API Anda:
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 )
Keluaran (Catatan: Pencatatan selenium sengaja ditinggalkan karena banjir. Sebagian informasi sensitif telah disunting menggunakan "x".)
[...]
2024-06-15 23:16:07,554 - root - INFO - Registering with email: [email protected], password: I5ba08d2cc5exxxxxxxxxxxxxxxxxxxxx ! , username: 6b8d861390944f0f9f00d7478993eef5, name: 6b8d861390944f0f9f00d7478993eef5
[...]
CHK-2STMC397I00589C0Q5X6Uxxxxxxxxxxxxxxxxxxxxxxxxxx
Sekarang kita memiliki kunci API (burner) dengan 60 permintaan gratis, kita dapat mengobrol dengan LLM yang dihosting.
Impornya adalah:
from assets . scripts . API . Chat import chat
(Opsional - Direkomendasikan untuk streaming)
from assets . scripts . API . parse_helper import parse_for_content
Modul opsional dapat mengekstrak token dari potongan aliran peristiwa. Sebaiknya selalu mengurai kata-kata dari aliran masuk daripada harus melakukannya secara manual.
Berikut ini contoh panggilan obrolan:
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 )
Keluaran:
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!
Ya.. itu omong kosong. Ya, model-model ini telah disesuaikan dengan RP, jadi bereksperimenlah dengan perintah Anda. Saya pribadi tidak dapat membantu tetapi Anda hanya perlu memasukkan model tersebut ke dalam persona asisten seperti ChatGPT dan semoga itu akan berhasil.
Fungsi chat
mengambil parameter berikut:
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.
Berikut format potongannya jika Anda tidak menguraikannya menggunakan fungsi tambahan:
data: {"id": "459e62e9-bb18-423f-9403-079cdd9c597a", "object": "chat.completion", "created": "26", "model": "mixtral", "choices": [{"delta": {"content": "<a token will appear here>"}
Potongan terakhir:
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 )