diff options
author | terminaldweller <devi@terminaldweller.com> | 2024-05-13 16:30:11 +0000 |
---|---|---|
committer | terminaldweller <devi@terminaldweller.com> | 2024-05-13 16:30:11 +0000 |
commit | 7b6605142343a622a982ca36da5ee6fbd1cd9a19 (patch) | |
tree | 5cbb6026f9e4d87f4fbac5f7db7da14ffb575a52 /README.md | |
parent | added a config file for golangci-lint (diff) | |
download | milla-7b6605142343a622a982ca36da5ee6fbd1cd9a19.tar.gz milla-7b6605142343a622a982ca36da5ee6fbd1cd9a19.zip |
updated the readme, added example config file
Diffstat (limited to '')
-rw-r--r-- | README.md | 220 |
1 files changed, 188 insertions, 32 deletions
@@ -1,7 +1,7 @@ # milla -Milla is an IRC bot that sends things over to an LLM when you ask it questions, prints the answer with syntax-hilighting.<br/> -Currently Supported Models: +Milla is an IRC bot that sends things over to an LLM when you ask it questions and prints the answer with optional syntax-hilighting.<br/> +Currently Supported: - Ollama - Openai @@ -9,38 +9,185 @@ Currently Supported Models: ![milla](./milla.png) -### Config - -config: - -```toml -ircServer = "irc.terminaldweller.com" -ircPort = 6697 -ircNick = "mybot" -ircSaslUser = "mybot" -ircSaslPass = "mypass" -ircChannels = ["#mychannel1", "#mychannel2"] -ollamaEndpoint = "" -temp = 0.2 -ollamaSystem = "" -requestTimeout = 10 -millaReconnectDelay = 60 -enableSasl = true -model = "llama2-uncensored" -chromaStyle = "rose-pine-moon" -chromaFormatter = "terminal256" -provider = "ollama" # ollama, chatgpt, gemini -apikey = "key" -topP = 0.9 -topK = 20 +milla accepts one cli arg which tells it where to look for the config file:<br/> + +```$ milla -help +Usage of ./milla: + -config string + path to the config file (default "./config.toml") +``` + +## Config + +An exhaustive example is in `config-example.toml`. + +#### ircServer + +The address for the IRC server to connect to. + +#### ircNick + +The nick the bot should use. + +#### enableSasl + +Whether to use SASL for authentication. + +#### ircSaslUser + +The SASL username. + +#### ircSaslPass + +The SASL password for SASL plain authentication. + +#### ollamaEndpoint + +The address for the Ollama chat endpoint. + +#### model + +The name of the model to use. + +#### chromaStyle + +The style to use for syntax highlighting done by [chroma](https://github.com/alecthomas/chroma). This is basically what's called a "theme". + +#### chromaFormatter + +The formatter to use. This tells chroma how to generate the color in the output. The supported options are: + +- `noop` for no syntax highlighting +- `terminal` for 8-color terminals +- `terminal8` for 8-color terminals +- `terminal16` for 16-color terminals +- `terminal256` for 256-color terminals +- `terminal16m` for treucolor terminals +- `html` for HTML output + +#### provider + +Which LLM provider to use. The supported options are: + +- [ollama](https://github.com/ollama/ollama) +- chatgpt +- gemini + +#### apikey + +The apikey to use for the LLM provider. + +#### ollamaSystem + +The system message to use for ollama. + +#### clientCertPath + +The path to the client certificate to use for SASL external authentication. + +#### serverPass + +The password to use for the IRC server the bot is trying to connect to if the server has a password. + +#### bind + +Which address to bind to for the IRC server. + +#### temp + +The temperature to config the model with. + +#### requestTimeout + +The timeout for requests made to the LLM provider. + +#### millaReconnectDelay + +How much to wait before reconnecting to the IRC server. + +#### ircPort + +Which port to connect to for the IRC server. + +#### keepAlive + +#### memoryLimit + +How many conversations to keep in memory for a model. + +#### pingDelay + +Ping delay for the IRC server. + +#### pingTimeout + +Ping timeout for the IRC server. + +#### topP + +#### topK + +#### skipTLSVerify + +Skip verifying the IRC server's TLS certificate. This only makes sense if you are trying to connect to an IRC server with a self-signed certificate. + +#### useTLS + +Whether to use TLS to connect to the IRC server. This option is provided to support usage on overlay networks such as Tor, i2p and [yggdrassil](https://github.com/yggdrasil-network/yggdrasil-go). + +#### disableSTSFallback + +#### allowFlood + +Disable [girc](https://github.com/lrstanley/girc)'s built-in flood protection. + +#### debug + +Whether to enable debug logging. The logs are written to stdout. + +#### out + +Whether to write raw messages to stdout. + +#### admins + +List of adimns for the bot. Only admins can use commands. + +``` +admins = ["admin1", "admin2"] ``` -### Deploy +#### ircChannels + +List of channels for the bot to join when it connects to the server. + +``` +ircChannels = ["#channel1", "#channel2"] +``` + +## Commands + +#### help + +Prints the help message. + +#### get -You can use the provided compose file:<br/> +Get the value of a config option. Use the same name as the config file but capitalized. + +#### getall + +Get the value of all config options. + +#### set + +Set a config option on the fly. Use the same name as the config file but capitalized. + +## Deploy + +An example docker compose file is provided in the repo under `docker-compose.yaml`. ```yaml -version: "3.9" services: milla: image: milla @@ -50,6 +197,7 @@ services: resources: limits: memory: 64M + user: ${UID}:${GID} logging: driver: "json-file" options: @@ -60,13 +208,21 @@ services: command: ["--config", "/opt/milla/config.toml"] volumes: - ./config.toml:/opt/milla/config.toml + - /etc/ssl/certs:/etc/ssl/certs:ro cap_drop: - ALL - dns: - - 9.9.9.9 environment: - SERVER_DEPLOYMENT_TYPE=deployment - entrypoint: ["/milla/milla"] networks: millanet: ``` + +## Thanks + +- [girc](https://github.com/lrstanley/girc) +- [chroma](https://github.com/alecthomas/chroma) +- [ollama](https://github.com/ollama/ollama) + +## Similar Projects + +- [soulshack](https://github.com/pkdindustries/soulshack) |