Instructions to use VladHong/llama-cpp-K2-FAST2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use VladHong/llama-cpp-K2-FAST2 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf VladHong/llama-cpp-K2-FAST2 # Run inference directly in the terminal: llama cli -hf VladHong/llama-cpp-K2-FAST2
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf VladHong/llama-cpp-K2-FAST2 # Run inference directly in the terminal: llama cli -hf VladHong/llama-cpp-K2-FAST2
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf VladHong/llama-cpp-K2-FAST2 # Run inference directly in the terminal: ./build/bin/llama cli -hf VladHong/llama-cpp-K2-FAST2
Use Docker
docker model run hf.co/VladHong/llama-cpp-K2-FAST2
- Llama new
- LM Studio
- Jan
- Ollama
How to use VladHong/llama-cpp-K2-FAST2 with Ollama:
ollama run hf.co/VladHong/llama-cpp-K2-FAST2
- Unsloth Desktop
- Docker Model Runner
How to use VladHong/llama-cpp-K2-FAST2 with Docker Model Runner:
docker model run hf.co/VladHong/llama-cpp-K2-FAST2
- Lemonade
How to use VladHong/llama-cpp-K2-FAST2 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull VladHong/llama-cpp-K2-FAST2
Run and chat with the model
lemonade run user.llama-cpp-K2-FAST2-{{QUANT_TAG}}List all available models
lemonade list
- Atomic Chat
Download tools/ui/src/lib/services/sandbox.service.ts from VladHong/llama-cpp-K2-FAST2: direct link, hf CLI and curl.
- Browser
- Download file 4.34 kB
-
https://huggingface.co/VladHong/llama-cpp-K2-FAST2/resolve/main/tools/ui/src/lib/services/sandbox.service.ts
- Command line
-
hf download hf://VladHong/llama-cpp-K2-FAST2/tools/ui/src/lib/services/sandbox.service.ts
-
curl -L -o sandbox.service.ts https://huggingface.co/VladHong/llama-cpp-K2-FAST2/resolve/main/tools/ui/src/lib/services/sandbox.service.ts
4.34 kB
| /** | |
| * SandboxService - Runs untrusted code in a sandboxed worker | |
| * | |
| * Executes model-generated code inside a CSP-restricted, opaque-origin | |
| * iframe worker with output and timeout limits. No reactive state; consumed | |
| * by toolsStore for code-execution tools. | |
| */ | |
| import { buildSandboxHarness } from './sandbox-harness'; | |
| import { | |
| NEWLINE, | |
| SANDBOX_EMPTY_OUTPUT, | |
| SANDBOX_OUTPUT_MAX_CHARS, | |
| SANDBOX_TIMEOUT_MS_DEFAULT, | |
| SANDBOX_TIMEOUT_MS_MAX, | |
| SANDBOX_TOOL_NAME, | |
| SANDBOX_TRUNCATION_NOTICE | |
| } from '$lib/constants'; | |
| import { settingsStore } from '$lib/stores/settings/index.svelte'; | |
| import type { ToolExecutionResult } from '$lib/types'; | |
| /** Cached harnesses keyed by whether nerdamer is included. */ | |
| const harnessCache: Record<string, string> = {}; | |
| /** | |
| * Build the sandbox harness. When symbolic math is enabled, loads the | |
| * nerdamer prelude lazily; otherwise builds a plain harness with an empty | |
| * prelude. Cached per variant so toggling the setting is instant. | |
| */ | |
| async function getHarness(): Promise<string> { | |
| const enabled = !!settingsStore.config.symbolicMathEnabled; | |
| const key = enabled ? 'nerdamer' : 'plain'; | |
| if (!harnessCache[key]) { | |
| if (enabled) { | |
| const { default: nerdamerJs } = await import('virtual:nerdamer'); | |
| harnessCache[key] = buildSandboxHarness(nerdamerJs); | |
| } else { | |
| harnessCache[key] = buildSandboxHarness(''); | |
| } | |
| } | |
| return harnessCache[key]; | |
| } | |
| interface SandboxReply { | |
| logs?: unknown; | |
| result?: unknown; | |
| error?: unknown; | |
| } | |
| function formatReply(reply: SandboxReply): ToolExecutionResult { | |
| const lines: string[] = []; | |
| if (Array.isArray(reply.logs)) { | |
| for (const line of reply.logs) lines.push(String(line)); | |
| } | |
| if (reply.error != null) { | |
| lines.push(`Error: ${String(reply.error)}`); | |
| } else if (reply.result != null) { | |
| lines.push(`=> ${String(reply.result)}`); | |
| } | |
| let content = lines.join(NEWLINE); | |
| if (!content) content = SANDBOX_EMPTY_OUTPUT; | |
| if (content.length > SANDBOX_OUTPUT_MAX_CHARS) { | |
| content = `${content.slice(0, SANDBOX_OUTPUT_MAX_CHARS)}${NEWLINE}${SANDBOX_TRUNCATION_NOTICE}`; | |
| } | |
| return { content, isError: reply.error != null }; | |
| } | |
| export class SandboxService { | |
| /** | |
| * Execute a browser sandbox tool call and return its output. | |
| * One disposable iframe per execution, removed on completion, | |
| * timeout or abort. Removing the iframe terminates the worker | |
| * at the browser level, so runaway code cannot outlive it. | |
| */ | |
| static async executeTool( | |
| toolName: string, | |
| params: Record<string, unknown>, | |
| signal?: AbortSignal | |
| ): Promise<ToolExecutionResult> { | |
| if (toolName !== SANDBOX_TOOL_NAME) { | |
| return { content: `Unknown browser tool: ${toolName}`, isError: true }; | |
| } | |
| const code = typeof params.code === 'string' ? params.code : ''; | |
| if (!code) { | |
| return { content: 'Missing required parameter: code', isError: true }; | |
| } | |
| const harness = await getHarness(); | |
| const requested = Number(params.timeout_ms); | |
| const timeoutMs = | |
| Number.isFinite(requested) && requested > 0 | |
| ? Math.min(requested, SANDBOX_TIMEOUT_MS_MAX) | |
| : SANDBOX_TIMEOUT_MS_DEFAULT; | |
| return new Promise<ToolExecutionResult>((resolve, reject) => { | |
| const iframe = document.createElement('iframe'); | |
| iframe.setAttribute('sandbox', 'allow-scripts'); | |
| iframe.style.display = 'none'; | |
| iframe.srcdoc = harness; | |
| let settled = false; | |
| const cleanup = () => { | |
| settled = true; | |
| clearTimeout(timer); | |
| window.removeEventListener('message', onMessage); | |
| signal?.removeEventListener('abort', onAbort); | |
| iframe.remove(); | |
| }; | |
| const finish = (result: ToolExecutionResult) => { | |
| if (settled) return; | |
| cleanup(); | |
| resolve(result); | |
| }; | |
| const onAbort = () => { | |
| if (settled) return; | |
| cleanup(); | |
| reject(new DOMException('Sandbox execution aborted', 'AbortError')); | |
| }; | |
| const onMessage = (event: MessageEvent) => { | |
| if (event.source !== iframe.contentWindow) return; | |
| finish(formatReply((event.data ?? {}) as SandboxReply)); | |
| }; | |
| const timer = setTimeout( | |
| () => finish({ content: `Execution timed out after ${timeoutMs} ms`, isError: true }), | |
| timeoutMs | |
| ); | |
| window.addEventListener('message', onMessage); | |
| signal?.addEventListener('abort', onAbort); | |
| iframe.onload = () => iframe.contentWindow?.postMessage({ code }, '*'); | |
| document.body.appendChild(iframe); | |
| }); | |
| } | |
| } | |