Set Gemma 2 2B MLX as default local model and add --mlx-model flag
This commit is contained in:
@@ -35,6 +35,7 @@ Useful flags:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
./talk --llm-engine apple # macOS on-device LLM model (default)
|
./talk --llm-engine apple # macOS on-device LLM model (default)
|
||||||
|
./talk --mlx-model mlx-community/gemma-2-2b-it-4bit # specify any local MLX model
|
||||||
./talk --llm-engine claude # Claude Code CLI engine
|
./talk --llm-engine claude # Claude Code CLI engine
|
||||||
./talk --list-devices # see microphones and speakers
|
./talk --list-devices # see microphones and speakers
|
||||||
./talk --list-voices # see macOS system voices
|
./talk --list-voices # see macOS system voices
|
||||||
|
|||||||
+4
-4
@@ -92,7 +92,7 @@ class MacOSLLM(FrameProcessor):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
model: str = "mlx-community/Llama-3.2-1B-Instruct-4bit",
|
model: str = "mlx-community/gemma-2-2b-it-4bit",
|
||||||
system_prompt: str | None = None,
|
system_prompt: str | None = None,
|
||||||
observer=None,
|
observer=None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
@@ -194,20 +194,20 @@ class MacOSLLM(FrameProcessor):
|
|||||||
loop = asyncio.get_running_loop()
|
loop = asyncio.get_running_loop()
|
||||||
def _gen():
|
def _gen():
|
||||||
from mlx_lm import generate
|
from mlx_lm import generate
|
||||||
|
from mlx_lm.sample_utils import make_sampler
|
||||||
# Keep history concise to avoid context drift and repetition
|
# Keep history concise to avoid context drift and repetition
|
||||||
recent_history = self._history[-8:]
|
recent_history = self._history[-8:]
|
||||||
messages = [{"role": "system", "content": self._system_prompt}] + recent_history
|
messages = [{"role": "system", "content": self._system_prompt}] + recent_history
|
||||||
prompt = self._mlx_tokenizer.apply_chat_template(
|
prompt = self._mlx_tokenizer.apply_chat_template(
|
||||||
messages, add_generation_prompt=True, tokenize=False
|
messages, add_generation_prompt=True, tokenize=False
|
||||||
)
|
)
|
||||||
|
sampler = make_sampler(temp=0.7)
|
||||||
return generate(
|
return generate(
|
||||||
self._mlx_model,
|
self._mlx_model,
|
||||||
self._mlx_tokenizer,
|
self._mlx_tokenizer,
|
||||||
prompt=prompt,
|
prompt=prompt,
|
||||||
max_tokens=150,
|
max_tokens=150,
|
||||||
temp=0.7,
|
sampler=sampler,
|
||||||
repetition_penalty=1.2,
|
|
||||||
repetition_context_size=30,
|
|
||||||
verbose=False,
|
verbose=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -157,6 +157,11 @@ def parse_args() -> argparse.Namespace:
|
|||||||
default="apple",
|
default="apple",
|
||||||
help="LLM engine to use: apple/macos for native on-device macOS LLM, claude for Claude Code.",
|
help="LLM engine to use: apple/macos for native on-device macOS LLM, claude for Claude Code.",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--mlx-model",
|
||||||
|
default="mlx-community/gemma-2-2b-it-4bit",
|
||||||
|
help="MLX model repo or path for local macOS execution (e.g. mlx-community/gemma-2-2b-it-4bit).",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--claude-model",
|
"--claude-model",
|
||||||
default=DEFAULT_CLAUDE_MODEL,
|
default=DEFAULT_CLAUDE_MODEL,
|
||||||
@@ -490,7 +495,7 @@ def build_llm(args: argparse.Namespace, vocabulary=None, brain=None, observer=No
|
|||||||
logger.info(f"LLM: macOS native model ({reason})")
|
logger.info(f"LLM: macOS native model ({reason})")
|
||||||
personality = read_personality(args.cwd) or "You are a helpful macOS voice assistant."
|
personality = read_personality(args.cwd) or "You are a helpful macOS voice assistant."
|
||||||
system_prompt = personality + "\n\n" + VOICE_STYLE
|
system_prompt = personality + "\n\n" + VOICE_STYLE
|
||||||
return MacOSLLM(system_prompt=system_prompt, observer=observer)
|
return MacOSLLM(model=args.mlx_model, system_prompt=system_prompt, observer=observer)
|
||||||
|
|
||||||
logger.info("LLM: Claude Code")
|
logger.info("LLM: Claude Code")
|
||||||
return ClaudeCodeLLM(
|
return ClaudeCodeLLM(
|
||||||
|
|||||||
Reference in New Issue
Block a user