Wrapper d'API .NET pour le nouveau Bing Chat de Microsoft basé sur l'IA.
Avertissement PÉRIMÉ ET ENTRETIEN
Actuellement, la mise en œuvre n'est pas synchronisée avec les récentes modifications de l'API, ce qui entraîne des erreurs fréquentes et déclenche un captcha. Il est prévu d'étudier ce problème et d'aligner la mise en œuvre sur les clients API officiels (application iOS et navigateur) pour réduire ces problèmes ou les atténuer complètement si une telle possibilité existe.De plus, ce référentiel manque de mainteneurs depuis longtemps. Si quelqu'un souhaite prendre la relève, contactez-moi.
Avertissement Cette bibliothèque n'est pas officielle et dépend fortement de la rétro-ingénierie. Utilisez à vos propres risques.
Remarque Depuis la sortie publique de BingChat , un cookie valide n'est plus requis. Vous pouvez utiliser ce package sans aucune authentification.
Installez ce package via le gestionnaire de packages NuGet ou la CLI dotnet :
dotnet add package --prerelease BingChat
Alors,
using BingChat ;
// Construct the chat client
var client = new BingChat Client ( new BingChat ClientOptions
{
// Tone used for conversation
Tone = BingChat Tone . Balanced ,
} ) ;
var message = "Do you like cats?" ;
var answer = await client . AskAsync ( message ) ;
Console . WriteLine ( $ "Answer: { answer } " ) ;
Le code ci-dessus envoie un message à l'IA du chat et en obtient la réponse.
Cette méthode crée une conversation unique et la supprime une fois terminée. Si vous souhaitez continuer à discuter dans le même contexte (tout comme le comportement dans l'interface web), vous devez créer une conversation partagée :
// Create a conversation, so we can continue chatting in the same context.
var conversation = await client . CreateConversation ( ) ;
var firstMessage = "Do you like cats?" ;
var answer = await conversation . AskAsync ( firstMessage ) ;
Console . WriteLine ( $ "First answer: { answer } " ) ;
await Task . Delay ( TimeSpan . FromSeconds ( 5 ) ) ;
var secondMessage = "What did I just say?" ;
answer = await conversation . AskAsync ( secondMessage ) ;
Console . WriteLine ( $ "Second answer: { answer } " ) ;
Nous avons également développé un incroyable outil de ligne de commande pour vous ! Voir l'aperçu ci-dessous :
Vous pouvez installer la CLI en exécutant simplement la commande suivante :
dotnet tool install -g --prerelease dotnet- BingChat
Démarrez ensuite la CLI :
dotnet BingChat
harmonyv3
permet à l'ancien modèle d'offrir de meilleures performances. .SendAsync(..)
pour permettre un accès détaillé et un contrôle sur l'état de la conversation Vous pouvez définir votre propre cookie pour interagir avec le serveur BingChat , au lieu d'en générer un aléatoire.
Pour l'obtenir, vous pouvez aller sur www.bing.com, vous connecter à un compte auquel vous avez accès, puis ouvrir Outils de développement (F12) > Onglet Application > Stockage > Cookies, rechercher le cookie nommé _U
et copier sa valeur. Transmettez-le ensuite au constructeur de BingChat ClientOptions
.
Il y a plusieurs raisons. Vous pouvez suivre ces étapes pour résoudre le problème.
Actualisez la page Web, confirmez que la valeur « _U » est à jour et copiée correctement, puis réessayez.
Si vous utilisez un proxy (VPN), essayez de définir le proxy global et réessayez. Le code est le suivant :
HttpClient . DefaultProxy = new WebProxy ( "127.0.0.1:8807" ) ; //Your proxy address and port
Recherchez un autre cookie nommé « KievRPSSecAuth », définissez sa valeur et réessayez. Le code est le suivant :
var client = new BingChat Client ( new BingChat ClientOptions {
// The "_U" cookie's value
CookieU = strU ,
// The "KievRPSSecAuth" cookie's value
CookieKievRPSSecAuth = strKievRPSSecAuth ,
} ) ;
Ouvrez le menu du navigateur > Extensions. Recherchez « Cookie Editor » et installez-le. Accédez à la page Web de Bing Chat et exportez tous les cookies vers un fichier local au format JSON. Définissez la valeur du chemin du fichier comme suit (les valeurs "_U" et "KievRPSSecAuth" ne sont pas nécessaires pour le moment) :
var client = new BingChat Client ( new BingChat ClientOptions {
// The exported cookie file path
CookieFilePath = strFilePath ,
} ) ;
Merci à ces contributeurs pour avoir développé ou amélioré cette bibliothèque :
Si vous avez une idée sur ce projet, n'hésitez pas à ouvrir un PR et à partager avec nous :D
Ce projet est sous licence MIT. Nous ❤ open source !