Wrapper สำหรับ https://venus.chub.ai เพื่อสร้างบัญชีและเข้าถึง LLM ระดับพรีเมียมโดยใช้สคริปต์ Python ในเครื่อง
วัตถุประสงค์ของสคริปต์นี้คือเพื่อแสดงความสามารถของวิศวกรรมย้อนกลับด้วย Python โครงการนี้มีวัตถุประสงค์เพื่อการศึกษาเท่านั้นและอยู่ภายใต้ใบอนุญาต GPL-3 หากต้องการข้อมูลเพิ่มเติม โปรดติดต่อฉันได้ที่ [email protected] ด้วยเหตุผลทางกฎหมาย โปรดอ่านเอกสารทางกฎหมายอย่างละเอียด
README นี้เหมาะสำหรับผู้เริ่มต้นและเป็นแบบทีละขั้นตอน ต้องใช้กระบวนการอย่างช้าๆ
โปรเจ็กต์ที่เรียบง่ายนี้ใช้โมดูลต่างๆ เช่น selenium
requests
และการใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยและความไม่สอดคล้องกันของไซต์เล็กน้อย การเพิ่ม Cloudflare ก็ไม่ได้ช่วยอะไรเช่นกัน ฉันจะต้องใช้ nodriver แทนซีลีเนียมเท่านั้น
เรียกใช้ git clone https://github.com/Recentaly/Venus-Chub-Wrapper.git
ติดตั้งการขึ้นต่อกันโดยการเปิดคอนโซลในไดเร็กทอรี Venus-Chub-Wrapper และรัน pip install -r requirements.txt
สำหรับบริบท มีการจัดเตรียม สคริปต์ตัวอย่าง ไว้ด้วย โปรเจ็กต์นี้จัดส่งเฉพาะข้อมูลโค้ดแต่ละรายการเพื่อ ลงทะเบียน บัญชี ดึง Mars Token ของคุณ เข้าสู่ระบบ และอื่นๆ คุณจะต้องสร้าง main.py ของคุณเอง แต่สคริปต์นี้จะแนะนำคุณในกระบวนการนี้ (อัปเดต: main.py ถูกจัดส่งไปโดยไม่ตั้งใจ แต่เป็นเพียงตัวอย่างที่ 2 มันจะถูกลบ แต่อย่าลังเลที่จะตรวจสอบบันทึกการคอมมิตหากคุณไม่มีความรู้)
ในการเริ่มต้น ให้สร้าง main.py ในรูทของโปรเจ็กต์
การลงทะเบียนต้องการการนำเข้าเพียง 2 ครั้ง ดูด้านล่างและคัดลอกสิ่งเหล่านี้ลงใน 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 )
นี่เป็นการลงทะเบียนบัญชี Burner และคัดลอกการตอบกลับจาก 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
ถูกลบ อย่างไรก็ตาม คุณสามารถใส่เส้นทางของบอทสาธารณะได้ที่นี่ ฉันแนะนำบอทแบบเบาเพื่อให้เว็บไดรเวอร์ไม่จำเป็นต้องจัดการกับการรับส่งข้อมูลโทเค็นจำนวนมาก จากนั้นเว็บไดรเวอร์จะเข้าสู่ระบบ เยี่ยมชมแชทและดึงข้อมูลคีย์ API ก่อนที่จะปิดอย่างรวดเร็ว
การนำเข้า:
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 LLM ด้วยบัญชี Burner หรือบัญชีที่มีอยู่ เรายังจำเป็นต้องดึงคีย์ 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
ตอนนี้เรามีคีย์ API (ตัวเขียน) พร้อมคำขอฟรี 60 รายการแล้ว เราก็สามารถแชทกับ LLM ที่โฮสต์ได้
การนำเข้าคือ:
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 )