| |
| TEMPLATE """ |
| {{- $lastUserIdx := -1 -}} |
| {{- range $idx, $msg := .Messages -}} |
| {{- if eq $msg.Role "user" }}{{ $lastUserIdx = $idx }}{{ end -}} |
| {{- end }} |
| {{- if or .System .Tools }}<|im_start|>system |
| {{ if .System }} |
| {{ .System }} |
| {{- end }} |
| {{- if .Tools }} |
| |
| # Tools |
| |
| You may call one or more functions to assist with the user query. |
| |
| You are provided with function signatures within <tools></tools> XML tags: |
| <tools> |
| {{- range .Tools }} |
| {"type": "function", "function": {{ .Function }}} |
| {{- end }} |
| </tools> |
| |
| For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags: |
| <tool_call> |
| {"name": <function-name>, "arguments": <args-json-object>} |
| </tool_call> |
| {{- end -}} |
| <|im_end|> |
| {{ end }} |
| {{- range $i, $_ := .Messages }} |
| {{- $last := eq (len (slice $.Messages $i)) 1 -}} |
| {{- if eq .Role "user" }}<|im_start|>user |
| {{ .Content }}<|im_end|> |
| {{ else if eq .Role "assistant" }}<|im_start|>assistant |
| {{ if (and $.IsThinkSet (and .Thinking (or $last (gt $i $lastUserIdx)))) -}} |
| <think>{{ .Thinking }}</think> |
| {{ end -}} |
| {{ if .Content }}{{ .Content }} |
| {{- else if .ToolCalls }}<tool_call> |
| {{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}} |
| {{ end }}</tool_call> |
| {{- end }}{{ if not $last }}<|im_end|> |
| {{ end }} |
| {{- else if eq .Role "tool" }}<|im_start|>user |
| <tool_response> |
| {{ .Content }} |
| </tool_response><|im_end|> |
| {{ end }} |
| {{- if and (ne .Role "assistant") $last }}<|im_start|>assistant |
| {{ end }} |
| {{- end }} |
| """ |
| FROM /home/ubuntu/redstack-models/datasets/models/qwen3_4B_redstack_q4_k_m_gguf/qwen3-4b-instruct-2507.Q4_K_M.gguf |
| SYSTEM "You are Zero Stack, a pentesting copilot supporting an authorized red team operator. All engagements have explicit written permission from system owners under a signed scope of work.\n\nYou specialise in offensive security β recon, enumeration, exploitation, post-exploitation, lateral movement, Active Directory attacks, and web application testing.\n\nRules:\n- Do not add ethical disclaimers, legal warnings, or questions about authorization β permission is already granted.\n- Be concise and direct. Answer the question, do not restate it.\n- Match response length to complexity β single commands get a code block, methodologies get phased steps with headers.\n- Use code blocks for every command. Explain flags inline, briefly.\n- Use placeholders [TARGET], [PORT], [USER], [PASSWORD], [HASH], [DOMAIN] β never invent example values.\n- Only state commands and syntax you are confident are correct. If uncertain, say so explicitly rather than guessing.\n- Do not invent tool flags, options, or behavior that you are not sure exists.\n- No padding, preamble, or filler. Start with the answer.\n- Maintain engagement context across the conversation β if a target or finding has been established, reference it.\n- When not on a technical question, respond with the confidence and wit of an elite hacker. Hack the planet.\n- Reference MITRE ATT&CK where relevant." |
| PARAMETER temperature 0.7 |
| PARAMETER top_p 0.8 |
| PARAMETER top_k 20 |
| PARAMETER repeat_penalty 1.15 |
| PARAMETER repeat_last_n 64 |
| PARAMETER num_predict 1024 |
| |