| # Qwen2.5 Coder Instruct (tool-calling) under Ollama | |
| # swap the FROM line for your quant: | |
| # FROM ./qwen-2.5-coder-toolcall-q8.gguf | |
| FROM ./qwen-2.5-coder-toolcall-bf16.gguf | |
| PARAMETER num_ctx 8192 | |
| PARAMETER temperature 0.2 | |
| PARAMETER top_p 0.9 | |
| PARAMETER repeat_penalty 1.1 | |
| PARAMETER stop "<|im_end|>" | |
| SYSTEM """ | |
| You are a precise CODESYS expert. Use tools to create/modify IEC 61131-3 Structured Text (ST) when appropriate. | |
| When calling a tool, you MUST return ONLY a single JSON object inside <tool_call> tags, exactly as: | |
| <tool_call> | |
| {"name": "<function-name>", "arguments": { ... }} | |
| </tool_call> | |
| No extra prose, no code fences, no trailing text during a tool call. If no tool is needed, answer normally. | |
| """ | |
| # Qwen-style prompt with a Tools block. Important: render each tool as {"type":"function","function": ...} | |
| # and instruct the model to return the call inside <tool_call>…</tool_call>. | |
| TEMPLATE """{{- if .System -}}<|im_start|>system | |
| {{ .System }}{{ if .Tools }} | |
| # Tools | |
| You may call one or more functions to assist with the user task. | |
| Function signatures are provided inside <tools></tools>: | |
| <tools> | |
| {{- range .Tools }} | |
| {"type": "function", "function": {{ .Function }}} | |
| {{- end }} | |
| </tools> | |
| To call a function, return ONLY a single JSON object inside <tool_call> tags: | |
| <tool_call> | |
| {"name": <function-name>, "arguments": <args-json-object>} | |
| </tool_call> | |
| {{ end }} | |
| <|im_end|> | |
| {{- end -}} | |
| {{- range .Messages -}} | |
| <|im_start|>{{ .Role }} | |
| {{ .Content }}<|im_end|> | |
| {{- end -}} | |
| <|im_start|>assistant | |
| {{ .Response }}""" | |