Оболочка .NET API для нового чата Bing от Microsoft на базе искусственного интеллекта.
Предупреждение УСТАРЕЛО И ОБСЛУЖИВАНИЕ
В настоящее время реализация не синхронизирована с недавними изменениями API, что приводит к частым ошибкам и запуску капчи. Планируется изучить это и согласовать реализацию с официальными клиентами API (приложение iOS и браузер), чтобы уменьшить эти проблемы или полностью их устранить, если такая возможность существует.Кроме того, у этого репозитория долгое время не было сопровождающих. Если кто-то хочет взять на себя управление, пожалуйста, свяжитесь со мной.
Предупреждение. Эта библиотека является неофициальной и сильно зависит от реверс-инжиниринга. Используйте на свой страх и риск.
Примечание. После публичного выпуска BingChat действительный файл cookie больше не требуется. Вы можете использовать этот пакет без какой-либо аутентификации.
Установите этот пакет через диспетчер пакетов NuGet или интерфейс командной строки dotnet:
dotnet add package --prerelease BingChat
Затем,
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 } " ) ;
Приведенный выше код отправляет сообщение в чат AI и получает от него ответ.
Этот метод создает одноразовый разговор и отбрасывает его после завершения. Если вы хотите продолжить общение в том же контексте (так же, как поведение в веб-интерфейсе), вам необходимо создать общий разговор:
// 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 } " ) ;
Мы также разработали для вас потрясающий инструмент командной строки! Смотрите превью ниже:
Вы можете установить CLI, просто выполнив следующую команду:
dotnet tool install -g --prerelease dotnet- BingChat
Затем запустите CLI:
dotnet BingChat
harmonyv3
использовать более старую модель, имеющую более высокую производительность. .SendAsync(..)
чтобы обеспечить подробный доступ и контроль над состоянием диалога. Вы можете установить свой собственный файл cookie для взаимодействия с сервером BingChat вместо создания случайного.
Чтобы получить его, вы можете зайти на сайт www.bing.com, войти в учетную запись, у которой есть доступ, а затем открыть Инструменты разработчика (F12) > вкладка «Приложение» > «Хранилище» > «Файлы cookie», найти файл cookie с именем _U
и скопировать его значение. Затем передайте его конструктору BingChat ClientOptions
.
Есть несколько причин. Вы можете выполнить следующие действия, чтобы решить проблему.
Обновите веб-страницу, убедитесь, что значение «_U» актуально и скопировано правильно, и повторите попытку.
Если вы используете прокси-сервер (VPN), попробуйте настроить глобальный прокси-сервер и повторите попытку. Код выглядит следующим образом:
HttpClient . DefaultProxy = new WebProxy ( "127.0.0.1:8807" ) ; //Your proxy address and port
Найдите другой файл cookie с именем «KievRPSSecAuth», установите его значение и повторите попытку. Код выглядит следующим образом:
var client = new BingChat Client ( new BingChat ClientOptions {
// The "_U" cookie's value
CookieU = strU ,
// The "KievRPSSecAuth" cookie's value
CookieKievRPSSecAuth = strKievRPSSecAuth ,
} ) ;
Откройте меню браузера > Расширения. Найдите «Редактор файлов cookie» и установите его. Перейдите на веб-страницу Bing Chat и экспортируйте все файлы cookie в локальный файл в формате JSON. Установите значение пути к файлу следующим образом (значения «_U» и «KievRPSSecAuth» на данный момент не нужны):
var client = new BingChat Client ( new BingChat ClientOptions {
// The exported cookie file path
CookieFilePath = strFilePath ,
} ) ;
Спасибо этим участникам за разработку или улучшение этой библиотеки:
Если у вас есть идеи по поводу этого проекта, смело открывайте пиар и делитесь ими с нами :D
Этот проект распространяется под лицензией MIT License. У нас ❤ открытый исходный код!