تمت أرشفة هذا المشروع. نظرًا لظروف شخصية، ليس لدي الوقت الكافي للحفاظ على هذا المستودع.
الهندسة العكسية لميزة الدردشة في الإصدار الجديد من Bing
الإنجليزية - 简体中文 - 繁體中文 - الإسبانية - 日本語
python3 -m pip install EdgeGPT --upgrade
!!! ربما لم تعد مطلوبة بعد الآن !!!
في بعض المناطق ، قامت Microsoft بتوفير ميزة الدردشة للجميع، لذا قد تتمكن من تخطي هذه الخطوة . يمكنك التحقق من ذلك باستخدام متصفح (مع تعيين وكيل المستخدم ليعكس Edge)، من خلال محاولة بدء محادثة دون تسجيل الدخول .
وقد وجد أيضًا أن ذلك قد يعتمد على عنوان IP الخاص بك . على سبيل المثال، إذا حاولت الوصول إلى ميزات الدردشة من عنوان IP معروف بأنه ينتمي إلى نطاق مركز بيانات (vServers، خوادم الجذر، VPN، الوكلاء المشتركون، ...)، فقد يُطلب منك تسجيل الدخول بينما تكون قادرًا على الوصول إلى الميزات بشكل جيد من عنوان IP الخاص بمنزلك.
إذا تلقيت الخطأ التالي، فيمكنك محاولة توفير ملف تعريف الارتباط ومعرفة ما إذا كان يعمل بعد ذلك:
Exception: Authentication failed. You have not been accepted into the beta.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51
). يمكنك القيام بذلك بسهولة باستخدام ملحق مثل "User-Agent Switcher and Manager" لمتصفح Chrome وFirefox.bing_cookies_*.json
.bing_cookies_*.json
، بحيث يمكن التعرف عليها من خلال آليات معالجة ملفات تعريف الارتباط الداخلية cookies = json . loads ( open ( "./path/to/cookies.json" , encoding = "utf-8" ). read ()) # might omit cookies option
bot = await Chatbot . create ( cookies = cookies )
$ python3 -m EdgeGPT.EdgeGPT -h
EdgeGPT - A demo of reverse engineering the Bing GPT chatbot
Repo: github.com/acheong08/EdgeGPT
By: Antonio Cheong
!help for help
Type !exit to exit
usage: EdgeGPT.py [-h] [--enter-once] [--search-result] [--no-stream] [--rich] [--proxy PROXY] [--wss-link WSS_LINK]
[--style {creative,balanced,precise}] [--prompt PROMPT] [--cookie-file COOKIE_FILE]
[--history-file HISTORY_FILE] [--locale LOCALE]
options:
-h, --help show this help message and exit
--enter-once
--search-result
--no-stream
--rich
--proxy PROXY Proxy URL (e.g. socks5://127.0.0.1:1080)
--wss-link WSS_LINK WSS URL(e.g. wss://sydney.bing.com/sydney/ChatHub)
--style {creative,balanced,precise}
--prompt PROMPT prompt to start with
--cookie-file COOKIE_FILE
path to cookie file
--history-file HISTORY_FILE
path to history file
--locale LOCALE your locale (e.g. en-US, zh-CN, en-IE, en-GB)
(قامت الصين/الولايات المتحدة/المملكة المتحدة/النرويج بتعزيز الدعم للغة)
Chatbot
asyncio
لمزيد من التحكم الدقيقاستخدم Async للحصول على أفضل تجربة، على سبيل المثال:
import asyncio , json
from EdgeGPT . EdgeGPT import Chatbot , ConversationStyle
async def main ():
bot = await Chatbot . create () # Passing cookies is "optional", as explained above
response = await bot . ask ( prompt = "Hello world" , conversation_style = ConversationStyle . creative , simplify_response = True )
print ( json . dumps ( response , indent = 2 )) # Returns
"""
{
"text": str,
"author": str,
"sources": list[dict],
"sources_text": str,
"suggestions": list[str],
"messages_left": int
}
"""
await bot . close ()
if __name__ == "__main__" :
asyncio . run ( main ())
Query
وملفات Cookie
قم بإنشاء استعلام Bing Chat AI بسيط (باستخدام نمط المحادثة "الدقيق" افتراضيًا) وشاهد فقط مخرجات النص الرئيسي بدلاً من استجابة واجهة برمجة التطبيقات بالكامل:
تذكر تخزين ملفات تعريف الارتباط الخاصة بك بتنسيق معين: bing_cookies_*.json
.
from EdgeGPT . EdgeUtils import Query , Cookie
q = Query ( "What are you? Give your answer as Python code" )
print ( q )
الدليل الافتراضي لتخزين ملفات تعريف الارتباط هو HOME/bing_cookies
ولكن يمكنك تغييره باستخدام:
Cookie . dir_path = Path ( r"..." )
أو قم بتغيير نمط المحادثة أو ملف تعريف الارتباط المراد استخدامه:
q = Query (
"What are you? Give your answer as Python code" ,
style = "creative" , # or: 'balanced', 'precise'
cookie_file = "./bing_cookies_alternative.json"
)
# Use `help(Query)` to see other supported parameters.
استخرج بسرعة مخرجات النص أو مقتطفات التعليمات البرمجية أو قائمة المصادر/المراجع أو أسئلة المتابعة المقترحة من الرد باستخدام السمات التالية:
q . output # Also: print(q)
q . sources
q . sources_dict
q . suggestions
q . code
q . code_blocks
q . code_block_formatsgiven )
احصل على المطالبة الأصلية ونمط المحادثة الذي حددته:
q . prompt
q . ignore_cookies
q . style
q . simplify_response
q . locale
repr ( q )
الوصول إلى الاستعلامات السابقة التي تم إجراؤها منذ استيراد Query
:
Query . index # A list of Query objects; updated dynamically
Query . image_dir_path
وأخيرًا، تدعم فئة Cookie
العديد من ملفات تعريف الارتباط، لذلك إذا قمت بإنشاء ملفات تعريف ارتباط إضافية باستخدام اصطلاح التسمية bing_cookies_*.json
، فستحاول استعلاماتك تلقائيًا استخدام الملف التالي (أبجديًا) إذا تجاوزت حصتك اليومية من الطلبات ( المحدد حاليًا عند 200).
فيما يلي السمات الرئيسية التي يمكنك الوصول إليها:
Cookie . current_file_index
Cookie . current_file_path
Cookie . current_data
Cookie . dir_path
Cookie . search_pattern
Cookie . files
Cookie . image_token
Cookie . import_next
Cookie . rotate_cookies
Cookie . ignore_files
Cookie . supplied_files
Cookie . request_count
يفترض هذا أن لديك ملف cookies.json في دليل العمل الحالي لديك
docker run --rm -it -v $( pwd ) /cookies.json:/cookies.json:ro -e COOKIE_FILE= ' /cookies.json ' ghcr.io/acheong08/edgegpt
يمكنك إضافة أي علامات إضافية على النحو التالي
docker run --rm -it -v $( pwd ) /cookies.json:/cookies.json:ro -e COOKIE_FILE= ' /cookies.json ' ghcr.io/acheong08/edgegpt --rich --style creative
$ python3 -m ImageGen.ImageGen -h
usage: ImageGen.py [-h] [-U U] [--cookie-file COOKIE_FILE] --prompt PROMPT [--output-dir OUTPUT_DIR] [--quiet] [--asyncio]
optional arguments:
-h, --help show this help message and exit
-U U Auth cookie from browser
--cookie-file COOKIE_FILE
File containing auth cookie
--prompt PROMPT Prompt to generate images for
--output-dir OUTPUT_DIR
Output directory
--quiet Disable pipeline messages
--asyncio Run ImageGen using asyncio
ImageQuery
قم بإنشاء صور بناءً على مطالبة بسيطة وقم بتنزيلها إلى دليل العمل الحالي:
from EdgeGPT . EdgeUtils import ImageQuery
q = ImageQuery ( "Meerkats at a garden party in Devon" )
قم بتغيير دليل التنزيل لجميع الصور المستقبلية في هذه الجلسة:
Query.image_dirpath = Path("./to_another_folder")
ImageGen
asyncio
لمزيد من التحكم الدقيق from EdgeGPT . ImageGen import ImageGen
import argparse
import json
async def async_image_gen ( args ) -> None :
async with ImageGenAsync ( args . U , args . quiet ) as image_generator :
images = await image_generator . get_images ( args . prompt )
await image_generator . save_images ( images , output_dir = args . output_dir )
if __name__ == "__main__" :
parser = argparse . ArgumentParser ()
parser . add_argument ( "-U" , help = "Auth cookie from browser" , type = str )
parser . add_argument ( "--cookie-file" , help = "File containing auth cookie" , type = str )
parser . add_argument (
"--prompt" ,
help = "Prompt to generate images for" ,
type = str ,
required = True ,
)
parser . add_argument (
"--output-dir" ,
help = "Output directory" ,
type = str ,
default = "./output" ,
)
parser . add_argument (
"--quiet" , help = "Disable pipeline messages" , action = "store_true"
)
parser . add_argument (
"--asyncio" , help = "Run ImageGen using asyncio" , action = "store_true"
)
args = parser . parse_args ()
# Load auth cookie
with open ( args . cookie_file , encoding = "utf-8" ) as file :
cookie_json = json . load ( file )
for cookie in cookie_json :
if cookie . get ( "name" ) == "_U" :
args . U = cookie . get ( "value" )
break
if args . U is None :
raise Exception ( "Could not find auth cookie" )
if not args . asyncio :
# Create image generator
image_generator = ImageGen ( args . U , args . quiet )
image_generator . save_images (
image_generator . get_images ( args . prompt ),
output_dir = args . output_dir ,
)
else :
asyncio . run ( async_image_gen ( args ))
هذا المشروع موجود بفضل جميع الأشخاص الذين ساهموا فيه.