عميل Python for Copilot (المعروف سابقًا باسم Bing Chat)، المعروف أيضًا باسم سيدني.
ملحوظة
هذا عميل غير رسمي .
لتثبيت Sydney.py، قم بتشغيل الأمر التالي:
pip install sydney-py
أو إذا كنت تستخدم الشعر:
poetry add sydney-py
نصيحة
تأكد من أنك تستخدم أحدث إصدار من Sydney.py لضمان أفضل توافق مع Copilot.
لاستخدام Sydney.py، تحتاج أولاً إلى استخراج جميع ملفات تعريف الارتباط من صفحة الويب الخاصة بـ Copilot. تُستخدم ملفات تعريف الارتباط هذه لمصادقة طلباتك إلى Copilot API.
للحصول على ملفات تعريف الارتباط، اتبع الخطوات التالية على Microsoft Edge:
F12
أو النقر بزر الماوس الأيمن على مربع حوار الدردشة وتحديد Inspect
).Network
لعرض جميع الطلبات المرسلة إلى Copilot.create?bundleVersion=XYZ
وانقر عليه.Cookie:
ثم قم بتعيينه كمتغير بيئة في الصدفة الخاصة بك:
export BING_COOKIES= < your-cookies >
أو في كود بايثون الخاص بك:
os . environ [ "BING_COOKIES" ] = "<your-cookies>"
نصيحة
في بعض المناطق، لا يلزم استخدام ملفات تعريف الارتباط، وفي هذه الحالة يمكن تخطي التعليمات المذكورة أعلاه.
نصيحة
من الممكن أيضًا استخدام ملحق Cookie-Editor
، وتصدير ملفات تعريف الارتباط بتنسيق Header String
وتعيينها بنفس الطريقة.
مهم
بالنسبة للمناطق التي تتطلب ملف تعريف الارتباط، يوصى بكتابة الرسائل يدويًا إلى Copilot حتى يظهر مربع يحتوي على رسالة Verifying
، والتي يجب أن تتحول بعد ذلك إلى Success!
رسالة. بدون هذه الخطوة، من الممكن أن يفشل موقع Sydney.py بسبب خطأ CaptchaChallenge
.
يمكنك استخدام Sydney.py لإنشاء عميل CLI لـ Copilot بسهولة:
import asyncio
from sydney import SydneyClient
async def main () -> None :
async with SydneyClient () as sydney :
while True :
prompt = input ( "You: " )
if prompt == "!reset" :
await sydney . reset_conversation ()
continue
elif prompt == "!exit" :
break
print ( "Sydney: " , end = "" , flush = True )
async for response in sydney . ask_stream ( prompt ):
print ( response , end = "" , flush = True )
print ( " n " )
if __name__ == "__main__" :
asyncio . run ( main ())
يمكنك إنشاء عميل سيدني وتهيئة الاتصال مع Copilot الذي يبدأ المحادثة:
sydney = SydneyClient ()
await sydney . start_conversation ()
# Conversation
await sydney . close_conversation ()
بدلًا من ذلك، يمكنك استخدام عبارة async with
للحفاظ على ضغط الكود:
async with SydneyClient () as sydney :
# Conversation
يمكنك ضبط نمط المحادثة عند إنشاء عميل سيدني:
sydney = SydneyClient ( style = "creative" )
الخيارات المتاحة creative
balanced
precise
.
يمكنك إعادة ضبط المحادثة حتى ينسى العميل المحادثة السابقة. يمكنك أيضًا تغيير نمط المحادثة دون إنشاء عميل جديد:
async with SydneyClient () as sydney :
# Conversation
await sydney . reset_conversation ( style = "creative" )
يمكنك طرح أسئلة على Copilot وتضمين الاستشهادات (اختياريًا) في النتائج:
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , citations = True )
print ( response )
يمكنك أيضًا بث رموز الاستجابة:
async with SydneyClient () as sydney :
async for response in sydney . ask_stream ( "When was Bing Chat released?" , citations = True ):
print ( response , end = "" , flush = True )
يدعم كلا الإصدارين من طريقة ask
نفس المعلمات.
من الممكن أيضًا توفير عنوان URL لصورة أو مسار ملف صورة محلي كمرفق، والذي سيتم استخدامه كمدخل مع الموجه:
async with SydneyClient () as sydney :
response = await sydney . ask ( "What does this picture show?" , attachment = "<image-url-or-path>" )
print ( response )
يمكنك أيضًا توفير محتويات صفحة الويب كسياق إضافي لاستخدامه مع الموجه:
async with SydneyClient () as sydney :
response = await sydney . ask ( "Describe the webpage" , context = "<web-page-source>" )
print ( response )
من الممكن تحديد ما إذا كان بإمكان برنامج Copilot البحث في الويب عن معلومات لاستخدامها في النتائج:
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , search = False )
print ( response )
يتم تمكين البحث في الويب بشكل افتراضي.
ملحوظة
لا يمكن تعطيل بحث الويب عند بث الاستجابة.
من الممكن استخدام إصدارات متخصصة من برنامج Copilot، مناسبة لمهام أو محادثات محددة:
async with SydneyClient ( persona = "travel" ) as sydney :
response = await sydney . ask ( "Tourist attractions in Sydney" )
print ( response )
الخيارات المتاحة لمعلمة persona
هي:
copilot
travel
cooking
fitness
افتراضيًا، سيستخدم موقع Sydney.py شخصية copilot
.
يمكنك أن تطلب من Copilot إنشاء أنواع مختلفة من المحتوى، مثل رسائل البريد الإلكتروني والمقالات والأفكار والمزيد:
async with SydneyClient () as sydney :
response = await sydney . compose ( "Why Python is a great language" , format = "ideas" )
print ( response )
يمكنك أيضًا بث رموز الاستجابة:
async with SydneyClient () as sydney :
async for response in sydney . compose_stream ( "Why Python is a great language" , format = "ideas" ):
print ( response , end = "" , flush = True )
الخيارات الافتراضية المتاحة لمعلمة tone
هي:
professional
casual
enthusiastic
informational
funny
من الممكن أيضًا توفير أي قيمة أخرى لمعلمة tone
.
الخيارات المتاحة لمعلمة format
هي:
paragraph
email
blogpost
ideas
الخيارات المتاحة لمعلمة length
هي:
short
medium
long
يدعم كلا الإصدارين من طريقة compose
نفس المعلمات.
يمكنك أيضًا تلقي استجابات المستخدم المقترحة كما تم إنشاؤها بواسطة Copilot بالإضافة إلى الإجابة النصية. كلاهما ask
، ويدعم ask_stream
هذه الميزة:
async with SydneyClient () as sydney :
response , suggested_responses = await sydney . ask ( "When was Bing Chat released?" , suggestions = True )
if suggested_responses :
print ( "Suggestions:" )
for suggestion in suggested_responses :
print ( suggestion )
وأيضًا compose
و compose_stream
:
async with SydneyClient () as sydney :
response , suggested_responses = await sydney . compose (
"Why Python is a great language" , format = "ideas" , suggestions = True
)
if suggested_responses :
print ( "Suggestions:" )
for suggestion in suggested_responses :
print ( suggestion )
ملحوظة
يتم إرجاع استجابات المستخدم المقترحة فقط إذا كانت معلمة الاقتراحات صحيحة. بخلاف ذلك، فإن كافة أساليب ask
compose
تقوم بإرجاع الاستجابة فقط.
ملحوظة
عند استخدام طريقة ask_stream
أو compose_stream
مع معلمة الاقتراحات، فإن استجابات المستخدم المقترحة التي تم إرجاعها مؤخرًا فقط قد تحتوي على قيمة. بالنسبة لجميع التكرارات السابقة، ستكون استجابات المستخدم المقترحة None
.
يمكنك أيضًا تحسين نتائج compose
أو تغييرها باستخدام إما الاستجابات المقترحة أو أي مطالبة أخرى:
async with SydneyClient () as sydney :
response , suggested_responses = await sydney . compose (
prompt = "Why Python is a great language" , format = "ideas" , suggestions = True ,
)
response , suggested_responses = await sydney . compose (
prompt = suggested_responses [ 0 ], format = "ideas" , suggestions = True
)
print ( response )
يمكنك أيضًا تلقي استجابة JSON الأولية التي تأتي من Copilot بدلاً من الإجابة النصية. يدعم كل من ask
compose
هذه الميزة:
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , raw = True )
print ( response )
يمكنك أيضًا استقبال كافة المحادثات الموجودة التي تمت مع العميل الحالي:
async with SydneyClient () as sydney :
response = await sydney . get_conversations ()
print ( response )
عندما يحدث خطأ ما، قد يطرح موقع Sydney.py أحد الاستثناءات التالية:
استثناء | معنى | حل |
---|---|---|
NoConnectionException | لم يتم العثور على اتصال بـ Copilot | أعد المحاولة |
ConnectionTimeoutException | انتهت مهلة محاولة الاتصال بمساعد الطيار | أعد المحاولة |
NoResponseException | لم يتم إرجاع أي رد من مساعد الطيار | أعد المحاولة أو استخدم ملف تعريف الارتباط الجديد |
ThrottledRequestException | تم اختناق الطلب | انتظر ثم أعد المحاولة |
CaptchaChallengeException | يجب حل تحدي الكابتشا | استخدم ملف تعريف الارتباط الجديد |
ConversationLimitException | تم الوصول إلى حد المحادثة وهو N من الرسائل | ابدأ محادثة جديدة |
CreateConversationException | فشل في إنشاء محادثة | أعد المحاولة أو استخدم ملف تعريف الارتباط الجديد |
GetConversationsException | فشل الحصول على المحادثات | أعد المحاولة |
لمزيد من الوثائق والخيارات التفصيلية، يرجى الرجوع إلى مستندات التعليمات البرمجية.
هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف الترخيص للحصول على التفاصيل.