Wrapper de API .NET para o novo Bing Chat da Microsoft com tecnologia de IA.
Aviso FORA DE DATA E MANUTENÇÃO
Atualmente, a implementação está fora de sincronia com as mudanças recentes da API que levam a erros frequentes e acionam captcha. Está planejado investigar isso e alinhar a implementação com os clientes oficiais da API (aplicativo iOS e navegador) para reduzir esses problemas ou mitigá-los completamente, se tal possibilidade existir.Além disso, este repositório carece de mantenedores há muito tempo. Se alguém quiser assumir, entre em contato comigo.
Aviso Esta biblioteca não é oficial e depende muito de engenharia reversa. Use por sua conta e risco.
Nota Desde o lançamento público do BingChat , um cookie válido não é mais necessário. Você pode usar este pacote sem qualquer autenticação.
Instale este pacote por meio do gerenciador de pacotes NuGet ou da CLI dotnet:
dotnet add package --prerelease BingChat
Então,
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 } " ) ;
O código acima envia uma mensagem para a IA do chat e obtém a resposta dela.
Este método cria uma conversa única e a descarta quando concluída. Se quiser continuar conversando no mesmo contexto (assim como o comportamento na interface web), você precisa criar uma conversa compartilhada:
// 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 } " ) ;
Também desenvolvemos uma ferramenta de linha de comando incrível para você! Veja a prévia abaixo:
Você pode instalar a CLI simplesmente executando o seguinte comando:
dotnet tool install -g --prerelease dotnet- BingChat
Em seguida, inicie a CLI:
dotnet BingChat
harmonyv3
permite o modelo mais antigo que tem melhor desempenho .SendAsync(..)
para permitir acesso detalhado e controle sobre o estado da conversa Você pode definir seu próprio cookie para interagir com o servidor BingChat , em vez de gerar um aleatório.
Para obtê-lo, você pode acessar www.bing.com, fazer login em uma conta que tenha acesso e, em seguida, abrir Ferramentas do desenvolvedor (F12) > Guia Aplicativo > Armazenamento > Cookies, encontrar o cookie chamado _U
e copiar seu valor. Em seguida, passe-o para o construtor do BingChat ClientOptions
.
Existem vários motivos. Você pode seguir estas etapas para lidar com o problema.
Atualize a página da web, confirme se o valor '_U' está atualizado e copiado corretamente e tente novamente.
Se você estiver usando um proxy (VPN), tente configurar o proxy global e tente novamente. O código é o seguinte:
HttpClient . DefaultProxy = new WebProxy ( "127.0.0.1:8807" ) ; //Your proxy address and port
Encontre outro cookie chamado 'KievRPSSecAuth', defina seu valor e tente novamente. O código é o seguinte:
var client = new BingChat Client ( new BingChat ClientOptions {
// The "_U" cookie's value
CookieU = strU ,
// The "KievRPSSecAuth" cookie's value
CookieKievRPSSecAuth = strKievRPSSecAuth ,
} ) ;
Abra o menu do navegador > Extensões. Procure por 'Cookie Editor' e instale-o. Vá para a página do Bing Chat e exporte todos os cookies para um arquivo local no formato JSON. Defina o valor do caminho do arquivo da seguinte forma (os valores "_U" e "KievRPSSecAuth" não são necessários neste momento):
var client = new BingChat Client ( new BingChat ClientOptions {
// The exported cookie file path
CookieFilePath = strFilePath ,
} ) ;
Obrigado a estes contribuidores por desenvolver ou melhorar esta biblioteca:
Se você tem alguma ideia sobre esse projeto, fique à vontade para abrir um PR e compartilhar conosco :D
Este projeto está licenciado sob licença MIT. Nós ❤ código aberto!