Crates.io | binggpt-cli |
lib.rs | binggpt-cli |
version | 0.1.5 |
source | src |
created_at | 2023-02-28 03:00:28.869326 |
updated_at | 2023-02-28 03:00:28.869326 |
description | BingGPT command line client, written in rust |
homepage | https://github.com/jlvihv/BingGPT |
repository | https://github.com/jlvihv/BingGPT |
max_upload_size | |
id | 796535 |
size | 56,405 |
BingGPT command line client, written in rust
This project is a rust language implementation of EdgeGPT, all the hard stuff was done by the original project author acheong08
, I just wrote it in rust, all credit goes to him, thanks for the hard work big guy!
cargo install binggpt-cli
# use `binggpt`
binggpt
Or download the binary from the release page.
You must have a Microsoft account with access to BingGPT.
cookie-editor
extension~/.config/bing-cookies.json
fileFirst you need to perform the configuration steps above.
If you have a rust development environment, first you need to clone the code, go to this project directory, and run cargo run
.
If you want to compile it into binaries, you can run cargo build --release
. After the compilation is done, you can find the compiled binaries in the target/release
directory.
If you want to install it to the system, you can run cargo install --path binggpt-cli
, so you can easily use the binggpt
command anywhere.
After starting the program, when you see You:
, it means you can start a conversation with BingGPT, press enter twice to send a message.
In the conversation, you can use the following command.
:q
:quit
:exit
to quit the program:more
to enter multi-line mode, where you can safely type more text, or paste text from the clipboard:end
exit multi-line modesee #3
Ensure that users running Windows 10 use this command in their terminal, with administrator privileges, to enable text colors in the terminal.
reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
cargo add binggpt
cargo add utf8-slice
cargo add tokio --features full
use std::io::{stdout, Write};
#[tokio::main]
async fn main() {
let mut bing = binggpt::Bing::new("~/.config/bing-cookies.json")
.await
.unwrap();
// send message
bing.send_msg("hello").await.unwrap();
// receive message
let mut index = 0;
// loop until the chat is done
loop {
if bing.is_done() {
break;
}
let Some(answer) = bing.recv_text().await.unwrap() else{
continue;
};
// print the new part of the answer
if !answer.is_empty() {
print!("{}", utf8_slice::from(&answer, index));
if stdout().flush().is_err() {
println!("Warning: Failed to flush stdout");
};
index = utf8_slice::len(&answer);
}
}
}
This project exists thanks to all the people who contribute.