feat(core): add Groq/OpenAI-compatible LlmClient

New jarvis-core::llm module providing a blocking client for
OpenAI-compatible chat completions endpoints (Groq by default).

- LlmClient::new / from_env (GROQ_TOKEN, GROQ_BASE_URL, GROQ_MODEL)
- complete(messages, max_tokens) -> String
- thiserror-based LlmError / ConfigError
- gated behind a new llm feature, included in default jarvis_app

Not yet wired into the wake-word/intent loop; that lands in v0.3.
This commit is contained in:
Bossiara13 2026-04-22 19:36:14 +03:00
parent d6792fc038
commit 02f5829aaa
3 changed files with 195 additions and 2 deletions

View file

@ -41,6 +41,7 @@ tokio = { version = "1", features = ["sync"], optional = true }
mlua = { workspace = true, optional = true }
reqwest = { workspace = true, optional = true }
thiserror = { workspace = true, optional = true }
tempfile.workspace = true
fastembed = { workspace = true, optional = true }
@ -56,9 +57,10 @@ winrt-notification = { workspace = true, optional = true }
default = ["jarvis_app"]
jarvis_app = [
"vosk", "intent-classifier", "fastembed", "tokio", "nnnoiseless", "tokio-tungstenite", "futures-util",
"lua",
"lua", "llm",
"ort", "ndarray", "tokenizers", "regex",]
intent = ["intent-classifier", "tokio"]
lua = ["mlua", "reqwest", "winrt-notification"]
lua_only = ["lua", "tokio"]
lua_only = ["lua", "tokio"]
llm = ["reqwest", "thiserror"]