1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# AIChat
[](https://github.com/sigoden/aichat/actions/workflows/ci.yaml)
[](https://crates.io/crates/aichat)
Chat with OpenAI GPT-3.5 in the terminal.

## Install
### With cargo
```
cargo install --force aichat
```
### Binaries on macOS, Linux, Windows
Download from [Github Releases](https://github.com/sigoden/aichat/releases), unzip and add opscan to your $PATH.
## Config
On first launch, aichat will guide you through configuration.
```
> No config file, create a new one? Yes
> Openai API Key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Use proxy? Yes
> Set proxy: socks5://127.0.0.1:1080
> Save chat messages Yes
```
After setting, it will automatically create the configuration file. Of course, you can also manually set the configuration file.
```yaml
api_key: "<YOUR SECRET API KEY>" # Request via https://platform.openai.com/account/api-keys
temperature: 1.0 # optional, see https://platform.openai.com/docs/api-reference/chat/create#chat/create-temperature
save: true # optional, If set to true, aichat will save chat messages to message.md
proxy: "socks5://127.0.0.1:1080" # optional, set proxy server. e.g. http://127.0.0.1:8080 or socks5://127.0.0.1:1080
```
The default config dir is as follows, You can override config dir with `$AICHAT_CONFIG_DIR`.
- Linux: `/home/alice/.config/aichat`
- Windows: `C:\Users\Alice\AppData\Roaming\aichat`
- MacOS: `/Users/Alice/Library/Application Support`
aichat may generate the following files in the config dir:
- `config.yaml`: the config file.
- `roles.yaml`: the roles definition file.
- `history.txt`: the repl history file.
- `messages.md`: the chat messages storage file.
### Roles
We can let ChatGPT play a certain role through `prompt` to make it better generate what we want. See [awesome-chatgpt-prompts](https://github.com/f/awesome-chatgpt-prompts) for details.
We can predefine a batch of roles in `rules.yaml`. For example, we define a javascript-console role as follows.
```yaml
- name: javascript-console
prompt: >
I want you to act as a javascript console. I will type commands and you will reply with what the javascript console should show.
I want you to only reply with the terminal output inside one unique code block, and nothing else.
do not write explanations. do not type commands unless I instruct you to do so.
when i need to tell you something in english, i will do so by putting text inside curly brackets {like this}.
My first command is:
```
Let ChaGPT answer questions in the role of a javascript-console.
```
aichat --role javascript-console console.log("Hello World")
```
In interactive mode, we do this:
```
〉.role javascript-console
〉console.log("Hello world")
```
## License
Copyright (c) 2023 aichat-developers.
aichat is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
See the LICENSE-APACHE and LICENSE-MIT files for license details.
|