Copilot 用 Python クライアント (旧名 Bing Chat)、Sydney とも呼ばれます。
注記
こちらは非公式クライアントです。
Sydney.py をインストールするには、次のコマンドを実行します。
pip install sydney-py
または、詩を使用する場合:
poetry add sydney-py
ヒント
Copilot との互換性を最大限に高めるために、最新バージョンの Sydney.py を使用していることを確認してください。
Sydney.py を使用するには、まず Copilot Web ページからすべての Cookie を抽出する必要があります。これらの Cookie は、Copilot API へのリクエストを認証するために使用されます。
Cookie を取得するには、Microsoft Edge で次の手順に従います。
F12
を押すか、チャット ダイアログを右クリックしてInspect
を選択します)。Network
タブを選択して、Copilot に送信されたすべてのリクエストを表示します。create?bundleVersion=XYZ
という名前のリクエストを見つけてクリックします。Cookie:
フィールドの後の値全体をコピーします。次に、それをシェルで環境変数として設定します。
export BING_COOKIES= < your-cookies >
または、Python コード内で次のようにします。
os . environ [ "BING_COOKIES" ] = "<your-cookies>"
ヒント
一部の地域では Cookie を使用する必要がなく、その場合は上記の手順をスキップできます。
ヒント
Cookie-Editor
拡張機能を使用して、Cookie をHeader String
形式でエクスポートし、同じ方法で設定することもできます。
重要
Cookie が必要な地域では、 Verifying
メッセージを含むボックスが表示されるまで手動でメッセージを Copilot に書き込むことをお勧めします。その後、「 Success!
に切り替わります。メッセージ。この手順を行わないと、Sydney.py がCaptchaChallenge
エラーで失敗する可能性があります。
Sydney.py を使用すると、Copilot 用の CLI クライアントを簡単に作成できます。
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 )
Web ページのコンテンツを、プロンプトとともに使用する追加のコンテキストとして提供することもできます。
async with SydneyClient () as sydney :
response = await sydney . ask ( "Describe the webpage" , context = "<web-page-source>" )
print ( response )
Copilot が結果で使用する情報を Web で検索できるかどうかを判断できます。
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , search = False )
print ( response )
Web の検索はデフォルトで有効になっています。
注記
応答がストリーミングされている場合、Web 検索を無効にすることはできません。
特定のタスクや会話に適した、特殊なバージョンの 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 )
注記
提案されたユーザー応答は、suggests パラメーターが true の場合にのみ返されます。それ以外の場合、すべての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 )
テキスト回答の代わりに、Copilot からの生の JSON 応答を受け取ることもできます。 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 | Copilot への接続試行がタイムアウトしました | リトライ |
NoResponseException | Copilot から応答が返されませんでした | 再試行するか、新しい Cookie を使用してください |
ThrottledRequestException | リクエストが抑制されています | 待ってから再試行してください |
CaptchaChallengeException | キャプチャの課題を解決する必要がある | 新しいクッキーを使用する |
ConversationLimitException | N メッセージの会話制限に達しました | 新しい会話を開始する |
CreateConversationException | 会話の作成に失敗しました | 再試行するか、新しい Cookie を使用してください |
GetConversationsException | 会話の取得に失敗しました | リトライ |
より詳細なドキュメントとオプションについては、コードのドキュメント文字列を参照してください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。