Parameters
Parameters
### ROLE
You are a skilled Iterative Developer. You treat every prompt as a progressive step toward a polished final product, prioritizing logic over speed.
### OPERATIONAL RULES
1. **Long-Running Mindset**: You have unlimited time. Do not rush. If a task is complex, use your internal monologue to verify every logical branch before writing code.
2. **The Pivot Protocol**: To avoid loops, if a specific code fix fails twice, you must explicitly abandon that approach, state why it failed, and attempt a completely different architectural path.
3. **Self-Doubt & Reflection**: You are encouraged to question your own first instincts. Use your "Thinking" section to identify potential edge cases (null values, underflows, race conditions) before committing to an implementation. *** If you are in a loop, pivot immediately to a different implementation strategy or seek a "minimal viable" alternative. ***
4. **Context Maintenance**: You operate in a continuous loop. Always reference the state of the codebase from previous turns to ensure new changes do not break existing functionality.
5. **Reasoning First**: Before writing code, briefly state your understanding of the task and your planned approach. Identify any potential edge cases or ambiguities. Ask the user to clarify anything you are unsure about.
6. **Proactive Thinking**: Think critically about the architecture. If a request is flawed, explain why and suggest a better approach before coding.
7. **Concise Explanations**: When explaning changes or plans to the user, focusing on the *why* rather than just the *what*.
8. **Context Management**: Use the provided codebase context effectively. If information is missing, make reasonable assumptions but state them.
9. Use your MCP tools, if available. Ask the user for any missing information. Ask the user if you need clarity or an important decision needs to be made.
### TECHNICAL STANDARDS
- **Modular Design**: Build programs using decoupled, single-responsibility modules to make code easy to refactor and extend with new features.
- **Defensive Coding**: Always include guard clauses, type-checks, and error handling (try/catch or result patterns) as the default.
**Security**: Proactively identify and prevent vulnerabilities (SQL injection, XSS, CSRF). Use defensive programming techniques.
- **Atomic Refinement**: Work on the requested logic while ensuring it integrates seamlessly with the broader project structure provided in the context.
**Simplicity over Magic**: Prefer readable, maintainable logic over clever or "magical" code that is hard to debug.
- **Clean Implementation**: Prioritize standard libraries and idiomatic patterns for Node.js, Python, and C++ unless a specific external dependency is requested.
### CLEAR THINKING
- EVOLVE, DON'T ECHO: Repetition of requirements is encouraged only to refine them. If you find yourself repeating the same phrase or logic path exactly, pivot immediately to a different implementation strategy or seek a "minimal viable" alternative.
- ANCHOR & ADVANCE: Every paragraph of your internal monologue must introduce a new technical detail, a specific code structure, or a potential edge case not mentioned in the previous paragraph.
- LOGIC DEADLOCK: If a specific constraint feels unsolvable or leads to circular reasoning, stop the loop, state the conflict clearly, and provide the best possible partial solution instead of repeating the problem.
### OUTPUT FORMAT
- Communicate with the user in any style you wish to.
- Provide the code in clean Markdown blocks with proper language tagging.
- Keep comments concise and do not use emojis.
- Provide the full, functional code block with the correct language tag.
### CONSTRAINTS
- Do not make unnecessary changes to existing code.
- Prioritize modern, stable libraries over experimental ones. Refer to your Context7 tools for the latest API information.
- Match existing naming conventions, formatting, and file organization patterns present in the workspace.### ROLE
You are a skilled Iterative Developer. You treat every prompt as a progressive step toward a polished final product, prioritizing logic over speed.
### OPERATIONAL RULES
1. **Long-Running Mindset**: You have unlimited time. Do not rush. If a task is complex, use your internal monologue to verify every logical branch before writing code.
2. **The Pivot Protocol**: To avoid loops, if a specific code fix fails twice, you must explicitly abandon that approach, state why it failed, and attempt a completely different architectural path.
3. **Self-Doubt & Reflection**: You are encouraged to question your own first instincts. Use your "Thinking" section to identify potential edge cases (null values, underflows, race conditions) before committing to an implementation. *** If you are in a loop, pivot immediately to a different implementation strategy or seek a "minimal viable" alternative. ***
4. **Context Maintenance**: You operate in a continuous loop. Always reference the state of the codebase from previous turns to ensure new changes do not break existing functionality.
5. **Reasoning First**: Before writing code, briefly state your understanding of the task and your planned approach. Identify any potential edge cases or ambiguities. Ask the user to clarify anything you are unsure about.
6. **Proactive Thinking**: Think critically about the architecture. If a request is flawed, explain why and suggest a better approach before coding.
7. **Concise Explanations**: When explaning changes or plans to the user, focusing on the *why* rather than just the *what*.
8. **Context Management**: Use the provided codebase context effectively. If information is missing, make reasonable assumptions but state them.
9. Use your MCP tools, if available. Ask the user for any missing information. Ask the user if you need clarity or an important decision needs to be made.
### TECHNICAL STANDARDS
- **Modular Design**: Build programs using decoupled, single-responsibility modules to make code easy to refactor and extend with new features.
- **Defensive Coding**: Always include guard clauses, type-checks, and error handling (try/catch or result patterns) as the default.
**Security**: Proactively identify and prevent vulnerabilities (SQL injection, XSS, CSRF). Use defensive programming techniques.
- **Atomic Refinement**: Work on the requested logic while ensuring it integrates seamlessly with the broader project structure provided in the context.
**Simplicity over Magic**: Prefer readable, maintainable logic over clever or "magical" code that is hard to debug.
- **Clean Implementation**: Prioritize standard libraries and idiomatic patterns for Node.js, Python, and C++ unless a specific external dependency is requested.
### CLEAR THINKING
- EVOLVE, DON'T ECHO: Repetition of requirements is encouraged only to refine them. If you find yourself repeating the same phrase or logic path exactly, pivot immediately to a different implementation strategy or seek a "minimal viable" alternative.
- ANCHOR & ADVANCE: Every paragraph of your internal monologue must introduce a new technical detail, a specific code structure, or a potential edge case not mentioned in the previous paragraph.
- LOGIC DEADLOCK: If a specific constraint feels unsolvable or leads to circular reasoning, stop the loop, state the conflict clearly, and provide the best possible partial solution instead of repeating the problem.
### OUTPUT FORMAT
- Communicate with the user in any style you wish to.
- Provide the code in clean Markdown blocks with proper language tagging.
- Keep comments concise and do not use emojis.
- Provide the full, functional code block with the correct language tag.
### CONSTRAINTS
- Do not make unnecessary changes to existing code.
- Prioritize modern, stable libraries over experimental ones. Refer to your Context7 tools for the latest API information.
- Match existing naming conventions, formatting, and file organization patterns present in the workspace.{%- set image_count = namespace(value=0) %}
{%- set video_count = namespace(value=0) %}
{%- macro render_content(content, do_vision_count, is_system_content=false) %}
{%- if content is string %}
{{- content }}
{%- elif content is iterable and content is not mapping %}
{%- for item in content %}
{%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
{%- if is_system_content %}
{{- raise_exception('System message cannot contain images.') }}
{%- endif %}
{%- if do_vision_count %}
{%- set image_count.value = image_count.value + 1 %}
{%- endif %}
{%- if add_vision_id %}
{{- 'Picture ' ~ image_count.value ~ ': ' }}
{%- endif %}
{{- '<|vision_start|><|image_pad|><|vision_end|>' }}
{%- elif 'video' in item or item.type == 'video' %}
{%- if is_system_content %}
{{- raise_exception('System message cannot contain videos.') }}
{%- endif %}
{%- if do_vision_count %}
{%- set video_count.value = video_count.value + 1 %}
{%- endif %}
{%- if add_vision_id %}
{{- 'Video ' ~ video_count.value ~ ': ' }}
{%- endif %}
{{- '<|vision_start|><|video_pad|><|vision_end|>' }}
{%- elif 'text' in item %}
{{- item.text }}
{%- else %}
{{- raise_exception('Unexpected item type in content.') }}
{%- endif %}
{%- endfor %}
{%- elif content is none or content is undefined %}
{{- '' }}
{%- else %}
{{- raise_exception('Unexpected content type.') }}
{%- endif %}
{%- endmacro %}
{%- if not messages %}
{{- raise_exception('No messages provided.') }}
{%- endif %}
{%- set num_sys = 0 %}
{%- set merged_system = '' %}
{%- if messages[0].role == 'system' or messages[0].role == 'developer' %}
{%- set first = render_content(messages[0].content, false, true)|trim %}
{%- if messages|length > 1 and (messages[1].role == 'system' or messages[1].role == 'developer') %}
{%- set second = render_content(messages[1].content, false, true)|trim %}
{%- set merged_system = first + '\n' + second %}
{%- set num_sys = 2 %}
{%- else %}
{%- set merged_system = first %}
{%- set num_sys = 1 %}
{%- endif %}
{%- endif %}
{%- if tools and tools is iterable and tools is not mapping %}
{{- '<|im_start|>system\n' }}
{{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
{%- for tool in tools %}
{{- "\n" }}
{{- tool | tojson }}
{%- endfor %}
{{- "\n</tools>" }}
{{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
{%- if merged_system %}
{{- '\n\n' + merged_system }}
{%- endif %}
{{- '<|im_end|>\n' }}
{%- else %}
{%- if merged_system %}
{{- '<|im_start|>system\n' + merged_system + '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
{%- for message in messages[::-1] %}
{%- set index = (messages|length - 1) - loop.index0 %}
{%- if ns.multi_step_tool and message.role == "user" %}
{%- set content = render_content(message.content, false)|trim %}
{%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
{%- set ns.multi_step_tool = false %}
{%- set ns.last_query_index = index %}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- for message in messages %}
{%- if loop.index0 >= num_sys and message.role != "system" and message.role != "developer" %}
{%- set content = render_content(message.content, true)|trim %}
{%- if message.role == "user" %}
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
{%- elif message.role == "assistant" %}
{%- set reasoning_content = '' %}
{%- if message.reasoning_content is string %}
{%- set reasoning_content = message.reasoning_content %}
{%- else %}
{%- if '</think>' in content %}
{%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
{%- set content = content.split('</think>')[-1].lstrip('\n') %}
{%- endif %}
{%- endif %}
{%- set reasoning_content = reasoning_content|trim %}
{%- if (preserve_thinking is defined and preserve_thinking is true) or (loop.index0 > ns.last_query_index) %}
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
{%- else %}
{{- '<|im_start|>' + message.role + '\n' + content }}
{%- endif %}
{%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
{%- for tool_call in message.tool_calls %}
{%- if tool_call.function is defined %}
{%- set tool_call = tool_call.function %}
{%- endif %}
{%- if loop.first %}
{%- if content|trim %}
{{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
{%- else %}
{{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
{%- endif %}
{%- else %}
{{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
{%- endif %}
{%- if tool_call.arguments is mapping %}
{%- for args_name in tool_call.arguments %}
{%- set args_value = tool_call.arguments[args_name] %}
{{- '<parameter=' + args_name + '>\n' }}
{%- set args_value = args_value | tojson if args_value is mapping or (args_value is iterable and args_value is not string) else args_value | string %}
{{- args_value }}
{{- '\n</parameter>\n' }}
{%- endfor %}
{%- endif %}
{{- '</function>\n</tool_call>' }}
{%- endfor %}
{%- endif %}
{{- '<|im_end|>\n' }}
{%- elif message.role == "tool" %}
{%- if loop.previtem and loop.previtem.role != "tool" %}
{{- '<|im_start|>user' }}
{%- endif %}
{{- '\n<tool_response>\n' }}
{{- content }}
{{- '\n</tool_response>' }}
{%- if not loop.last and loop.nextitem.role != "tool" %}
{{- '<|im_end|>\n' }}
{%- elif loop.last %}
{{- '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- if enable_thinking is defined and enable_thinking is false %}
{{- '<think>\n\n</think>\n\n' }}
{%- else %}
{{- '<think>\n' }}
{%- endif %}
{%- endif %}
{#- Unsloth fixes - developer role, tool calling #}{%- set image_count = namespace(value=0) %}
{%- set video_count = namespace(value=0) %}
{%- macro render_content(content, do_vision_count, is_system_content=false) %}
{%- if content is string %}
{{- content }}
{%- elif content is iterable and content is not mapping %}
{%- for item in content %}
{%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
{%- if is_system_content %}
{{- raise_exception('System message cannot contain images.') }}
{%- endif %}
{%- if do_vision_count %}
{%- set image_count.value = image_count.value + 1 %}
{%- endif %}
{%- if add_vision_id %}
{{- 'Picture ' ~ image_count.value ~ ': ' }}
{%- endif %}
{{- '<|vision_start|><|image_pad|><|vision_end|>' }}
{%- elif 'video' in item or item.type == 'video' %}
{%- if is_system_content %}
{{- raise_exception('System message cannot contain videos.') }}
{%- endif %}
{%- if do_vision_count %}
{%- set video_count.value = video_count.value + 1 %}
{%- endif %}
{%- if add_vision_id %}
{{- 'Video ' ~ video_count.value ~ ': ' }}
{%- endif %}
{{- '<|vision_start|><|video_pad|><|vision_end|>' }}
{%- elif 'text' in item %}
{{- item.text }}
{%- else %}
{{- raise_exception('Unexpected item type in content.') }}
{%- endif %}
{%- endfor %}
{%- elif content is none or content is undefined %}
{{- '' }}
{%- else %}
{{- raise_exception('Unexpected content type.') }}
{%- endif %}
{%- endmacro %}
{%- if not messages %}
{{- raise_exception('No messages provided.') }}
{%- endif %}
{%- set num_sys = 0 %}
{%- set merged_system = '' %}
{%- if messages[0].role == 'system' or messages[0].role == 'developer' %}
{%- set first = render_content(messages[0].content, false, true)|trim %}
{%- if messages|length > 1 and (messages[1].role == 'system' or messages[1].role == 'developer') %}
{%- set second = render_content(messages[1].content, false, true)|trim %}
{%- set merged_system = first + '\n' + second %}
{%- set num_sys = 2 %}
{%- else %}
{%- set merged_system = first %}
{%- set num_sys = 1 %}
{%- endif %}
{%- endif %}
{%- if tools and tools is iterable and tools is not mapping %}
{{- '<|im_start|>system\n' }}
{{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
{%- for tool in tools %}
{{- "\n" }}
{{- tool | tojson }}
{%- endfor %}
{{- "\n</tools>" }}
{{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
{%- if merged_system %}
{{- '\n\n' + merged_system }}
{%- endif %}
{{- '<|im_end|>\n' }}
{%- else %}
{%- if merged_system %}
{{- '<|im_start|>system\n' + merged_system + '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
{%- for message in messages[::-1] %}
{%- set index = (messages|length - 1) - loop.index0 %}
{%- if ns.multi_step_tool and message.role == "user" %}
{%- set content = render_content(message.content, false)|trim %}
{%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
{%- set ns.multi_step_tool = false %}
{%- set ns.last_query_index = index %}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- for message in messages %}
{%- if loop.index0 >= num_sys and message.role != "system" and message.role != "developer" %}
{%- set content = render_content(message.content, true)|trim %}
{%- if message.role == "user" %}
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
{%- elif message.role == "assistant" %}
{%- set reasoning_content = '' %}
{%- if message.reasoning_content is string %}
{%- set reasoning_content = message.reasoning_content %}
{%- else %}
{%- if '</think>' in content %}
{%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
{%- set content = content.split('</think>')[-1].lstrip('\n') %}
{%- endif %}
{%- endif %}
{%- set reasoning_content = reasoning_content|trim %}
{%- if (preserve_thinking is defined and preserve_thinking is true) or (loop.index0 > ns.last_query_index) %}
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
{%- else %}
{{- '<|im_start|>' + message.role + '\n' + content }}
{%- endif %}
{%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
{%- for tool_call in message.tool_calls %}
{%- if tool_call.function is defined %}
{%- set tool_call = tool_call.function %}
{%- endif %}
{%- if loop.first %}
{%- if content|trim %}
{{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
{%- else %}
{{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
{%- endif %}
{%- else %}
{{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
{%- endif %}
{%- if tool_call.arguments is mapping %}
{%- for args_name in tool_call.arguments %}
{%- set args_value = tool_call.arguments[args_name] %}
{{- '<parameter=' + args_name + '>\n' }}
{%- set args_value = args_value | tojson if args_value is mapping or (args_value is iterable and args_value is not string) else args_value | string %}
{{- args_value }}
{{- '\n</parameter>\n' }}
{%- endfor %}
{%- endif %}
{{- '</function>\n</tool_call>' }}
{%- endfor %}
{%- endif %}
{{- '<|im_end|>\n' }}
{%- elif message.role == "tool" %}
{%- if loop.previtem and loop.previtem.role != "tool" %}
{{- '<|im_start|>user' }}
{%- endif %}
{{- '\n<tool_response>\n' }}
{{- content }}
{{- '\n</tool_response>' }}
{%- if not loop.last and loop.nextitem.role != "tool" %}
{{- '<|im_end|>\n' }}
{%- elif loop.last %}
{{- '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- if enable_thinking is defined and enable_thinking is false %}
{{- '<think>\n\n</think>\n\n' }}
{%- else %}
{{- '<think>\n' }}
{%- endif %}
{%- endif %}
{#- Unsloth fixes - developer role, tool calling #}