aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 254d92d79e3e38b421f0e5f2d485ffac14dd327e (plain)
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
# how to run ts bullshit

two parts: `bot.py` talks to discord, `main.py` (ollama) or `gemini.py` (gemini api) is the brain. 
`main.py` is stateless so it can live on another machine / colab and talk to `bot.py` through a websocket or tunnel, you never have to upload your files anywhere sketchy

# installing
pick your distro. all of them use a venv because python doesn't let you `pip install` system wide anymore

### ubuntu
```console
$ sudo apt install python3 python3-venv curl zstd
$ curl -fsSL https://ollama.com/install.sh | sh
```
### arch
```console
$ sudo pacman -S python ollama
#ollama-cuda or ollama-rocm if you have a gpu
```
### gentoo
```console
$ sudo emerge --ask dev-lang/python sci-ml/ollama
#sci-ml/ollama is ~amd64, so you need to keyword it first
$ echo "sci-ml/ollama ~amd64" | sudo tee /etc/portage/package.accept_keywords/ollama
#sci-ml/ollama-bin if you don't wanna compile it
```
(skip the ollama part if you're using the gemini api)

then your python dependencies are
```console
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install ollama websockets discord.py
#and this one only if you're using the gemini api
$ pip install google-genai
```

# once you install your dependencies
you need ollama running (not needed for gemini)
```console
#ollama needs to be serving, the packages above already ship a service
$ sudo systemctl enable --now ollama #ubuntu / arch / gentoo systemd
$ sudo rc-update add ollama default && sudo rc-service ollama start #gentoo openrc
#or just run it by hand
$ ollama serve &
$ ollama pull <your model>
$ ollama pull <your embedding model>
#those two are in main.py
#test it with
$ ollama run <your model>
```
if that runs fine (or you have a gemini key) then you can
- go to the discord developer portal and turn on **message content intent** and **server members intent** for your bot or it won't start
- add the bot to your server
- run the wizard, it writes all the config files for you
```console
$ python3 setup_wizard.py
```
- edit your system prompt in `./files/config/system_prompt.txt` (it makes a placeholder the first time bot.py runs)
- optional: `./config/params.json` has the ollama options (temperature and stuff), without it ollama just uses its defaults
- run the brain first, then the bot
```console
$ python3 main.py #or gemini.py
$ python3 bot.py
```
she only reads `general` and `announcements`, and every dm gets its own memory in `./files/log/dm/` so it never leaks into the server

# colab
if your pc can't run the model you can host `main.py` on colab, run `setup_wizard.py` on both sides and say yes to the colab question
```console
#on colab
$ python3 colab_setup.py
```
it prints a wss:// address and a token, paste those into the wizard on the bot.py side. the address changes every time you restart the notebook

# IF IT FAILS
- check `./files/log/errorlog.txt`
- `bad auth token` means the token in `./files/config/connection.txt` isn't the one main.py has in `./config/auth_token.txt`
- on colab main.py logs to `main.log` next to colab_setup.py

# have fun