로컬 Python 스크립트를 사용하여 계정을 생성하고 프리미엄 LLM에 액세스하기 위한 https://venus.chub.ai용 래퍼입니다.
이 스크립트의 목적은 Python을 사용한 리버스 엔지니어링 기능을 보여주는 것입니다. 이 프로젝트는 순전히 교육 목적으로 제작되었으며 GPL-3 라이선스를 따릅니다. 더 많은 정보를 원하시면 언제든지 [email protected]으로 저에게 연락해주세요. 법적인 이유로 인해 법적 시트를 자세히 읽어보시기 바랍니다.
이 README는 초보자에게 친숙한 단계별 설명입니다. 천천히 과정이 필요합니다.
이 간단한 프로젝트는 selenium
, requests
과 같은 모듈을 활용하고 사이트의 보안 취약성과 불일치를 약간 활용합니다. Cloudflare를 추가해도 도움이 되지 않습니다. Selenium 대신 nodriver만 사용해야 합니다.
git clone https://github.com/Recentaly/Venus-Chub-Wrapper.git
Venus-Chub-Wrapper 디렉터리에서 콘솔을 열고 pip install -r requirements.txt
실행하여 종속성을 설치합니다.
상황에 맞게 예제 스크립트가 제공됩니다. 이 프로젝트는 계정 등록 , 화성 토큰 가져오기 , 로그인 등을 위한 개별 코드 조각만 제공합니다. 자신만의 main.py를 만들어야 하지만 이 스크립트가 그 과정을 안내할 것입니다. (업데이트: main.py가 실수로 함께 배송되었습니다. 하지만 예제 2일 뿐입니다. 삭제되지만 잘 모르는 경우 커밋 로그를 자유롭게 확인하세요.)
시작하려면 프로젝트 루트에 main.py 를 만듭니다.
등록에는 2개의 가져오기만 필요합니다. 아래를 보고 이를 main.py에 복사하세요. 첫 번째는 Cloudflare 교차 사이트 요청 위조 토큰을 얻는 데 필요하고 두 번째는 등록 기능 자체입니다.
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
엔드포인트 아래의 더미 봇이 삭제되면 코드가 작동하지 않습니다. 그러나 여기에는 공개 봇의 경로를 넣을 수 있습니다. 웹드라이버가 많은 토큰 트래픽을 처리할 필요가 없도록 가벼운 봇을 추천합니다. 그러면 웹드라이버가 로그인하여 채팅을 방문하고 신속하게 종료되기 전에 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과 채팅하려면 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 )
웹드라이버 프로세스는 종료하지 않으면 계속 실행됩니다! 그에 대한 기능도 있습니다.
다음을 통해 가져옵니다.
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개의 무료 요청이 포함된 (버너) API 키가 있으므로 호스팅된 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 )