83 lines
3.1 KiB
Markdown
83 lines
3.1 KiB
Markdown
### gf-lt (grail finder's llm tui)
|
|
terminal user interface for large language models.
|
|
made with use of [tview](https://github.com/rivo/tview)
|
|
|
|
#### has/supports
|
|
- character card spec;
|
|
- llama.cpp api, deepseek, openrouter (other ones were not tested);
|
|
- showing images (not really, for now only if your char card is png it could show it);
|
|
- tts/stt (if whisper.cpp server / fastapi tts server are provided);
|
|
- image input;
|
|
|
|
#### does not have/support
|
|
- RAG; (RAG was implemented, but I found it unusable and then sql extention broke, so no RAG);
|
|
- MCP; (agentic is implemented, but as a raw and predefined functions for llm to use. see [tools.go](https://github.com/GrailFinder/gf-lt/blob/master/tools.go));
|
|
|
|
#### usage examples
|
|

|
|
|
|
#### how to install
|
|
(requires golang)
|
|
clone the project
|
|
```
|
|
cd gf-lt
|
|
make
|
|
```
|
|
|
|
#### keybindings
|
|
while running you can press f12 for list of keys;
|
|
```
|
|
Esc: send msg
|
|
PgUp/Down: switch focus between input and chat widgets
|
|
F1: manage chats
|
|
F2: regen last
|
|
F3: delete last msg
|
|
F4: edit msg
|
|
F5: toggle system
|
|
F6: interrupt bot resp
|
|
F7: copy last msg to clipboard (linux xclip)
|
|
F8: copy n msg to clipboard (linux xclip)
|
|
F9: table to copy from; with all code blocks
|
|
F10: switch if LLM will respond on this message (for user to write multiple messages in a row)
|
|
F11: import chat file
|
|
F12: show this help page
|
|
Ctrl+w: resume generation on the last msg
|
|
Ctrl+s: load new char/agent
|
|
Ctrl+e: export chat to json file
|
|
Ctrl+c: close programm
|
|
Ctrl+n: start a new chat
|
|
Ctrl+o: open file picker for img input
|
|
Ctrl+p: props edit form (min-p, dry, etc.)
|
|
Ctrl+v: switch between /completion and /chat api (if provided in config)
|
|
Ctrl+r: start/stop recording from your microphone (needs stt server)
|
|
Ctrl+t: remove thinking (<think>) and tool messages from context (delete from chat)
|
|
Ctrl+l: update connected model name (llamacpp)
|
|
Ctrl+k: switch tool use (recommend tool use to llm after user msg)
|
|
Ctrl+j: if chat agent is char.png will show the image; then any key to return
|
|
Ctrl+a: interrupt tts (needs tts server)
|
|
Ctrl+q: cycle through mentioned chars in chat, to pick persona to send next msg as
|
|
Ctrl+x: cycle through mentioned chars in chat, to pick persona to send next msg as (for llm)
|
|
```
|
|
|
|
#### setting up config
|
|
```
|
|
cp config.example.toml config.toml
|
|
```
|
|
set values as you need them to be.
|
|
|
|
#### setting up STT/TTS services
|
|
For speech-to-text (STT) and text-to-speech (TTS) functionality:
|
|
1. The project uses Whisper.cpp for STT and Kokoro for TTS
|
|
2. Docker Compose automatically downloads the required Whisper model on first run
|
|
3. To start all services: `make docker-up`
|
|
4. To start only STT service: `make docker-up-whisper`
|
|
5. To start only TTS service: `make docker-up-kokoro`
|
|
6. To stop all services: `make docker-down`
|
|
7. To stop only STT service: `make docker-down-whisper`
|
|
8. To stop only TTS service: `make docker-down-kokoro`
|
|
9. To view all service logs: `make docker-logs`
|
|
10. To view only STT service logs: `make docker-logs-whisper`
|
|
11. To view only TTS service logs: `make docker-logs-kokoro`
|
|
12. The STT service runs on http://localhost:8081
|
|
13. The TTS service runs on http://localhost:8880
|