banner
Miagz

Miagz

一个很新的网站

「Skype Ai」の誕生

"Skype Ai" の誕生#

一、はじめに#

Microsoft の新しい Bing は、特定の理由から中国本土では利用できません。最初はヘッダーの X-Forwarder-For を変更して地域制限を回避する方法がありましたが、すぐに修正されました。そこで、この記事が生まれました。

二、開始#

Microsoft は NewBing を Skype に導入しました。ユーザーはチャットで NewBing の機能を使用することができます。New Bing が呼び出すモデルは GPT4.0 ですので、Skype で GPT4.0 を無料で利用できることを意味します。残念ながら、Skype で NewBing とのプライベートチャットをするにはまだ「魔法」が必要です。

CleanShot 2023-08-04 at 22.15.02@2x

魔法を使うと

CleanShot 2023-08-05 at 01.09.41@2x

ただし、グループチャットで NewBing を @する場合は魔法を使う必要はありません。突破口を見つけたようです。

CleanShot 2023-08-05 at 01.24.34@2x

しかし、中国本土では Skype は WeChat や QQ ほど広く使われていません。Skype で NewBing を使用するたびに Skype を開き、グループチャットを開き、毎回 NewBing に @する必要があるのは面倒です。そこで、Python スクリプトを使用して Skype の NewBing を呼び出すことにしました。最初は Python の Web スクレイピングを使用して呼び出していましたが、Skype 用の skpy ライブラリがあることを知りました。コード全体は GitHub にありますが、ここでは私が困難だと思ったいくつかの問題について説明します。本文を読みたくない方は、私のGitHubに直接アクセスしてください。

Python で Skype のグループチャットにアクセスする#

skpy を使用して Python でグループチャットにアクセスするには、chats を使用して会話にアクセスする必要があります。chats にはグループ ID がパラメータとして必要です。以下はグループ ID を取得するためのコードです。

loggedInUser = Skype("[email protected]", "password")
getinfo = SkypeChats(loggedInUser)
print(getinfo.recent())

出力される JSON の Topic パラメータは作成したグループチャットの名前です。グループ ID は通常、19:[email protected]のような形式です。

CleanShot 2023-08-05 at 02.20.46@2x

BingChat を呼び出す#

skpy を使用して Python に接続した後、Python からグループチャットにメッセージを送信することができます。ただし、単純に Python で @NewBing をするだけでは NewBing を呼び出すことはできません。Burp Suite を使用してパケットキャプチャを行った結果、@NewBing するたびに次のようなコードが表示されることがわかりました。

<at id=\"28:cf0e6215-34fe-409b-9e4b-135d7f3aa13b\">Bing</at>

このコードを送信するテキストの前に置くことで、@NewBing をすることができました。ただし、メッセージを送信した後、メッセージをリアルタイムで受信する方法はありませんでした。BingChat は私たちがメッセージを送信した後すぐに返信することはできません。公式ドキュメントには、現在のセッションのメッセージのみを取得することができるメッセージの受信方法が記載されています。私は何度も公式ドキュメントを探し回りましたが、SkypeNewMessageEvent メソッドと SkypeEditMessageEvent メソッド(これらはドキュメントの最後の部分にあり、私は気づかなかった)を見つけるまで、結局見つけることができませんでした。SkypeNewMessageEvent メソッドは最新のメッセージを監視して取得し、SkypeEditMessageEvent メソッドはメッセージの変更を監視して変更後の内容を返します。そうです!Skype はメッセージをリアルタイムで変更することができます。最初は SkypeEditMessageEvent メソッドを使用していませんでしたが、テストの際には簡単な質問しかしていなかったので、NewBing が答えを一言で返すことができたため、問題にはなりませんでした。しかし、何度ものテストの結果、NewBing がいつも途中で話をやめてしまうことに気づきました。これにより、進捗が停滞しました。しかし、私は SkypeEditMessageEvent に気づきました。これにより、メッセージが変更されたかどうかをリアルタイムで監視し、変更後のメッセージを返すことができます。

最終結果#

いくつかの機能を追加した後、最終的には次のような結果を得ました。

demo

コードの取得#

GitHubからコードを取得できます。使用する際は、ぜひスターをつけてください。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。