192 lines
7.2 KiB
Markdown
192 lines
7.2 KiB
Markdown
# Using marvy-1-14B
|
||
|
||
marvy-1-14B is a ServiceNow delivery specialist. This guide covers every common
|
||
way to run it — cloud or fully local — plus how to wire it into OpenCode.
|
||
|
||
- [Choosing a format](#choosing-a-format)
|
||
- [Recommended system prompt & settings](#recommended-system-prompt--settings)
|
||
- [Transformers (PyTorch)](#transformers-pytorch)
|
||
- [vLLM (OpenAI-compatible server)](#vllm-openai-compatible-server)
|
||
- [MLX (Apple Silicon, native)](#mlx-apple-silicon-native)
|
||
- [LM Studio (GUI + local server)](#lm-studio-gui--local-server)
|
||
- [Ollama / llama.cpp (GGUF)](#ollama--llamacpp-gguf)
|
||
- [LoRA adapter (apply on the base)](#lora-adapter-apply-on-the-base)
|
||
- [Use marvy-1-14B in OpenCode](#use-marvy-14b-in-opencode)
|
||
- [Prompt recipes per task](#prompt-recipes-per-task)
|
||
|
||
---
|
||
|
||
## Choosing a format
|
||
|
||
| You want… | Use | Repo |
|
||
|---|---|---|
|
||
| Max quality, GPU/server | Merged FP16 | `MainStack/marvy-1-14B` |
|
||
| Apple Silicon, native speed | Merged (MLX) | `MainStack/marvy-1-14B` |
|
||
| Laptop / CPU / Ollama / LM Studio | GGUF (Q4_K_M or Q8_0) | `MainStack/marvy-1-14B-GGUF` |
|
||
| Smallest download, compose yourself | LoRA adapter (~175 MB) | `MainStack/marvy-1-14B-lora` |
|
||
|
||
---
|
||
|
||
## Recommended system prompt & settings
|
||
|
||
Always lead with the delivery-consultant system prompt — marvy was trained with it:
|
||
|
||
```
|
||
You are a senior ServiceNow delivery consultant. You produce precise, implementation-grade
|
||
artifacts: business analyses, requirements, solution design documents, user stories with
|
||
acceptance criteria, test cases, and validation reviews. You favor out-of-the-box
|
||
capabilities, cite concrete tables/plugins/sys_ids when relevant, and write in clear
|
||
professional English.
|
||
```
|
||
|
||
| Use case | temperature | top_p | max_tokens |
|
||
|---|---|---|---|
|
||
| Structured artifacts (SDD, stories, test cases) | 0.3 – 0.5 | 0.9 | 1024 – 4096 |
|
||
| Exploratory brainstorming | 0.7 – 0.9 | 0.95 | 1024 |
|
||
| Validation / critique | 0.2 – 0.4 | 0.9 | 1024 – 2048 |
|
||
|
||
---
|
||
|
||
## Transformers (PyTorch)
|
||
|
||
```python
|
||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||
|
||
model_id = "MainStack/marvy-1-14B"
|
||
tok = AutoTokenizer.from_pretrained(model_id)
|
||
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto")
|
||
|
||
SYSTEM = "You are a senior ServiceNow delivery consultant. ..." # full prompt above
|
||
messages = [
|
||
{"role": "system", "content": SYSTEM},
|
||
{"role": "user", "content": "Write a user story with acceptance criteria for P1 SLA escalation."},
|
||
]
|
||
inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
|
||
out = model.generate(inputs, max_new_tokens=1024, temperature=0.4, top_p=0.9)
|
||
print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))
|
||
```
|
||
|
||
## vLLM (OpenAI-compatible server)
|
||
|
||
```bash
|
||
pip install vllm
|
||
vllm serve MainStack/marvy-1-14B --served-model-name marvy-1-14B
|
||
```
|
||
|
||
```bash
|
||
curl -s http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
|
||
"model": "marvy-1-14B", "temperature": 0.4,
|
||
"messages": [
|
||
{"role":"system","content":"You are a senior ServiceNow delivery consultant. ..."},
|
||
{"role":"user","content":"Draft the Incident Management section of an SDD."}
|
||
]}'
|
||
```
|
||
|
||
## MLX (Apple Silicon, native)
|
||
|
||
```bash
|
||
pip install mlx-lm
|
||
|
||
# one-off
|
||
python -m mlx_lm generate --model MainStack/marvy-1-14B \
|
||
--system-prompt "You are a senior ServiceNow delivery consultant. ..." \
|
||
--prompt "Write test cases for a Major Incident workflow." --max-tokens 1024 --temp 0.4
|
||
|
||
# OpenAI-compatible server
|
||
python -m mlx_lm server --model MainStack/marvy-1-14B --port 8080
|
||
```
|
||
|
||
## LM Studio (GUI + local server)
|
||
|
||
1. **Install the model** — either search `MainStack/marvy-1-14B-GGUF` in the
|
||
in-app model browser, or place a local copy under
|
||
`~/.lmstudio/models/MainStack/marvy-1-14B/` (MLX or GGUF layout).
|
||
2. **Load** it from the GUI, or:
|
||
```bash
|
||
lms load MainStack/marvy-1-14B
|
||
lms server start # OpenAI-compatible on http://localhost:1234/v1
|
||
```
|
||
3. In the Chat tab, set the system prompt (above) and temperature ~0.4.
|
||
|
||
## Ollama / llama.cpp (GGUF)
|
||
|
||
```bash
|
||
# Ollama — pull straight from the Hub
|
||
ollama run hf.co/MainStack/marvy-1-14B-GGUF:Q4_K_M
|
||
|
||
# llama.cpp
|
||
llama-cli -hf MainStack/marvy-1-14B-GGUF:Q4_K_M \
|
||
-p "Write a user story with acceptance criteria for P1 SLA escalation." --temp 0.4
|
||
```
|
||
|
||
| Quant | Size | Use when |
|
||
|---|---|---|
|
||
| `Q4_K_M` | ~9 GB | Default — best size/quality balance |
|
||
| `Q8_0` | ~16 GB | Highest fidelity, near-FP16 |
|
||
|
||
## LoRA adapter (apply on the base)
|
||
|
||
```bash
|
||
# MLX
|
||
python -m mlx_lm generate --model Qwen/Qwen2.5-14B-Instruct \
|
||
--adapter-path . --system-prompt "You are a senior ServiceNow delivery consultant. ..." \
|
||
--prompt "Validate this requirement and list follow-up questions: ..." --max-tokens 1024
|
||
```
|
||
|
||
```python
|
||
# PEFT
|
||
from peft import PeftModel
|
||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
base = "Qwen/Qwen2.5-14B-Instruct"
|
||
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype="auto", device_map="auto")
|
||
model = PeftModel.from_pretrained(model, "MainStack/marvy-1-14B-lora")
|
||
```
|
||
|
||
---
|
||
|
||
## Use marvy-1-14B in OpenCode
|
||
|
||
marvy runs behind any OpenAI-compatible endpoint (LM Studio, mlx_lm server,
|
||
vLLM). Register it as a custom provider in `opencode.json`.
|
||
|
||
1. **Start a local server** (LM Studio shown; adjust port for others):
|
||
```bash
|
||
lms load MainStack/marvy-1-14B && lms server start # http://localhost:1234/v1
|
||
```
|
||
2. **Add the provider** to your project `opencode.json` (or global
|
||
`~/.config/opencode/opencode.json`):
|
||
```jsonc
|
||
{
|
||
"provider": {
|
||
"lmstudio": {
|
||
"npm": "@ai-sdk/openai-compatible",
|
||
"name": "LM Studio (local)",
|
||
"options": { "baseURL": "http://localhost:1234/v1" },
|
||
"models": {
|
||
"marvy-1-14B": { "name": "marvy-1-14B (ServiceNow delivery)" }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
3. **Select** `lmstudio/marvy-1-14B` in the OpenCode model picker.
|
||
|
||
> marvy-1-14B is a drafting specialist, not a tool-use/agentic fine-tune. It excels
|
||
> at producing delivery artifacts inside chat; for MCP tool-calling agent loops,
|
||
> keep a frontier model as the orchestrator and switch to marvy for drafting.
|
||
|
||
---
|
||
|
||
## Prompt recipes per task
|
||
|
||
| Task | Prompt skeleton |
|
||
|---|---|
|
||
| Business analysis | "Produce a Business Analysis for the following engagement: <context>. Cover organization, IT landscape, scope, and risks." |
|
||
| Requirements | "Extract structured requirements (id, category, requirement, priority, target_phase, success_metric) from: <notes>." |
|
||
| Stakeholders | "Build a stakeholder register (role, name, interest, influence, RACI) for: <context>." |
|
||
| SDD section | "Write the <section> section of a Solution Design Document for a ServiceNow <module> implementation. Include design decisions and concrete tables/plugins." |
|
||
| User story | "Write a ServiceNow user story with acceptance criteria for: <capability>." |
|
||
| Implementation plan | "Given this story, describe the implementation: tables, plugins, configuration, records touched, manual follow-ups. Story: <story>." |
|
||
| Test case | "Write a test case (pre-conditions, steps, expected results, pass/fail) for the story: <story>." |
|
||
| Validation | "Validate this artifact against ServiceNow best practice and the SOW. List gaps, risks, and follow-up questions. Artifact: <artifact>." |
|